From 8a49d1650f8b7c223c921af0bbf6f5204b93402e Mon Sep 17 00:00:00 2001 From: Vito Caputo Date: Sat, 21 Sep 2024 16:24:02 -0700 Subject: libvmon: maintain a flag indicating if a process is threaded Preparatory commit for enabling charts to apply % scaling to non-threaded procesess, to make better use of the row's available space. A non-threaded process can't use more than a single core, so it should be able to scale its %age out to the full row height. The same will be applied to individual thread rows, as those can at most use a single core. The exception is a threaded process - its CPU %ages are aggregate, and must represent up to the number of CPUs in the system within their row. --- src/libvmon/vmon.c | 1 + src/libvmon/vmon.h | 1 + 2 files changed, 2 insertions(+) diff --git a/src/libvmon/vmon.c b/src/libvmon/vmon.c index 2815d2e..baee17d 100644 --- a/src/libvmon/vmon.c +++ b/src/libvmon/vmon.c @@ -1178,6 +1178,7 @@ vmon_proc_t * vmon_proc_monitor(vmon_t *vmon, vmon_proc_t *parent, int pid, vmon if (is_thread) { list_add_tail(&proc->threads, &parent->threads); parent->threads_changed = 1; + parent->is_threaded = 1; } else { list_add_tail(&proc->siblings, &parent->children); parent->children_changed = 1; diff --git a/src/libvmon/vmon.h b/src/libvmon/vmon.h index 6668605..e4b1593 100644 --- a/src/libvmon/vmon.h +++ b/src/libvmon/vmon.h @@ -251,6 +251,7 @@ typedef struct _vmon_proc_t { unsigned is_new:1; /* process is new in the most recent sample, automatically cleared on subsequent sample */ unsigned is_stale:1; /* process became stale in the most recent sample, automatically cleared on subsequent sample (process will be discarded) */ unsigned is_thread:1; /* process is a thread belonging to parent */ + unsigned is_threaded:1; /* gets set when any of my immediate children are/have been threads */ } vmon_proc_t; -- cgit v1.2.3