]> arthur.barton.de Git - netdata.git/blobdiff - src/plugin_proc.c
fixed minor issues throughout the code (mainly types); dashboard has now a watermark...
[netdata.git] / src / plugin_proc.c
index 4201a6fb56b6e8b6bac02a65f1897932bb119ef6..656ac1738fb928feb9b2cde2f77436bad540061c 100755 (executable)
@@ -31,7 +31,7 @@ void *proc_main(void *ptr)
 
        gettimeofday(&last, NULL);
        last.tv_sec -= rrd_update_every;
-       
+
        // disable (by default) various interface that are not needed
        config_get_boolean("plugin:proc:/proc/net/dev", "interface lo", 0);
        config_get_boolean("plugin:proc:/proc/net/dev", "interface fireqos_monitor", 0);
@@ -49,6 +49,8 @@ void *proc_main(void *ptr)
        int vdo_proc_net_rpc_nfsd               = !config_get_boolean("plugin:proc", "/proc/net/rpc/nfsd", 1);
        int vdo_proc_sys_kernel_random_entropy_avail    = !config_get_boolean("plugin:proc", "/proc/sys/kernel/random/entropy_avail", 1);
        int vdo_proc_interrupts                 = !config_get_boolean("plugin:proc", "/proc/interrupts", 1);
+       int vdo_proc_softirqs                   = !config_get_boolean("plugin:proc", "/proc/softirqs", 1);
+       int vdo_sys_kernel_mm_ksm               = !config_get_boolean("plugin:proc", "/sys/kernel/mm/ksm", 1);
        int vdo_cpu_netdata                     = !config_get_boolean("plugin:proc", "netdata server resources", 1);
 
        RRDSET *stcpu = NULL, *stcpu_thread = NULL, *stclients = NULL, *streqs = NULL, *stbytes = NULL;
@@ -57,13 +59,22 @@ void *proc_main(void *ptr)
 
        unsigned long long usec = 0, susec = 0;
        for(;1;) {
-               
+
                // BEGIN -- the job to be done
-               
+
+               if(!vdo_sys_kernel_mm_ksm) {
+                       debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_sys_kernel_mm_ksm().");
+                       vdo_sys_kernel_mm_ksm = do_sys_kernel_mm_ksm(rrd_update_every, usec+susec);
+               }
+
                if(!vdo_proc_interrupts) {
                        debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_interrupts().");
                        vdo_proc_interrupts = do_proc_interrupts(rrd_update_every, usec+susec);
                }
+               if(!vdo_proc_softirqs) {
+                       debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_softirqs().");
+                       vdo_proc_softirqs = do_proc_softirqs(rrd_update_every, usec+susec);
+               }
                if(!vdo_proc_sys_kernel_random_entropy_avail) {
                        debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_sys_kernel_random_entropy_avail().");
                        vdo_proc_sys_kernel_random_entropy_avail = do_proc_sys_kernel_random_entropy_avail(rrd_update_every, usec+susec);
@@ -117,15 +128,15 @@ void *proc_main(void *ptr)
                }
 
                // END -- the job is done
-               
+
                // find the time to sleep in order to wait exactly update_every seconds
                gettimeofday(&now, NULL);
                usec = usecdiff(&now, &last) - susec;
                debug(D_PROCNETDEV_LOOP, "PROCNETDEV: last loop took %llu usec (worked for %llu, sleeped for %llu).", usec + susec, usec, susec);
-               
+
                if(usec < (rrd_update_every * 1000000ULL / 2ULL)) susec = (rrd_update_every * 1000000ULL) - usec;
                else susec = rrd_update_every * 1000000ULL / 2ULL;
-               
+
                // --------------------------------------------------------------------
 
                if(!vdo_cpu_netdata) {
@@ -136,8 +147,8 @@ void *proc_main(void *ptr)
                        if(!stcpu_thread) {
                                stcpu_thread = rrdset_create("netdata", "plugin_proc_cpu", NULL, "netdata", "NetData Proc Plugin CPU usage", "milliseconds/s", 9999, rrd_update_every, RRDSET_TYPE_STACKED);
 
-                               rrddim_add(stcpu_thread, "user",  NULL,  1, 1000 * rrd_update_every, RRDDIM_INCREMENTAL);
-                               rrddim_add(stcpu_thread, "system", NULL, 1, 1000 * rrd_update_every, RRDDIM_INCREMENTAL);
+                               rrddim_add(stcpu_thread, "user",  NULL,  1, 1000, RRDDIM_INCREMENTAL);
+                               rrddim_add(stcpu_thread, "system", NULL, 1, 1000, RRDDIM_INCREMENTAL);
                        }
                        else rrdset_next(stcpu_thread);
 
@@ -151,8 +162,8 @@ void *proc_main(void *ptr)
                        if(!stcpu) {
                                stcpu = rrdset_create("netdata", "server_cpu", NULL, "netdata", "NetData CPU usage", "milliseconds/s", 2000, rrd_update_every, RRDSET_TYPE_STACKED);
 
-                               rrddim_add(stcpu, "user",  NULL,  1, 1000 * rrd_update_every, RRDDIM_INCREMENTAL);
-                               rrddim_add(stcpu, "system", NULL, 1, 1000 * rrd_update_every, RRDDIM_INCREMENTAL);
+                               rrddim_add(stcpu, "user",  NULL,  1, 1000, RRDDIM_INCREMENTAL);
+                               rrddim_add(stcpu, "system", NULL, 1, 1000, RRDDIM_INCREMENTAL);
                        }
                        else rrdset_next(stcpu);
 
@@ -179,7 +190,7 @@ void *proc_main(void *ptr)
                        if(!streqs) {
                                streqs = rrdset_create("netdata", "requests", NULL, "netdata", "NetData Web Requests", "requests/s", 3001, rrd_update_every, RRDSET_TYPE_LINE);
 
-                               rrddim_add(streqs, "requests",  NULL,  1, 1 * rrd_update_every, RRDDIM_INCREMENTAL);
+                               rrddim_add(streqs, "requests",  NULL,  1, 1, RRDDIM_INCREMENTAL);
                        }
                        else rrdset_next(streqs);
 
@@ -192,8 +203,8 @@ void *proc_main(void *ptr)
                        if(!stbytes) {
                                stbytes = rrdset_create("netdata", "net", NULL, "netdata", "NetData Network Traffic", "kilobits/s", 3002, rrd_update_every, RRDSET_TYPE_AREA);
 
-                               rrddim_add(stbytes, "in",  NULL,  8, 1024 * rrd_update_every, RRDDIM_INCREMENTAL);
-                               rrddim_add(stbytes, "out",  NULL,  -8, 1024 * rrd_update_every, RRDDIM_INCREMENTAL);
+                               rrddim_add(stbytes, "in",  NULL,  8, 1024, RRDDIM_INCREMENTAL);
+                               rrddim_add(stbytes, "out",  NULL,  -8, 1024, RRDDIM_INCREMENTAL);
                        }
                        else rrdset_next(stbytes);
 
@@ -202,8 +213,8 @@ void *proc_main(void *ptr)
                        rrdset_done(stbytes);
                }
 
-               usleep(susec);
-               
+               usleep((useconds_t) susec);
+
                // copy current to last
                bcopy(&now, &last, sizeof(struct timeval));
        }