summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 2b76fed)
raw | patch | inline | side by side (parent: 2b76fed)
author | Sebastian Harl <sh@tokkee.org> | |
Tue, 13 Jan 2009 11:36:01 +0000 (12:36 +0100) | ||
committer | Sebastian Harl <sh@tokkee.org> | |
Tue, 13 Jan 2009 11:43:01 +0000 (12:43 +0100) |
On other operating systems those values will currently always be zero since I
do not have appropriate test systems available.
The new types "ps_stacksize" and "ps_vm" have been added to types.db.
do not have appropriate test systems available.
The new types "ps_stacksize" and "ps_vm" have been added to types.db.
src/processes.c | patch | blob | history | |
src/types.db | patch | blob | history |
diff --git a/src/processes.c b/src/processes.c
index f4ffef8f67ed49a2ddb459e95cce8ad154aa49f9..0d670f5bb3787e9e473ce7367d3bbe1e392c72e0 100644 (file)
--- a/src/processes.c
+++ b/src/processes.c
unsigned long num_proc;
unsigned long num_lwp;
+ unsigned long vmem_size;
unsigned long vmem_rss;
+ unsigned long stack_size;
unsigned long vmem_minflt;
unsigned long vmem_majflt;
unsigned long num_proc;
unsigned long num_lwp;
+ unsigned long vmem_size;
unsigned long vmem_rss;
+ unsigned long stack_size;
unsigned long vmem_minflt_counter;
unsigned long vmem_majflt_counter;
@@ -315,13 +319,17 @@ static void ps_list_add (const char *name, const char *cmdline, procstat_entry_t
}
pse->age = 0;
- pse->num_proc = entry->num_proc;
- pse->num_lwp = entry->num_lwp;
- pse->vmem_rss = entry->vmem_rss;
-
- ps->num_proc += pse->num_proc;
- ps->num_lwp += pse->num_lwp;
- ps->vmem_rss += pse->vmem_rss;
+ pse->num_proc = entry->num_proc;
+ pse->num_lwp = entry->num_lwp;
+ pse->vmem_size = entry->vmem_size;
+ pse->vmem_rss = entry->vmem_rss;
+ pse->stack_size = entry->stack_size;
+
+ ps->num_proc += pse->num_proc;
+ ps->num_lwp += pse->num_lwp;
+ ps->vmem_size += pse->vmem_size;
+ ps->vmem_rss += pse->vmem_rss;
+ ps->stack_size += pse->stack_size;
if ((entry->vmem_minflt_counter == 0)
&& (entry->vmem_majflt_counter == 0))
{
ps->num_proc = 0;
ps->num_lwp = 0;
+ ps->vmem_size = 0;
ps->vmem_rss = 0;
+ ps->stack_size = 0;
pse_prev = NULL;
pse = ps->instances;
sstrncpy (vl.plugin, "processes", sizeof (vl.plugin));
sstrncpy (vl.plugin_instance, ps->name, sizeof (vl.plugin_instance));
+ sstrncpy (vl.type, "ps_vm", sizeof (vl.type));
+ vl.values[0].gauge = ps->vmem_size;
+ vl.values_len = 1;
+ plugin_dispatch_values (&vl);
+
sstrncpy (vl.type, "ps_rss", sizeof (vl.type));
vl.values[0].gauge = ps->vmem_rss;
vl.values_len = 1;
plugin_dispatch_values (&vl);
+ sstrncpy (vl.type, "ps_stacksize", sizeof (vl.type));
+ vl.values[0].gauge = ps->stack_size;
+ vl.values_len = 1;
+ plugin_dispatch_values (&vl);
+
sstrncpy (vl.type, "ps_cputime", sizeof (vl.type));
vl.values[0].counter = ps->cpu_user_counter;
vl.values[1].counter = ps->cpu_system_counter;
long long unsigned cpu_user_counter;
long long unsigned cpu_system_counter;
+ long long unsigned vmem_size;
long long unsigned vmem_rss;
+ long long unsigned stack_size;
memset (ps, 0, sizeof (procstat_t));
cpu_user_counter = atoll (fields[13]);
cpu_system_counter = atoll (fields[14]);
- vmem_rss = atoll (fields[23]);
+ vmem_size = atoll (fields[22]);
+ vmem_rss = atoll (fields[23]);
ps->vmem_minflt_counter = atol (fields[9]);
ps->vmem_majflt_counter = atol (fields[11]);
-
+
+ {
+ unsigned long long stack_start = atoll (fields[27]);
+ unsigned long long stack_ptr = atoll (fields[28]);
+
+ stack_size = (stack_start > stack_ptr)
+ ? stack_start - stack_ptr
+ : stack_ptr - stack_start;
+ }
+
/* Convert jiffies to useconds */
cpu_user_counter = cpu_user_counter * 1000000 / CONFIG_HZ;
cpu_system_counter = cpu_system_counter * 1000000 / CONFIG_HZ;
ps->cpu_user_counter = (unsigned long) cpu_user_counter;
ps->cpu_system_counter = (unsigned long) cpu_system_counter;
+ ps->vmem_size = (unsigned long) vmem_size;
ps->vmem_rss = (unsigned long) vmem_rss;
+ ps->stack_size = (unsigned long) stack_size;
/* success */
return (0);
pse.id = pid;
pse.age = 0;
- pse.num_proc = ps.num_proc;
- pse.num_lwp = ps.num_lwp;
- pse.vmem_rss = ps.vmem_rss;
+ pse.num_proc = ps.num_proc;
+ pse.num_lwp = ps.num_lwp;
+ pse.vmem_size = ps.vmem_size;
+ pse.vmem_rss = ps.vmem_rss;
+ pse.stack_size = ps.stack_size;
pse.vmem_minflt = 0;
pse.vmem_minflt_counter = ps.vmem_minflt_counter;
diff --git a/src/types.db b/src/types.db
index 67d8f0d3979d6f6ea5711c50fa661f2c6b7ddf43..17dc76ccacd7940c0dc0330bcdfb5867d1900ced 100644 (file)
--- a/src/types.db
+++ b/src/types.db
ps_cputime user:COUNTER:0:16000000, syst:COUNTER:0:16000000
ps_pagefaults minflt:COUNTER:0:9223372036854775807, majflt:COUNTER:0:9223372036854775807
ps_rss value:GAUGE:0:9223372036854775807
+ps_stacksize value:GAUGE:0:9223372036854775807
ps_state value:GAUGE:0:65535
+ps_vm value:GAUGE:0:9223372036854775807
queue_length value:GAUGE:0:U
serial_octets rx:COUNTER:0:4294967295, tx:COUNTER:0:4294967295
signal_noise value:GAUGE:U:0