From: Rémi Lefèvre Date: Tue, 13 Dec 2016 17:56:44 +0000 (+0100) Subject: convert FreeBSD and MacOS plugins to heartbeat API X-Git-Tag: ab-debian_0.20170201.01-0ab1~15^2~3 X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=netdata.git;a=commitdiff_plain;h=16cd3b4fdbe0f5654ed60a2c3b91c1d5eacd9813 convert FreeBSD and MacOS plugins to heartbeat API Signed-off-by: Rémi Lefèvre --- diff --git a/src/freebsd_sysctl.c b/src/freebsd_sysctl.c index 9400089d..dda75dcf 100644 --- a/src/freebsd_sysctl.c +++ b/src/freebsd_sysctl.c @@ -52,8 +52,6 @@ #define IFA_DATA(s) (((struct if_data *)ifa->ifa_data)->ifi_ ## s) int do_freebsd_sysctl(int update_every, usec_t dt) { - (void)dt; - static int do_cpu = -1, do_cpu_cores = -1, do_interrupts = -1, do_context = -1, do_forks = -1, do_processes = -1, do_loadavg = -1, do_all_processes = -1, do_disk_io = -1, do_swap = -1, do_ram = -1, do_swapio = -1, do_pgfaults = -1, do_committed = -1, do_ipc_semaphores = -1, do_ipc_shared_mem = -1, do_ipc_msg_queues = -1, @@ -132,7 +130,7 @@ int do_freebsd_sysctl(int update_every, usec_t dt) { char title[4096 + 1]; // NEEDED BY: do_loadavg - static usec_t last_loadavg_usec = 0; + static usec_t next_loadavg_dt = 0; struct loadavg sysload; // NEEDED BY: do_cpu, do_cpu_cores @@ -278,7 +276,7 @@ int do_freebsd_sysctl(int update_every, usec_t dt) { // -------------------------------------------------------------------- - if (last_loadavg_usec <= dt) { + if (next_loadavg_dt <= dt) { if (likely(do_loadavg)) { if (unlikely(GETSYSCTL("vm.loadavg", sysload))) { do_loadavg = 0; @@ -301,9 +299,9 @@ int do_freebsd_sysctl(int update_every, usec_t dt) { } } - last_loadavg_usec = st->update_every * USEC_PER_SEC; + next_loadavg_dt = st->update_every * USEC_PER_SEC; } - else last_loadavg_usec -= dt; + else next_loadavg_dt -= dt; // -------------------------------------------------------------------- diff --git a/src/macos_sysctl.c b/src/macos_sysctl.c index 955b7075..1b8765cd 100644 --- a/src/macos_sysctl.c +++ b/src/macos_sysctl.c @@ -24,8 +24,6 @@ #define MIN_LOADAVG_UPDATE_EVERY 5 int do_macos_sysctl(int update_every, usec_t dt) { - (void)dt; - static int do_loadavg = -1, do_swap = -1, do_bandwidth = -1, do_tcp_packets = -1, do_tcp_errors = -1, do_tcp_handshake = -1, do_ecn = -1, do_tcpext_syscookies = -1, do_tcpext_ofo = -1, do_tcpext_connaborts = -1, @@ -77,7 +75,7 @@ int do_macos_sysctl(int update_every, usec_t dt) { size_t size; // NEEDED BY: do_loadavg - static usec_t last_loadavg_usec = 0; + static usec_t next_loadavg_dt = 0; struct loadavg sysload; // NEEDED BY: do_swap @@ -210,7 +208,7 @@ int do_macos_sysctl(int update_every, usec_t dt) { // -------------------------------------------------------------------- - if (last_loadavg_usec <= dt) { + if (next_loadavg_dt <= dt) { if (likely(do_loadavg)) { if (unlikely(GETSYSCTL("vm.loadavg", sysload))) { do_loadavg = 0; @@ -233,9 +231,9 @@ int do_macos_sysctl(int update_every, usec_t dt) { } } - last_loadavg_usec = st->update_every * USEC_PER_SEC; + next_loadavg_dt = st->update_every * USEC_PER_SEC; } - else last_loadavg_usec -= dt; + else next_loadavg_dt -= dt; // -------------------------------------------------------------------- diff --git a/src/plugin_freebsd.c b/src/plugin_freebsd.c index bdc3599e..d6deb709 100644 --- a/src/plugin_freebsd.c +++ b/src/plugin_freebsd.c @@ -25,14 +25,10 @@ void *freebsd_main(void *ptr) { unsigned long long sutime_freebsd_sysctl = 0ULL; usec_t step = rrd_update_every * USEC_PER_SEC; + heartbeat_t hb; + heartbeat_init(&hb); for(;;) { - usec_t now = now_realtime_usec(); - usec_t next = now - (now % step) + step; - - while(now < next) { - sleep_usec(next - now); - now = now_realtime_usec(); - } + usec_t hb_dt = heartbeat_next(&hb, step); if(unlikely(netdata_exit)) break; @@ -40,9 +36,7 @@ void *freebsd_main(void *ptr) { if(!vdo_freebsd_sysctl) { debug(D_PROCNETDEV_LOOP, "FREEBSD: calling do_freebsd_sysctl()."); - now = now_realtime_usec(); - vdo_freebsd_sysctl = do_freebsd_sysctl(rrd_update_every, (sutime_freebsd_sysctl > 0)?now - sutime_freebsd_sysctl:0ULL); - sutime_freebsd_sysctl = now; + vdo_freebsd_sysctl = do_freebsd_sysctl(rrd_update_every, hb_dt); } if(unlikely(netdata_exit)) break; diff --git a/src/plugin_macos.c b/src/plugin_macos.c index 3955c141..cf4f7402 100644 --- a/src/plugin_macos.c +++ b/src/plugin_macos.c @@ -29,14 +29,10 @@ void *macos_main(void *ptr) { unsigned long long sutime_macos_iokit = 0ULL; usec_t step = rrd_update_every * USEC_PER_SEC; + heartbeat_t hb; + heartbeat_init(&hb); for(;;) { - usec_t now = now_realtime_usec(); - usec_t next = now - (now % step) + step; - - while(now < next) { - sleep_usec(next - now); - now = now_realtime_usec(); - } + usec_t hb_dt = heartbeat_next(&hb, step); if(unlikely(netdata_exit)) break; @@ -44,25 +40,19 @@ void *macos_main(void *ptr) { if(!vdo_macos_sysctl) { debug(D_PROCNETDEV_LOOP, "MACOS: calling do_macos_sysctl()."); - now = now_realtime_usec(); - vdo_macos_sysctl = do_macos_sysctl(rrd_update_every, (sutime_macos_sysctl > 0)?now - sutime_macos_sysctl:0ULL); - sutime_macos_sysctl = now; + vdo_macos_sysctl = do_macos_sysctl(rrd_update_every, hb_dt); } if(unlikely(netdata_exit)) break; if(!vdo_macos_mach_smi) { debug(D_PROCNETDEV_LOOP, "MACOS: calling do_macos_mach_smi()."); - now = now_realtime_usec(); - vdo_macos_mach_smi = do_macos_mach_smi(rrd_update_every, (sutime_macos_mach_smi > 0)?now - sutime_macos_mach_smi:0ULL); - sutime_macos_mach_smi = now; + vdo_macos_mach_smi = do_macos_mach_smi(rrd_update_every, hb_dt); } if(unlikely(netdata_exit)) break; if(!vdo_macos_iokit) { debug(D_PROCNETDEV_LOOP, "MACOS: calling do_macos_iokit()."); - now = now_realtime_usec(); - vdo_macos_iokit = do_macos_iokit(rrd_update_every, (sutime_macos_iokit > 0)?now - sutime_macos_iokit:0ULL); - sutime_macos_iokit = now; + vdo_macos_iokit = do_macos_iokit(rrd_update_every, hb_dt); } if(unlikely(netdata_exit)) break;