summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJim Warner <james.warner@comcast.net>2023-03-16 00:00:00 -0500
committerCraig Small <csmall@dropbear.xyz>2023-03-21 22:11:29 +1100
commitbb7e161d5a06f1bbd5a98cf868eab356c6c1bac2 (patch)
tree9b967d7dcbccb75809815e041d750a2b927469f7 /src
parent411eaa1aa7d511aba6fb4df1cdb4335e838efdb5 (diff)
downloadprocps-ng-bb7e161d5a06f1bbd5a98cf868eab356c6c1bac2.tar.gz
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 7e33fc47c642aceea8ad53e86a6797239b91f5f9 Signed-off-by: Jim Warner <james.warner@comcast.net>
Diffstat (limited to 'src')
-rw-r--r--src/top/top.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/top/top.c b/src/top/top.c
index 26a9adb..02ef8f6 100644
--- a/src/top/top.c
+++ b/src/top/top.c
@@ -286,6 +286,7 @@ 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 };
@@ -298,6 +299,7 @@ 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 };
@@ -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;
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) {