top: address the missing 'guest' tics for summary area
Well this is embarrassing. After repeatedly flogging a
horse (represented by issue #274) I was certain it was
dead. But, it turns out that the darn thing yet lived.
In fact, the bug that was patched was not even the one
the poster experienced. Now merge request #173 finally
penetrated my foggy brain and explicated the real bug.
Since forever (linux 2.6), top has ignored those guest
and guest_nice fields in /proc/stat. When many virtual
machines were running that overhead went unrecognized.
So, this commit simply adds those tics to the 'system'
figures so that it can be seen in text or graph modes.
Reference(s):
https://gitlab.com/procps-ng/procps/-/merge_requests/173
https://gitlab.com/procps-ng/procps/-/issues/274
. Mar 2023, avoid keystroke '%Cpu' distortions
commit 7e33fc47c6
Signed-off-by: Jim Warner <james.warner@comcast.net>
This commit is contained in:
parent
411eaa1aa7
commit
bb7e161d5a
@ -527,6 +527,9 @@ Depending on your kernel version, the \fBst\fR field may not be shown.
|
|||||||
\fBst\fR : time stolen from this vm by the hypervisor
|
\fBst\fR : time stolen from this vm by the hypervisor
|
||||||
.fi
|
.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
|
Beyond the first tasks/threads line, there are alternate \*(PU display
|
||||||
modes available via the 4-way `t' \*(CT.
|
modes available via the 4-way `t' \*(CT.
|
||||||
They show an abbreviated summary consisting of these elements:
|
They show an abbreviated summary consisting of these elements:
|
||||||
@ -537,8 +540,8 @@ They show an abbreviated summary consisting of these elements:
|
|||||||
.fi
|
.fi
|
||||||
|
|
||||||
Where: a) is the `user' (us + ni) percentage; b) is the `system'
|
Where: a) is the `user' (us + ni) percentage; b) is the `system'
|
||||||
(sy + hi + si) percentage; c) is the total percentage; and d) is
|
(sy + hi + si + guests) percentage; c) is the total percentage;
|
||||||
one of two visual graphs of those representations.
|
and d) is one of two visual graphs of those representations.
|
||||||
Such graphs also reflect separate `user' and `system' portions.
|
Such graphs also reflect separate `user' and `system' portions.
|
||||||
|
|
||||||
If the `4' \*(CT is used to yield more than two cpus per line,
|
If the `4' \*(CT is used to yield more than two cpus per line,
|
||||||
|
@ -286,6 +286,7 @@ static enum stat_item Stat_items[] = {
|
|||||||
STAT_TIC_DELTA_NICE, STAT_TIC_DELTA_IDLE,
|
STAT_TIC_DELTA_NICE, STAT_TIC_DELTA_IDLE,
|
||||||
STAT_TIC_DELTA_IOWAIT, STAT_TIC_DELTA_IRQ,
|
STAT_TIC_DELTA_IOWAIT, STAT_TIC_DELTA_IRQ,
|
||||||
STAT_TIC_DELTA_SOFTIRQ, STAT_TIC_DELTA_STOLEN,
|
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,
|
STAT_TIC_SUM_DELTA_USER, STAT_TIC_SUM_DELTA_SYSTEM,
|
||||||
#ifdef CORE_TYPE_NO
|
#ifdef CORE_TYPE_NO
|
||||||
STAT_TIC_SUM_DELTA_TOTAL };
|
STAT_TIC_SUM_DELTA_TOTAL };
|
||||||
@ -298,6 +299,7 @@ enum Rel_statitems {
|
|||||||
stat_NI, stat_IL,
|
stat_NI, stat_IL,
|
||||||
stat_IO, stat_IR,
|
stat_IO, stat_IR,
|
||||||
stat_SI, stat_ST,
|
stat_SI, stat_ST,
|
||||||
|
stat_GU, stat_GN,
|
||||||
stat_SUM_USR, stat_SUM_SYS,
|
stat_SUM_USR, stat_SUM_SYS,
|
||||||
#ifdef CORE_TYPE_NO
|
#ifdef CORE_TYPE_NO
|
||||||
stat_SUM_TOT };
|
stat_SUM_TOT };
|
||||||
@ -6340,6 +6342,11 @@ static int sum_tics (struct stat_stack *this, const char *pfx, int nobuf) {
|
|||||||
if (1 > tot_frme) idl_frme = tot_frme = 1;
|
if (1 > tot_frme) idl_frme = tot_frme = 1;
|
||||||
scale = 100.0 / (float)tot_frme;
|
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
|
/* display some kinda' cpu state percentages
|
||||||
(who or what is explained by the passed prefix) */
|
(who or what is explained by the passed prefix) */
|
||||||
if (Curwin->rc.graph_cpus) {
|
if (Curwin->rc.graph_cpus) {
|
||||||
|
Loading…
Reference in New Issue
Block a user