summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Göttsche <cgzones@googlemail.com>2020-10-30 17:02:20 +0100
committerBenBE <BenBE@geshi.org>2020-11-16 18:14:06 +0100
commit15eab2012d2100e1ddd20c186db23a8172b5858d (patch)
treeabb5c7cbe6c3c097ba05a1c7c4504f12910d342a
parenta8a723ffe919cc3e8e3ef7ad6c07adb0ee0f715b (diff)
Add process column for normalized CPU usage
Shows the process CPU usage divided by the number of CPU cores
-rw-r--r--Process.c18
-rw-r--r--Process.h1
-rw-r--r--dragonflybsd/DragonFlyBSDProcess.c1
-rw-r--r--freebsd/FreeBSDProcess.c1
-rw-r--r--linux/LinuxProcess.c1
-rw-r--r--openbsd/OpenBSDProcess.c6
-rw-r--r--solaris/SolarisProcess.c1
7 files changed, 23 insertions, 6 deletions
diff --git a/Process.c b/Process.c
index 28cc0307..b24e3a2f 100644
--- a/Process.c
+++ b/Process.c
@@ -257,13 +257,18 @@ void Process_writeField(const Process* this, RichString* str, ProcessField field
bool coloring = this->settings->highlightMegabytes;
switch (field) {
- case PERCENT_CPU: {
- if (this->percent_cpu > 999.9) {
- xSnprintf(buffer, n, "%4u ", (unsigned int)this->percent_cpu);
- } else if (this->percent_cpu > 99.9) {
- xSnprintf(buffer, n, "%3u. ", (unsigned int)this->percent_cpu);
+ case PERCENT_CPU:
+ case PERCENT_NORM_CPU: {
+ float cpuPercentage = this->percent_cpu;
+ if (field == PERCENT_NORM_CPU) {
+ cpuPercentage /= this->processList->cpuCount;
+ }
+ if (cpuPercentage > 999.9) {
+ xSnprintf(buffer, n, "%4u ", (unsigned int)cpuPercentage);
+ } else if (cpuPercentage > 99.9) {
+ xSnprintf(buffer, n, "%3u. ", (unsigned int)cpuPercentage);
} else {
- xSnprintf(buffer, n, "%4.1f ", this->percent_cpu);
+ xSnprintf(buffer, n, "%4.1f ", cpuPercentage);
}
break;
}
@@ -492,6 +497,7 @@ long Process_compare(const void* v1, const void* v2) {
switch (settings->sortKey) {
case PERCENT_CPU:
+ case PERCENT_NORM_CPU:
return SPACESHIP_NUMBER(p2->percent_cpu, p1->percent_cpu);
case PERCENT_MEM:
return SPACESHIP_NUMBER(p2->m_resident, p1->m_resident);
diff --git a/Process.h b/Process.h
index c75ee501..631eba74 100644
--- a/Process.h
+++ b/Process.h
@@ -48,6 +48,7 @@ typedef enum ProcessFields {
TIME = 50,
NLWP = 51,
TGID = 52,
+ PERCENT_NORM_CPU = 53,
} ProcessField;
typedef struct ProcessPidColumn_ {
diff --git a/dragonflybsd/DragonFlyBSDProcess.c b/dragonflybsd/DragonFlyBSDProcess.c
index 55e4fbac..4130e799 100644
--- a/dragonflybsd/DragonFlyBSDProcess.c
+++ b/dragonflybsd/DragonFlyBSDProcess.c
@@ -48,6 +48,7 @@ ProcessFieldData Process_fields[] = {
[M_RESIDENT] = { .name = "M_RESIDENT", .title = " RES ", .description = "Resident set size, size of the text and data sections, plus stack usage", .flags = 0, },
[ST_UID] = { .name = "ST_UID", .title = " UID ", .description = "User ID of the process owner", .flags = 0, },
[PERCENT_CPU] = { .name = "PERCENT_CPU", .title = "CPU% ", .description = "Percentage of the CPU time the process used in the last sampling", .flags = 0, },
+ [PERCENT_NORM_CPU] = { .name = "PERCENT_NORM_CPU", .title = "NCPU%", .description = "Normalized percentage of the CPU time the process used in the last sampling (normalized by cpu count)", .flags = 0, },
[PERCENT_MEM] = { .name = "PERCENT_MEM", .title = "MEM% ", .description = "Percentage of the memory the process is using, based on resident memory size", .flags = 0, },
[USER] = { .name = "USER", .title = "USER ", .description = "Username of the process owner (or user ID if name cannot be determined)", .flags = 0, },
[TIME] = { .name = "TIME", .title = " TIME+ ", .description = "Total time the process has spent in user and system time", .flags = 0, },
diff --git a/freebsd/FreeBSDProcess.c b/freebsd/FreeBSDProcess.c
index 695594e8..57e64118 100644
--- a/freebsd/FreeBSDProcess.c
+++ b/freebsd/FreeBSDProcess.c
@@ -40,6 +40,7 @@ ProcessFieldData Process_fields[] = {
[M_RESIDENT] = { .name = "M_RESIDENT", .title = " RES ", .description = "Resident set size, size of the text and data sections, plus stack usage", .flags = 0, },
[ST_UID] = { .name = "ST_UID", .title = " UID ", .description = "User ID of the process owner", .flags = 0, },
[PERCENT_CPU] = { .name = "PERCENT_CPU", .title = "CPU% ", .description = "Percentage of the CPU time the process used in the last sampling", .flags = 0, },
+ [PERCENT_NORM_CPU] = { .name = "PERCENT_NORM_CPU", .title = "NCPU%", .description = "Normalized percentage of the CPU time the process used in the last sampling (normalized by cpu count)", .flags = 0, },
[PERCENT_MEM] = { .name = "PERCENT_MEM", .title = "MEM% ", .description = "Percentage of the memory the process is using, based on resident memory size", .flags = 0, },
[USER] = { .name = "USER", .title = "USER ", .description = "Username of the process owner (or user ID if name cannot be determined)", .flags = 0, },
[TIME] = { .name = "TIME", .title = " TIME+ ", .description = "Total time the process has spent in user and system time", .flags = 0, },
diff --git a/linux/LinuxProcess.c b/linux/LinuxProcess.c
index 2fec52f1..5868ea29 100644
--- a/linux/LinuxProcess.c
+++ b/linux/LinuxProcess.c
@@ -73,6 +73,7 @@ ProcessFieldData Process_fields[] = {
[M_DT] = { .name = "M_DT", .title = " DIRTY ", .description = "Size of the dirty pages of the process (unused since Linux 2.6; always 0)", .flags = 0, },
[ST_UID] = { .name = "ST_UID", .title = " UID ", .description = "User ID of the process owner", .flags = 0, },
[PERCENT_CPU] = { .name = "PERCENT_CPU", .title = "CPU% ", .description = "Percentage of the CPU time the process used in the last sampling", .flags = 0, },
+ [PERCENT_NORM_CPU] = { .name = "PERCENT_NORM_CPU", .title = "NCPU%", .description = "Normalized percentage of the CPU time the process used in the last sampling (normalized by cpu count)", .flags = 0, },
[PERCENT_MEM] = { .name = "PERCENT_MEM", .title = "MEM% ", .description = "Percentage of the memory the process is using, based on resident memory size", .flags = 0, },
[USER] = { .name = "USER", .title = "USER ", .description = "Username of the process owner (or user ID if name cannot be determined)", .flags = 0, },
[TIME] = { .name = "TIME", .title = " TIME+ ", .description = "Total time the process has spent in user and system time", .flags = 0, },
diff --git a/openbsd/OpenBSDProcess.c b/openbsd/OpenBSDProcess.c
index 1013d3b4..de823ce4 100644
--- a/openbsd/OpenBSDProcess.c
+++ b/openbsd/OpenBSDProcess.c
@@ -142,6 +142,12 @@ ProcessFieldData Process_fields[] = {
.description = "Percentage of the CPU time the process used in the last sampling",
.flags = 0,
},
+ [PERCENT_NORM_CPU] = {
+ .name = "PERCENT_NORM_CPU",
+ .title = "NCPU%",
+ .description = "Normalized percentage of the CPU time the process used in the last sampling (normalized by cpu count)",
+ .flags = 0,
+ },
[PERCENT_MEM] = {
.name = "PERCENT_MEM",
.title = "MEM% ",
diff --git a/solaris/SolarisProcess.c b/solaris/SolarisProcess.c
index 7d833fe9..c11c6de8 100644
--- a/solaris/SolarisProcess.c
+++ b/solaris/SolarisProcess.c
@@ -48,6 +48,7 @@ ProcessFieldData Process_fields[] = {
[M_RESIDENT] = { .name = "M_RESIDENT", .title = " RES ", .description = "Resident set size, size of the text and data sections, plus stack usage", .flags = 0, },
[ST_UID] = { .name = "ST_UID", .title = " UID ", .description = "User ID of the process owner", .flags = 0, },
[PERCENT_CPU] = { .name = "PERCENT_CPU", .title = "CPU% ", .description = "Percentage of the CPU time the process used in the last sampling", .flags = 0, },
+ [PERCENT_NORM_CPU] = { .name = "PERCENT_NORM_CPU", .title = "NCPU%", .description = "Normalized percentage of the CPU time the process used in the last sampling (normalized by cpu count)", .flags = 0, },
[PERCENT_MEM] = { .name = "PERCENT_MEM", .title = "MEM% ", .description = "Percentage of the memory the process is using, based on resident memory size", .flags = 0, },
[USER] = { .name = "USER", .title = "USER ", .description = "Username of the process owner (or user ID if name cannot be determined)", .flags = 0, },
[TIME] = { .name = "TIME", .title = " TIME+ ", .description = "Total time the process has spent in user and system time", .flags = 0, },

© 2014-2024 Faster IT GmbH | imprint | privacy policy