From 76a36096f23dbe55897cecf21f3ec86968c456e2 Mon Sep 17 00:00:00 2001 From: =?utf8?q?R=C3=A9mi=20Lef=C3=A8vre?= Date: Tue, 13 Dec 2016 16:15:19 +0100 Subject: [PATCH] convert plugin_proc to heartbeat API MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Rémi Lefèvre --- src/plugin_proc.c | 22 ++++++++-------------- src/proc_diskstats.c | 2 -- src/proc_loadavg.c | 8 ++++---- src/proc_net_dev.c | 1 - src/proc_net_ip_vs_stats.c | 3 +-- src/proc_net_rpc_nfsd.c | 3 +-- src/sys_kernel_mm_ksm.c | 3 +-- 7 files changed, 15 insertions(+), 27 deletions(-) diff --git a/src/plugin_proc.c b/src/plugin_proc.c index 9b66b7c2..9fdb016f 100644 --- a/src/plugin_proc.c +++ b/src/plugin_proc.c @@ -7,7 +7,6 @@ static struct proc_module { int enabled; int (*func)(int update_every, usec_t dt); - usec_t last_run_usec; usec_t duration; RRDDIM *rd; @@ -76,20 +75,17 @@ void *proc_main(void *ptr) { struct proc_module *pm = &proc_modules[i]; pm->enabled = config_get_boolean("plugin:proc", pm->name, 1); - pm->last_run_usec = 0ULL; pm->duration = 0ULL; pm->rd = NULL; } usec_t step = rrd_update_every * USEC_PER_SEC; - for(;;) { - usec_t now = now_monotonic_usec(); - usec_t next = now - (now % step) + step; + heartbeat_t hb; + heartbeat_init(&hb); - while(now < next) { - sleep_usec(next - now); - now = now_monotonic_usec(); - } + for(;;) { + usec_t hb_dt = heartbeat_next(&hb, step); + usec_t duration = 0ULL; if(unlikely(netdata_exit)) break; @@ -101,11 +97,9 @@ void *proc_main(void *ptr) { debug(D_PROCNETDEV_LOOP, "PROC calling %s.", pm->name); - pm->enabled = !pm->func(rrd_update_every, (pm->last_run_usec > 0)?now - pm->last_run_usec:0ULL); - pm->last_run_usec = now; - - now = now_monotonic_usec(); - pm->duration = now - pm->last_run_usec; + pm->enabled = !pm->func(rrd_update_every, hb_dt); + pm->duration = heartbeat_dt_usec(&hb) - duration; + duration += pm->duration; if(unlikely(netdata_exit)) break; } diff --git a/src/proc_diskstats.c b/src/proc_diskstats.c index 9ccac6dc..036895d1 100644 --- a/src/proc_diskstats.c +++ b/src/proc_diskstats.c @@ -197,8 +197,6 @@ static inline int is_major_enabled(int major) { } int do_proc_diskstats(int update_every, usec_t dt) { - (void)dt; - static procfile *ff = NULL; static int global_enable_new_disks_detected_at_runtime = CONFIG_ONDEMAND_YES, global_enable_performance_for_physical_disks = CONFIG_ONDEMAND_ONDEMAND, diff --git a/src/proc_loadavg.c b/src/proc_loadavg.c index 4326ffb7..aa1b2aeb 100644 --- a/src/proc_loadavg.c +++ b/src/proc_loadavg.c @@ -6,7 +6,7 @@ int do_proc_loadavg(int update_every, usec_t dt) { static procfile *ff = NULL; static int do_loadavg = -1, do_all_processes = -1; - static usec_t last_loadavg_usec = 0; + static usec_t next_loadavg_dt = 0; static RRDSET *load_chart = NULL, *processes_chart = NULL; if(unlikely(!ff)) { @@ -47,7 +47,7 @@ int do_proc_loadavg(int update_every, usec_t dt) { // -------------------------------------------------------------------- - if(last_loadavg_usec <= dt) { + if(next_loadavg_dt <= dt) { if(likely(do_loadavg)) { if(unlikely(!load_chart)) { load_chart = rrdset_find_byname("system.load"); @@ -67,9 +67,9 @@ int do_proc_loadavg(int update_every, usec_t dt) { rrdset_done(load_chart); } - last_loadavg_usec = load_chart->update_every * USEC_PER_SEC; + next_loadavg_dt = load_chart->update_every * USEC_PER_SEC; } - else last_loadavg_usec -= dt; + else next_loadavg_dt -= dt; // -------------------------------------------------------------------- diff --git a/src/proc_net_dev.c b/src/proc_net_dev.c index 82661abd..21f78dd1 100644 --- a/src/proc_net_dev.c +++ b/src/proc_net_dev.c @@ -111,7 +111,6 @@ static struct netdev *get_netdev(const char *name) { int do_proc_net_dev(int update_every, usec_t dt) { (void)dt; - static SIMPLE_PATTERN *disabled_list = NULL; static procfile *ff = NULL; static int enable_new_interfaces = -1; diff --git a/src/proc_net_ip_vs_stats.c b/src/proc_net_ip_vs_stats.c index 34cadaea..a5329929 100644 --- a/src/proc_net_ip_vs_stats.c +++ b/src/proc_net_ip_vs_stats.c @@ -3,6 +3,7 @@ #define RRD_TYPE_NET_IPVS "ipvs" int do_proc_net_ip_vs_stats(int update_every, usec_t dt) { + (void)dt; static int do_bandwidth = -1, do_sockets = -1, do_packets = -1; static procfile *ff = NULL; @@ -10,8 +11,6 @@ int do_proc_net_ip_vs_stats(int update_every, usec_t dt) { if(do_sockets == -1) do_sockets = config_get_boolean("plugin:proc:/proc/net/ip_vs_stats", "IPVS connections", 1); if(do_packets == -1) do_packets = config_get_boolean("plugin:proc:/proc/net/ip_vs_stats", "IPVS packets", 1); - if(dt) {}; - if(!ff) { char filename[FILENAME_MAX + 1]; snprintfz(filename, FILENAME_MAX, "%s%s", global_host_prefix, "/proc/net/ip_vs_stats"); diff --git a/src/proc_net_rpc_nfsd.c b/src/proc_net_rpc_nfsd.c index 02a8c8f9..e857ad6a 100644 --- a/src/proc_net_rpc_nfsd.c +++ b/src/proc_net_rpc_nfsd.c @@ -210,12 +210,11 @@ struct nfsd_procs nfsd4_ops_values[] = { int do_proc_net_rpc_nfsd(int update_every, usec_t dt) { + (void)dt; static procfile *ff = NULL; static int do_rc = -1, do_fh = -1, do_io = -1, do_th = -1, do_ra = -1, do_net = -1, do_rpc = -1, do_proc2 = -1, do_proc3 = -1, do_proc4 = -1, do_proc4ops = -1; static int ra_warning = 0, th_warning = 0, proc2_warning = 0, proc3_warning = 0, proc4_warning = 0, proc4ops_warning = 0; - if(dt) {}; - if(!ff) { char filename[FILENAME_MAX + 1]; snprintfz(filename, FILENAME_MAX, "%s%s", global_host_prefix, "/proc/net/rpc/nfsd"); diff --git a/src/sys_kernel_mm_ksm.c b/src/sys_kernel_mm_ksm.c index 83da7442..391aa4fd 100644 --- a/src/sys_kernel_mm_ksm.c +++ b/src/sys_kernel_mm_ksm.c @@ -20,11 +20,10 @@ KSM_NAME_VALUE values[] = { }; int do_sys_kernel_mm_ksm(int update_every, usec_t dt) { + (void)dt; static procfile *ff_pages_shared = NULL, *ff_pages_sharing = NULL, *ff_pages_unshared = NULL, *ff_pages_volatile = NULL, *ff_pages_to_scan = NULL; static long page_size = -1; - if(dt) {}; - if(page_size == -1) page_size = sysconf(_SC_PAGESIZE); -- 2.39.2