!141 [sync] PR-137: top: adapt to guest/total tics change, api
From: @openeuler-sync-bot Reviewed-by: @wangbin224 Signed-off-by: @wangbin224
This commit is contained in:
commit
30d86326fe
@ -0,0 +1,75 @@
|
|||||||
|
From e1df029e6c8bb166a6cec05dc12f699d84631bc9 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jim Warner <james.warner@comcast.net>
|
||||||
|
Date: Sat, 22 Jun 2024 00:00:00 -0500
|
||||||
|
Subject: [PATCH 1/3] library: implement guest/total tics change, <stat> api
|
||||||
|
|
||||||
|
This patch removes guest tics from the total lest they
|
||||||
|
be counted twice. Such tics have already been included
|
||||||
|
in user/nice values. For proof, just follow this path:
|
||||||
|
|
||||||
|
fs/proc/stat.c: show_stat() --->
|
||||||
|
kernel/sched/cputime.c: kcpustat_cpu_fetch()
|
||||||
|
|
||||||
|
Reference(s):
|
||||||
|
https://gitlab.com/procps-ng/procps/-/issues/339
|
||||||
|
|
||||||
|
. Sep, 2020 - where guest distortion occurred
|
||||||
|
commit ec21588be108d092804eb72edbba2ba214bc6190
|
||||||
|
|
||||||
|
Signed-off-by: Jim Warner <james.warner@comcast.net>
|
||||||
|
---
|
||||||
|
library/include/stat.h | 6 +++---
|
||||||
|
library/stat.c | 12 ++++++++----
|
||||||
|
2 files changed, 11 insertions(+), 7 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/library/include/stat.h b/library/include/stat.h
|
||||||
|
index ff7c5b17..d8ca2add 100644
|
||||||
|
--- a/library/include/stat.h
|
||||||
|
+++ b/library/include/stat.h
|
||||||
|
@@ -45,8 +45,8 @@ enum stat_item {
|
||||||
|
STAT_TIC_IRQ, // ull_int "
|
||||||
|
STAT_TIC_SOFTIRQ, // ull_int "
|
||||||
|
STAT_TIC_STOLEN, // ull_int "
|
||||||
|
- STAT_TIC_GUEST, // ull_int "
|
||||||
|
- STAT_TIC_GUEST_NICE, // ull_int "
|
||||||
|
+ STAT_TIC_GUEST, // ull_int " (note: also included in USER)
|
||||||
|
+ STAT_TIC_GUEST_NICE, // ull_int " (note: also included in NICE)
|
||||||
|
|
||||||
|
STAT_TIC_DELTA_USER, // sl_int derived from above
|
||||||
|
STAT_TIC_DELTA_NICE, // sl_int "
|
||||||
|
@@ -63,7 +63,7 @@ enum stat_item {
|
||||||
|
STAT_TIC_SUM_SYSTEM, // ull_int derived from SYSTEM + IRQ + SOFTIRQ tics
|
||||||
|
STAT_TIC_SUM_IDLE, // ull_int derived from IDLE + IOWAIT tics
|
||||||
|
STAT_TIC_SUM_BUSY, // ull_int derived from SUM_TOTAL - SUM_IDLE tics
|
||||||
|
- STAT_TIC_SUM_TOTAL, // ull_int derived from sum of all 10 tics
|
||||||
|
+ STAT_TIC_SUM_TOTAL, // ull_int derived from sum of all tics, minus 2 GUEST tics
|
||||||
|
|
||||||
|
STAT_TIC_SUM_DELTA_USER, // sl_int derived from above
|
||||||
|
STAT_TIC_SUM_DELTA_SYSTEM, // sl_int "
|
||||||
|
diff --git a/library/stat.c b/library/stat.c
|
||||||
|
index 202dfa52..96672431 100644
|
||||||
|
--- a/library/stat.c
|
||||||
|
+++ b/library/stat.c
|
||||||
|
@@ -572,11 +572,15 @@ static inline void stat_derive_unique (
|
||||||
|
this->new.xidl
|
||||||
|
= this->new.idle
|
||||||
|
+ this->new.iowait;
|
||||||
|
+ /* note: we exclude guest tics from xtot since ...
|
||||||
|
+ 'user' already includes 'guest'
|
||||||
|
+ 'nice' already includes 'gnice'
|
||||||
|
+ ( see linux sources: ./kernel/sched/cputime.c, kcpustat_cpu_fetch ) */
|
||||||
|
this->new.xtot
|
||||||
|
- = this->new.xusr + this->new.xsys + this->new.xidl
|
||||||
|
- + this->new.stolen
|
||||||
|
- + this->new.guest
|
||||||
|
- + this->new.gnice;
|
||||||
|
+ = this->new.xusr
|
||||||
|
+ + this->new.xsys
|
||||||
|
+ + this->new.xidl
|
||||||
|
+ + this->new.stolen;
|
||||||
|
this->new.xbsy
|
||||||
|
= this->new.xtot - this->new.xidl;
|
||||||
|
|
||||||
|
--
|
||||||
|
2.33.0
|
||||||
|
|
||||||
@ -0,0 +1,78 @@
|
|||||||
|
From 3fb34669d3a7e1c0c013a907aeae2c4117ba617e Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jim Warner <james.warner@comcast.net>
|
||||||
|
Date: Sat, 22 Jun 2024 00:00:00 -0500
|
||||||
|
Subject: [PATCH 3/3] top: adapt to that guest/total tics change, <stat> api
|
||||||
|
|
||||||
|
Signed-off-by: Jim Warner <james.warner@comcast.net>
|
||||||
|
---
|
||||||
|
man/top.1 | 5 +----
|
||||||
|
src/top/top.c | 9 ---------
|
||||||
|
2 files changed, 1 insertion(+), 13 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/man/top.1 b/man/top.1
|
||||||
|
index 2e4f252d..067c2ef7 100644
|
||||||
|
--- a/man/top.1
|
||||||
|
+++ b/man/top.1
|
||||||
|
@@ -59,7 +59,7 @@ memory statistics and data for other users requires root privileges
|
||||||
|
.
|
||||||
|
.\" Document /////////////////////////////////////////////////////////////
|
||||||
|
.\" ----------------------------------------------------------------------
|
||||||
|
-.TH TOP 1 "August 2023" "procps-ng" "User Commands"
|
||||||
|
+.TH TOP 1 "June 2024" "procps-ng" "User Commands"
|
||||||
|
.\" ----------------------------------------------------------------------
|
||||||
|
.nh
|
||||||
|
|
||||||
|
@@ -542,9 +542,6 @@ Depending on your kernel version, the \fBst\fR field may not be shown.
|
||||||
|
\fBst\fR : time stolen from this vm by the hypervisor
|
||||||
|
.fi
|
||||||
|
|
||||||
|
-The `sy' value above also reflects the time running a virtual \*(Pu
|
||||||
|
-for guest operating systems, including those that have been niced.
|
||||||
|
-
|
||||||
|
Beyond the first tasks/threads line, there are alternate \*(PU display
|
||||||
|
modes available via the 4-way `t' \*(CT.
|
||||||
|
They show an abbreviated summary consisting of these elements:
|
||||||
|
diff --git a/src/top/top.c b/src/top/top.c
|
||||||
|
index 1383a17a..c1a08dc2 100644
|
||||||
|
--- a/src/top/top.c
|
||||||
|
+++ b/src/top/top.c
|
||||||
|
@@ -286,7 +286,6 @@ static enum stat_item Stat_items[] = {
|
||||||
|
STAT_TIC_DELTA_NICE, STAT_TIC_DELTA_IDLE,
|
||||||
|
STAT_TIC_DELTA_IOWAIT, STAT_TIC_DELTA_IRQ,
|
||||||
|
STAT_TIC_DELTA_SOFTIRQ, STAT_TIC_DELTA_STOLEN,
|
||||||
|
- STAT_TIC_DELTA_GUEST, STAT_TIC_DELTA_GUEST_NICE,
|
||||||
|
STAT_TIC_SUM_DELTA_USER, STAT_TIC_SUM_DELTA_SYSTEM,
|
||||||
|
#ifdef CORE_TYPE_NO
|
||||||
|
STAT_TIC_SUM_DELTA_TOTAL };
|
||||||
|
@@ -299,7 +298,6 @@ enum Rel_statitems {
|
||||||
|
stat_NI, stat_IL,
|
||||||
|
stat_IO, stat_IR,
|
||||||
|
stat_SI, stat_ST,
|
||||||
|
- stat_GU, stat_GN,
|
||||||
|
stat_SUM_USR, stat_SUM_SYS,
|
||||||
|
#ifdef CORE_TYPE_NO
|
||||||
|
stat_SUM_TOT };
|
||||||
|
@@ -6410,11 +6408,6 @@ static int sum_tics (struct stat_stack *this, const char *pfx, int nobuf) {
|
||||||
|
if (1 > tot_frme) idl_frme = tot_frme = 1;
|
||||||
|
scale = 100.0 / (float)tot_frme;
|
||||||
|
|
||||||
|
- /* account for VM tics not otherwise provided for ...
|
||||||
|
- ( with xtra-procps-debug.h, can't use PID_VAL w/ assignment ) */
|
||||||
|
- this->head[stat_SY].result.sl_int += rSv(stat_GU) + rSv(stat_GN);
|
||||||
|
- this->head[stat_SUM_SYS].result.sl_int += rSv(stat_GU) + rSv(stat_GN);
|
||||||
|
-
|
||||||
|
/* display some kinda' cpu state percentages
|
||||||
|
(who or what is explained by the passed prefix) */
|
||||||
|
if (Curwin->rc.graph_cpus) {
|
||||||
|
@@ -6464,8 +6457,6 @@ static int sum_unify (struct stat_stack *this, int nobuf) {
|
||||||
|
stack[stat_IR].result.sl_int += rSv(stat_IR, sl_int);
|
||||||
|
stack[stat_SI].result.sl_int += rSv(stat_SI, sl_int);
|
||||||
|
stack[stat_ST].result.sl_int += rSv(stat_ST, sl_int);
|
||||||
|
- stack[stat_GU].result.sl_int += rSv(stat_GU, sl_int);
|
||||||
|
- stack[stat_GN].result.sl_int += rSv(stat_GN, sl_int);
|
||||||
|
stack[stat_SUM_USR].result.sl_int += rSv(stat_SUM_USR, sl_int);
|
||||||
|
stack[stat_SUM_SYS].result.sl_int += rSv(stat_SUM_SYS, sl_int);
|
||||||
|
stack[stat_SUM_TOT].result.sl_int += rSv(stat_SUM_TOT, sl_int);
|
||||||
|
--
|
||||||
|
2.33.0
|
||||||
|
|
||||||
@ -1,6 +1,6 @@
|
|||||||
Name: procps-ng
|
Name: procps-ng
|
||||||
Version: 4.0.4
|
Version: 4.0.4
|
||||||
Release: 5
|
Release: 6
|
||||||
Summary: Utilities that provide system information.
|
Summary: Utilities that provide system information.
|
||||||
License: GPL+ and GPLv2 and GPLv2+ and GPLv3+ and LGPLv2+
|
License: GPL+ and GPLv2 and GPLv2+ and GPLv3+ and LGPLv2+
|
||||||
URL: https://sourceforge.net/projects/procps-ng/
|
URL: https://sourceforge.net/projects/procps-ng/
|
||||||
@ -17,6 +17,8 @@ Patch5: backport-ps-don-t-lose-tasks-when-sort-used-with-forest-mode.patch
|
|||||||
Patch6: backport-acknowledge-fix-for-the-lost-tasks-ps-issue.patch
|
Patch6: backport-acknowledge-fix-for-the-lost-tasks-ps-issue.patch
|
||||||
Patch7: openeuler-uptime-Fix-uptime-return-0-user-when-systemd-pam-is-.patch
|
Patch7: openeuler-uptime-Fix-uptime-return-0-user-when-systemd-pam-is-.patch
|
||||||
Patch8: openeuler-w-Fix-w-print-0-user-when-systemd-pam-is-not-install.patch
|
Patch8: openeuler-w-Fix-w-print-0-user-when-systemd-pam-is-not-install.patch
|
||||||
|
Patch9: backport-library-implement-guest-total-tics-change-stat-api.patch
|
||||||
|
Patch10: backport-top-adapt-to-that-guest-total-tics-change-stat-api.patch
|
||||||
|
|
||||||
BuildRequires: ncurses-devel libtool autoconf automake gcc gettext-devel systemd-devel
|
BuildRequires: ncurses-devel libtool autoconf automake gcc gettext-devel systemd-devel
|
||||||
|
|
||||||
@ -99,6 +101,9 @@ ln -s %{_bindir}/pidof %{buildroot}%{_sbindir}/pidof
|
|||||||
%{_mandir}/man*
|
%{_mandir}/man*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Jun 25 2024 Liu Chao <liuchao173@huawei.com> - 4.0.4-6
|
||||||
|
- top: adapt to guest/total tics change, <stat> api
|
||||||
|
|
||||||
* Thu May 9 2024 Liu Chao <liuchao173@huawei.com> - 4.0.4-5
|
* Thu May 9 2024 Liu Chao <liuchao173@huawei.com> - 4.0.4-5
|
||||||
- uptime/w: fix print 0 user when systemd-pam is not installed
|
- uptime/w: fix print 0 user when systemd-pam is not installed
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user