diff options
author | Hisham Muhammad <hisham@gobolinux.org> | 2014-04-24 19:40:47 -0300 |
---|---|---|
committer | Hisham Muhammad <hisham@gobolinux.org> | 2014-04-24 19:40:47 -0300 |
commit | e0209da88faf3b390d71ff174065abd407abfdfd (patch) | |
tree | 8525c6da1e7f8b4469f27758bbc31631226d15e2 | |
parent | 4e2c2d79271bfecffcbe3166dde2d2fa04bdc746 (diff) |
Support pagefaults stats. Closes #45.
-rw-r--r-- | ChangeLog | 1 | ||||
-rw-r--r-- | Process.c | 8 | ||||
-rw-r--r-- | Process.h | 2 | ||||
-rw-r--r-- | ProcessList.c | 12 |
4 files changed, 16 insertions, 7 deletions
@@ -10,6 +10,7 @@ What's new in version 1.0.3 of IO data depending on selected fields. * Better consistency in coloring. * Increase limit of buffer when tracing a deep nested process tree. +* Display pagefault stats. * BUGFIX: Fix crash when adding meters and toggling detailed CPU time. (thanks to Dawid Gajownik) * Add column to track the OOM-killer score of processes @@ -168,11 +168,11 @@ typedef struct Process_ { int basenameOffset; bool updated; - #ifdef DEBUG unsigned long int minflt; unsigned long int cminflt; unsigned long int majflt; unsigned long int cmajflt; + #ifdef DEBUG long int itrealvalue; unsigned long int vsize; long int rss; @@ -254,7 +254,7 @@ const int Process_fieldFlags[] = { const char *Process_fieldTitles[] = { "", " PID ", "Command ", "S ", " PPID ", " PGRP ", " SESN ", - " TTY ", " TPGID ", "- ", "- ", "- ", "- ", "- ", + " TTY ", " TPGID ", "- ", " MINFLT ", " CMINFLT ", " MAJFLT ", " CMAJFLT ", " UTIME+ ", " STIME+ ", " CUTIME+ ", " CSTIME+ ", "PRI ", " NI ", "- ", "START ", "- ", "- ", "- ", "- ", "- ", "- ", "- ", "- ", "- ", "- ", "- ", "- ", "- ", @@ -483,6 +483,10 @@ static void Process_writeField(Process* this, RichString* str, ProcessField fiel case TTY_NR: snprintf(buffer, n, "%5u ", this->tty_nr); break; case TGID: snprintf(buffer, n, Process_pidFormat, this->tgid); break; case TPGID: snprintf(buffer, n, Process_tpgidFormat, this->tpgid); break; + case MINFLT: Process_colorNumber(str, this->minflt, coloring); return; + case CMINFLT: Process_colorNumber(str, this->cminflt, coloring); return; + case MAJFLT: Process_colorNumber(str, this->majflt, coloring); return; + case CMAJFLT: Process_colorNumber(str, this->cmajflt, coloring); return; case PROCESSOR: snprintf(buffer, n, "%3d ", ProcessList_cpuId(this->pl, this->processor)); break; case NLWP: snprintf(buffer, n, "%4ld ", this->nlwp); break; case COMM: { @@ -147,11 +147,11 @@ typedef struct Process_ { int basenameOffset; bool updated; - #ifdef DEBUG unsigned long int minflt; unsigned long int cminflt; unsigned long int majflt; unsigned long int cmajflt; + #ifdef DEBUG long int itrealvalue; unsigned long int vsize; long int rss; diff --git a/ProcessList.c b/ProcessList.c index 908d88fc..d3621155 100644 --- a/ProcessList.c +++ b/ProcessList.c @@ -444,10 +444,14 @@ static bool ProcessList_readStatFile(Process *process, const char* dirname, cons location += 1; process->flags = strtoul(location, &location, 10); location += 1; - location = strchr(location, ' ')+1; - location = strchr(location, ' ')+1; - location = strchr(location, ' ')+1; - location = strchr(location, ' ')+1; + process->minflt = strtoull(location, &location, 10); + location += 1; + process->cminflt = strtoull(location, &location, 10); + location += 1; + process->majflt = strtoull(location, &location, 10); + location += 1; + process->cmajflt = strtoull(location, &location, 10); + location += 1; process->utime = strtoull(location, &location, 10); location += 1; process->stime = strtoull(location, &location, 10); |