Commit e0209da8 authored by Hisham Muhammad's avatar Hisham Muhammad
Browse files

Support pagefaults stats. Closes #45.

parent 4e2c2d79
...@@ -10,6 +10,7 @@ What's new in version 1.0.3 ...@@ -10,6 +10,7 @@ What's new in version 1.0.3
of IO data depending on selected fields. of IO data depending on selected fields.
* Better consistency in coloring. * Better consistency in coloring.
* Increase limit of buffer when tracing a deep nested process tree. * 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. * BUGFIX: Fix crash when adding meters and toggling detailed CPU time.
(thanks to Dawid Gajownik) (thanks to Dawid Gajownik)
* Add column to track the OOM-killer score of processes * Add column to track the OOM-killer score of processes
......
...@@ -168,11 +168,11 @@ typedef struct Process_ { ...@@ -168,11 +168,11 @@ typedef struct Process_ {
int basenameOffset; int basenameOffset;
bool updated; bool updated;
#ifdef DEBUG
unsigned long int minflt; unsigned long int minflt;
unsigned long int cminflt; unsigned long int cminflt;
unsigned long int majflt; unsigned long int majflt;
unsigned long int cmajflt; unsigned long int cmajflt;
#ifdef DEBUG
long int itrealvalue; long int itrealvalue;
unsigned long int vsize; unsigned long int vsize;
long int rss; long int rss;
...@@ -254,7 +254,7 @@ const int Process_fieldFlags[] = { ...@@ -254,7 +254,7 @@ const int Process_fieldFlags[] = {
const char *Process_fieldTitles[] = { const char *Process_fieldTitles[] = {
"", " PID ", "Command ", "S ", " PPID ", " PGRP ", " SESN ", "", " PID ", "Command ", "S ", " PPID ", " PGRP ", " SESN ",
" TTY ", " TPGID ", "- ", "- ", "- ", "- ", "- ", " TTY ", " TPGID ", "- ", " MINFLT ", " CMINFLT ", " MAJFLT ", " CMAJFLT ",
" UTIME+ ", " STIME+ ", " CUTIME+ ", " CSTIME+ ", "PRI ", " NI ", "- ", " UTIME+ ", " STIME+ ", " CUTIME+ ", " CSTIME+ ", "PRI ", " NI ", "- ",
"START ", "- ", "- ", "- ", "- ", "- ", "- ", "START ", "- ", "- ", "- ", "- ", "- ", "- ",
"- ", "- ", "- ", "- ", "- ", "- ", "- ", "- ", "- ", "- ", "- ", "- ", "- ", "- ",
...@@ -483,6 +483,10 @@ static void Process_writeField(Process* this, RichString* str, ProcessField fiel ...@@ -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 TTY_NR: snprintf(buffer, n, "%5u ", this->tty_nr); break;
case TGID: snprintf(buffer, n, Process_pidFormat, this->tgid); break; case TGID: snprintf(buffer, n, Process_pidFormat, this->tgid); break;
case TPGID: snprintf(buffer, n, Process_tpgidFormat, this->tpgid); 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 PROCESSOR: snprintf(buffer, n, "%3d ", ProcessList_cpuId(this->pl, this->processor)); break;
case NLWP: snprintf(buffer, n, "%4ld ", this->nlwp); break; case NLWP: snprintf(buffer, n, "%4ld ", this->nlwp); break;
case COMM: { case COMM: {
......
...@@ -147,11 +147,11 @@ typedef struct Process_ { ...@@ -147,11 +147,11 @@ typedef struct Process_ {
int basenameOffset; int basenameOffset;
bool updated; bool updated;
#ifdef DEBUG
unsigned long int minflt; unsigned long int minflt;
unsigned long int cminflt; unsigned long int cminflt;
unsigned long int majflt; unsigned long int majflt;
unsigned long int cmajflt; unsigned long int cmajflt;
#ifdef DEBUG
long int itrealvalue; long int itrealvalue;
unsigned long int vsize; unsigned long int vsize;
long int rss; long int rss;
......
...@@ -444,10 +444,14 @@ static bool ProcessList_readStatFile(Process *process, const char* dirname, cons ...@@ -444,10 +444,14 @@ static bool ProcessList_readStatFile(Process *process, const char* dirname, cons
location += 1; location += 1;
process->flags = strtoul(location, &location, 10); process->flags = strtoul(location, &location, 10);
location += 1; location += 1;
location = strchr(location, ' ')+1; process->minflt = strtoull(location, &location, 10);
location = strchr(location, ' ')+1; location += 1;
location = strchr(location, ' ')+1; process->cminflt = strtoull(location, &location, 10);
location = strchr(location, ' ')+1; location += 1;
process->majflt = strtoull(location, &location, 10);
location += 1;
process->cmajflt = strtoull(location, &location, 10);
location += 1;
process->utime = strtoull(location, &location, 10); process->utime = strtoull(location, &location, 10);
location += 1; location += 1;
process->stime = strtoull(location, &location, 10); process->stime = strtoull(location, &location, 10);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment