From 331ae4c0caccff0df4abac224de94c969b6f35cd Mon Sep 17 00:00:00 2001 From: Vladimir Kobal Date: Mon, 5 Dec 2016 22:10:59 +0200 Subject: [PATCH] Minor cleanups and plugin structure changes --- configure.ac | 2 +- src/Makefile.am | 4 +- src/common.c | 15 +-- src/common.h | 2 - src/freebsd_loadavg.c | 78 ----------- src/freebsd_stat.c | 254 ----------------------------------- src/freebsd_sysctl.c | 305 ++++++++++++++++++++++++++++++++++++++++++ src/main.c | 13 +- src/plugin_freebsd.c | 241 ++------------------------------- src/plugin_freebsd.h | 27 +--- 10 files changed, 333 insertions(+), 608 deletions(-) delete mode 100644 src/freebsd_loadavg.c delete mode 100644 src/freebsd_stat.c create mode 100644 src/freebsd_sysctl.c diff --git a/configure.ac b/configure.ac index 11ab9170..9b26fcdd 100644 --- a/configure.ac +++ b/configure.ac @@ -41,7 +41,7 @@ case "$host_os" in freebsd*) build_target=freebsd ;; -*) +*) ;; esac diff --git a/src/Makefile.am b/src/Makefile.am index baecba22..466c6993 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -62,8 +62,7 @@ netdata_SOURCES = \ if FREEBSD netdata_SOURCES += \ plugin_freebsd.c plugin_freebsd.h \ - freebsd_loadavg.c \ - freebsd_stat.c \ + freebsd_sysctl.c \ $(NULL) else netdata_SOURCES += \ @@ -91,7 +90,6 @@ netdata_SOURCES += \ $(NULL) endif - netdata_LDADD = \ $(OPTIONAL_MATH_LIBS) \ $(OPTIONAL_NFACCT_LIBS) \ diff --git a/src/common.c b/src/common.c index 29669d93..98093b96 100644 --- a/src/common.c +++ b/src/common.c @@ -1,9 +1,8 @@ #include "common.h" -#ifdef __FreeBSD__ -# include -# define O_NOATIME 0 -# define MADV_DONTFORK INHERIT_NONE +#ifdef __FreeBSD__ +# define O_NOATIME 0 +# define MADV_DONTFORK INHERIT_NONE #endif /* __FreeBSD__ */ char *global_host_prefix = ""; @@ -1031,11 +1030,9 @@ int fd_is_valid(int fd) { } pid_t gettid(void) { -#ifdef __FreeBSD__ - long pid; - thr_self( &pid ); - return (unsigned) pid; -#else /* __FreeBSD__ */ +#ifdef __FreeBSD__ + return (pid_t)pthread_getthreadid_np(); +#else return (pid_t)syscall(SYS_gettid); #endif /* __FreeBSD__ */ } diff --git a/src/common.h b/src/common.h index b1b98447..a6f185bc 100644 --- a/src/common.h +++ b/src/common.h @@ -54,11 +54,9 @@ #include #include #include - #ifndef __FreeBSD__ #include #endif /* __FreeBSD__ */ - #include #include #include diff --git a/src/freebsd_loadavg.c b/src/freebsd_loadavg.c deleted file mode 100644 index d4e3594c..00000000 --- a/src/freebsd_loadavg.c +++ /dev/null @@ -1,78 +0,0 @@ -#include "common.h" -#include - -// FreeBSD calculates this once every 5 seconds -#define MIN_LOADAVG_UPDATE_EVERY 5 - -int do_proc_loadavg(int update_every, unsigned long long dt) { - (void)dt; - - static int do_loadavg = -1, do_all_processes = -1; - static unsigned long long last_loadavg_usec = 0; - static RRDSET *load_chart = NULL, *processes_chart = NULL; - - if(unlikely(do_loadavg == -1)) { - do_loadavg = config_get_boolean("plugin:proc:/proc/loadavg", "enable load average", 1); - do_all_processes = config_get_boolean("plugin:proc:/proc/loadavg", "enable total processes", 1); - } - - struct loadavg sysload; - - if (unlikely(GETSYSCTL("vm.loadavg", sysload))) - return 1; - - double load1 = (double)sysload.ldavg[0] / sysload.fscale; - double load5 = (double)sysload.ldavg[1] / sysload.fscale; - double load15 = (double)sysload.ldavg[2] / sysload.fscale; - - struct vmtotal total; - - if (unlikely(GETSYSCTL("vm.vmtotal", total))) - return 1; - - unsigned long long active_processes = total.t_rq + total.t_dw + total.t_pw + total.t_sl + total.t_sw; - - // -------------------------------------------------------------------- - - if(last_loadavg_usec <= dt) { - if(likely(do_loadavg)) { - if(unlikely(!load_chart)) { - load_chart = rrdset_find_byname("system.load"); - if(unlikely(!load_chart)) { - load_chart = rrdset_create("system", "load", NULL, "load", NULL, "System Load Average", "load", 100, (update_every < MIN_LOADAVG_UPDATE_EVERY) ? MIN_LOADAVG_UPDATE_EVERY : update_every, RRDSET_TYPE_LINE); - rrddim_add(load_chart, "load1", NULL, 1, 1000, RRDDIM_ABSOLUTE); - rrddim_add(load_chart, "load5", NULL, 1, 1000, RRDDIM_ABSOLUTE); - rrddim_add(load_chart, "load15", NULL, 1, 1000, RRDDIM_ABSOLUTE); - } - } - else - rrdset_next(load_chart); - - rrddim_set(load_chart, "load1", (collected_number) (load1 * 1000)); - rrddim_set(load_chart, "load5", (collected_number) (load5 * 1000)); - rrddim_set(load_chart, "load15", (collected_number) (load15 * 1000)); - rrdset_done(load_chart); - } - - last_loadavg_usec = load_chart->update_every * 1000000ULL; - } - else last_loadavg_usec -= dt; - - // -------------------------------------------------------------------- - - if(likely(do_all_processes)) { - if(unlikely(!processes_chart)) { - processes_chart = rrdset_find_byname("system.active_processes"); - if(unlikely(!processes_chart)) { - processes_chart = rrdset_create("system", "active_processes", NULL, "processes", NULL, "System Active Processes", "processes", 750, update_every, RRDSET_TYPE_LINE); - rrddim_add(processes_chart, "active", NULL, 1, 1, RRDDIM_ABSOLUTE); - } - } - else rrdset_next(processes_chart); - - rrddim_set(processes_chart, "active", active_processes); - rrdset_done(processes_chart); - } - - return 0; -} diff --git a/src/freebsd_stat.c b/src/freebsd_stat.c deleted file mode 100644 index 1ed513c8..00000000 --- a/src/freebsd_stat.c +++ /dev/null @@ -1,254 +0,0 @@ -#include "common.h" -#include - -int do_proc_stat(int update_every, unsigned long long dt) { - (void)dt; - - static int do_cpu = -1, do_cpu_cores = -1, do_interrupts = -1, do_context = -1, do_forks = -1, do_processes = -1; - - if(unlikely(do_cpu == -1)) { - do_cpu = config_get_boolean("plugin:proc:/proc/stat", "cpu utilization", 1); - do_cpu_cores = config_get_boolean("plugin:proc:/proc/stat", "per cpu core utilization", 1); - do_interrupts = config_get_boolean("plugin:proc:/proc/stat", "cpu interrupts", 1); - do_context = config_get_boolean("plugin:proc:/proc/stat", "context switches", 1); - do_forks = config_get_boolean("plugin:proc:/proc/stat", "processes started", 1); - do_processes = config_get_boolean("plugin:proc:/proc/stat", "processes running", 1); - } - - RRDSET *st; - - char cpuid[5] = "cpu0"; - unsigned long long user = 0, nice = 0, system = 0, interrupt = 0, idle = 0; - u_int vm_stat; - size_t intrcnt_size; - unsigned long nintr = 0; - unsigned long *intrcnt; - unsigned long long totalintr = 0; - unsigned long long running = 0 , blocked = 0; - - long multiplier = 1; - long divisor = 1; // sysconf(_SC_CLK_TCK); - - long cp_time[CPUSTATES]; - long *pcpu_cp_time; - - int i, ncpus; - - struct vmtotal total; - - if(likely(do_cpu)) { - if (unlikely(CPUSTATES != 5)) { - error("There are %d CPU states (5 was expected)", CPUSTATES); - do_cpu = 0; - error("Total CPU utilization stats was switched off"); - return 0; - } - if (unlikely(GETSYSCTL("kern.cp_time", cp_time))) { - do_cpu = 0; - error("Total CPU utilization stats was switched off"); - return 0; - } - user = cp_time[0]; - nice = cp_time[1]; - system = cp_time[2]; - interrupt = cp_time[3]; - idle = cp_time[4]; - - st = rrdset_find_bytype("system", "cpu"); - if(unlikely(!st)) { - st = rrdset_create("system", "cpu", NULL, "cpu", "system.cpu", "Total CPU utilization", "percentage", 100, update_every, RRDSET_TYPE_STACKED); - - rrddim_add(st, "user", NULL, multiplier, divisor, RRDDIM_PCENT_OVER_DIFF_TOTAL); - rrddim_add(st, "system", NULL, multiplier, divisor, RRDDIM_PCENT_OVER_DIFF_TOTAL); - rrddim_add(st, "interrupt", NULL, multiplier, divisor, RRDDIM_PCENT_OVER_DIFF_TOTAL); - rrddim_add(st, "nice", NULL, multiplier, divisor, RRDDIM_PCENT_OVER_DIFF_TOTAL); - rrddim_add(st, "idle", NULL, multiplier, divisor, RRDDIM_PCENT_OVER_DIFF_TOTAL); - rrddim_hide(st, "idle"); - } - else rrdset_next(st); - - rrddim_set(st, "user", user); - rrddim_set(st, "system", system); - rrddim_set(st, "interrupt", interrupt); - rrddim_set(st, "nice", nice); - rrddim_set(st, "idle", idle); - rrdset_done(st); - } - - // -------------------------------------------------------------------- - - if(likely(do_cpu_cores)) { - if (unlikely(CPUSTATES != 5)) { - error("There are %d CPU states (5 was expected)", CPUSTATES); - do_cpu_cores = 0; - error("CPU cores utilization stats was switched off"); - return 0; - } - if (unlikely(GETSYSCTL("kern.smp.cpus", ncpus))) { - do_cpu_cores = 0; - error("CPU cores utilization stats was switched off"); - return 0; - } - pcpu_cp_time = malloc(sizeof(cp_time) * ncpus); - - for (i = 0; i < ncpus; i++) { - if (unlikely(getsysctl("kern.cp_times", pcpu_cp_time, sizeof(cp_time) * ncpus))) { - do_cpu_cores = 0; - error("CPU cores utilization stats was switched off"); - return 0; - } - cpuid[3] = '0' + i; - user = pcpu_cp_time[i * 5 + 0]; - nice = pcpu_cp_time[i * 5 + 1]; - system = pcpu_cp_time[i * 5 + 2]; - interrupt = pcpu_cp_time[i * 5 + 3]; - idle = pcpu_cp_time[i * 5 + 4]; - - st = rrdset_find_bytype("cpu", cpuid); - if(unlikely(!st)) { - st = rrdset_create("cpu", cpuid, NULL, "utilization", "cpu.cpu", "Core utilization", "percentage", 1000, update_every, RRDSET_TYPE_STACKED); - - rrddim_add(st, "user", NULL, multiplier, divisor, RRDDIM_PCENT_OVER_DIFF_TOTAL); - rrddim_add(st, "system", NULL, multiplier, divisor, RRDDIM_PCENT_OVER_DIFF_TOTAL); - rrddim_add(st, "interrupt", NULL, multiplier, divisor, RRDDIM_PCENT_OVER_DIFF_TOTAL); - rrddim_add(st, "nice", NULL, multiplier, divisor, RRDDIM_PCENT_OVER_DIFF_TOTAL); - rrddim_add(st, "idle", NULL, multiplier, divisor, RRDDIM_PCENT_OVER_DIFF_TOTAL); - rrddim_hide(st, "idle"); - } - else rrdset_next(st); - - rrddim_set(st, "user", user); - rrddim_set(st, "system", system); - rrddim_set(st, "interrupt", interrupt); - rrddim_set(st, "nice", nice); - rrddim_set(st, "idle", idle); - rrdset_done(st); - } - free(pcpu_cp_time); - } - - // -------------------------------------------------------------------- - - if(likely(do_interrupts)) { - if (unlikely(sysctlbyname("hw.intrcnt", NULL, &intrcnt_size, NULL, 0) == -1)) { - error("sysctl(hw.intrcnt...) failed: %s", strerror(errno)); - do_interrupts = 0; - error("Total device interrupts stats was switched off"); - return 0; - } - nintr = intrcnt_size / sizeof(u_long); - intrcnt = malloc(nintr * sizeof(u_long)); - if (unlikely(getsysctl("hw.intrcnt", intrcnt, nintr * sizeof(u_long)))){ - do_interrupts = 0; - error("Total device interrupts stats was switched off"); - return 0; - } - for (i = 0; i < nintr; i++) - totalintr += intrcnt[i]; - free(intrcnt); - - st = rrdset_find_bytype("system", "intr"); - if(unlikely(!st)) { - st = rrdset_create("system", "intr", NULL, "interrupts", NULL, "Total Device Interrupts", "interrupts/s", 900, update_every, RRDSET_TYPE_LINE); - st->isdetail = 1; - - rrddim_add(st, "interrupts", NULL, 1, 1, RRDDIM_INCREMENTAL); - } - else rrdset_next(st); - - rrddim_set(st, "interrupts", totalintr); - rrdset_done(st); - } - -/* Temporarily switched off - if(likely(do_interrupts)) { - if (unlikely(GETSYSCTL("vm.stats.sys.v_intr", vm_stat))) { - do_interrupts = 0; - error("Device interrupts utilization stats was switched off"); - return 0; - } - - st = rrdset_find_bytype("system", "intr"); - if(unlikely(!st)) { - st = rrdset_create("system", "intr", NULL, "interrupts", NULL, "Device Interrupts", "interrupts/s", 900, update_every, RRDSET_TYPE_LINE); - st->isdetail = 1; - - rrddim_add(st, "interrupts", NULL, 1, 1, RRDDIM_INCREMENTAL); - } - else rrdset_next(st); - - rrddim_set(st, "interrupts", vm_stat); - rrdset_done(st); - } -*/ - // -------------------------------------------------------------------- - - if(likely(do_context)) { - if (unlikely(GETSYSCTL("vm.stats.sys.v_swtch", vm_stat))) { - do_context = 0; - error("CPU context switches stats was switched off"); - return 0; - } - - st = rrdset_find_bytype("system", "ctxt"); - if(unlikely(!st)) { - st = rrdset_create("system", "ctxt", NULL, "processes", NULL, "CPU Context Switches", "context switches/s", 800, update_every, RRDSET_TYPE_LINE); - - rrddim_add(st, "switches", NULL, 1, 1, RRDDIM_INCREMENTAL); - } - else rrdset_next(st); - - rrddim_set(st, "switches", vm_stat); - rrdset_done(st); - } - - // -------------------------------------------------------------------- - - if(likely(do_forks)) { - if (unlikely(GETSYSCTL("vm.stats.vm.v_forks", vm_stat))) { - do_forks = 0; - error("Fork stats was switched off"); - return 0; - } - - st = rrdset_find_bytype("system", "forks"); - if(unlikely(!st)) { - st = rrdset_create("system", "forks", NULL, "processes", NULL, "Started Processes", "processes/s", 700, update_every, RRDSET_TYPE_LINE); - st->isdetail = 1; - - rrddim_add(st, "started", NULL, 1, 1, RRDDIM_INCREMENTAL); - } - else rrdset_next(st); - - rrddim_set(st, "started", vm_stat); - rrdset_done(st); - } - - // -------------------------------------------------------------------- - - if(likely(do_processes)) { - if (unlikely(GETSYSCTL("vm.vmtotal", total))) { - do_processes = 0; - error("System processes stats was switched off"); - return 0; - } - - running = total.t_rq; - blocked = total.t_dw + total.t_pw; - - st = rrdset_find_bytype("system", "processes"); - if(unlikely(!st)) { - st = rrdset_create("system", "processes", NULL, "processes", NULL, "System Processes", "processes", 600, update_every, RRDSET_TYPE_LINE); - - rrddim_add(st, "running", NULL, 1, 1, RRDDIM_ABSOLUTE); - rrddim_add(st, "blocked", NULL, -1, 1, RRDDIM_ABSOLUTE); - } - else rrdset_next(st); - - rrddim_set(st, "running", running); - rrddim_set(st, "blocked", blocked); - rrdset_done(st); - } - - return 0; -} \ No newline at end of file diff --git a/src/freebsd_sysctl.c b/src/freebsd_sysctl.c new file mode 100644 index 00000000..5b6d0356 --- /dev/null +++ b/src/freebsd_sysctl.c @@ -0,0 +1,305 @@ +#include "common.h" + +// NEEDED BY: struct vmstat +#include + +// FreeBSD calculates load averages once every 5 seconds +#define MIN_LOADAVG_UPDATE_EVERY 5 + +int do_freebsd_sysctl(int update_every, unsigned long long 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; + + if(unlikely(do_cpu == -1)) { + do_cpu = config_get_boolean("plugin:freebsd:sysctl", "cpu utilization", 1); + do_cpu_cores = config_get_boolean("plugin:freebsd:sysctl", "per cpu core utilization", 1); + do_interrupts = config_get_boolean("plugin:freebsd:sysctl", "cpu interrupts", 1); + do_context = config_get_boolean("plugin:freebsd:sysctl", "context switches", 1); + do_forks = config_get_boolean("plugin:freebsd:sysctl", "processes started", 1); + do_processes = config_get_boolean("plugin:freebsd:sysctl", "processes running", 1); + do_loadavg = config_get_boolean("plugin:freebsd:sysctl", "enable load average", 1); + do_all_processes = config_get_boolean("plugin:freebsd:sysctl", "enable total processes", 1); + } + + RRDSET *st; + + int i; + +// NEEDED BY: do_loadavg + static unsigned long long last_loadavg_usec = 0; + struct loadavg sysload; + +// NEEDED BY: do_cpu, do_cpu_cores + long cp_time[CPUSTATES]; + +// NEEDED BY: do_cpu_cores + int ncpus; + static long *pcpu_cp_time = NULL; + char cpuid[8]; // no more than 4 digits expected + +// NEEDED BY: do_all_processes, do_processes + struct vmtotal vmtotal_data; + +// NEEDED BY: do_context, do_forks + u_int u_int_data; + +// NEEDED BY: do_interrupts + size_t intrcnt_size; + unsigned long nintr = 0; + static unsigned long *intrcnt = NULL; + unsigned long long totalintr = 0; + + // -------------------------------------------------------------------- + + if(last_loadavg_usec <= dt) { + if(likely(do_loadavg)) { + if (unlikely(GETSYSCTL("vm.loadavg", sysload))) { + do_loadavg = 0; + error("DISABLED: system.load"); + } else { + + st = rrdset_find_bytype("system", "load"); + if(unlikely(!st)) { + st = rrdset_create("system", "load", NULL, "load", NULL, "System Load Average", "load", 100, (update_every < MIN_LOADAVG_UPDATE_EVERY) ? MIN_LOADAVG_UPDATE_EVERY : update_every, RRDSET_TYPE_LINE); + rrddim_add(st, "load1", NULL, 1, 1000, RRDDIM_ABSOLUTE); + rrddim_add(st, "load5", NULL, 1, 1000, RRDDIM_ABSOLUTE); + rrddim_add(st, "load15", NULL, 1, 1000, RRDDIM_ABSOLUTE); + } + else rrdset_next(st); + + rrddim_set(st, "load1", (collected_number) ((double)sysload.ldavg[0] / sysload.fscale * 1000)); + rrddim_set(st, "load5", (collected_number) ((double)sysload.ldavg[1] / sysload.fscale * 1000)); + rrddim_set(st, "load15", (collected_number) ((double)sysload.ldavg[2] / sysload.fscale * 1000)); + rrdset_done(st); + } + } + + last_loadavg_usec = st->update_every * 1000000ULL; + } + else last_loadavg_usec -= dt; + + // -------------------------------------------------------------------- + + if(likely(do_all_processes | do_processes)) { + if (unlikely(GETSYSCTL("vm.vmtotal", vmtotal_data))) { + do_all_processes = 0; + error("DISABLED: system.active_processes"); + do_processes = 0; + error("DISABLED: system.processes"); + } else { + if(likely(do_processes)) { + + st = rrdset_find_bytype("system", "active_processes"); + if(unlikely(!st)) { + st = rrdset_create("system", "active_processes", NULL, "processes", NULL, "System Active Processes", "processes", 750, update_every, RRDSET_TYPE_LINE); + rrddim_add(st, "active", NULL, 1, 1, RRDDIM_ABSOLUTE); + } + else rrdset_next(st); + + rrddim_set(st, "active", (vmtotal_data.t_rq + vmtotal_data.t_dw + vmtotal_data.t_pw + vmtotal_data.t_sl + vmtotal_data.t_sw)); + rrdset_done(st); + } + if(likely(do_processes)) { + + st = rrdset_find_bytype("system", "processes"); + if(unlikely(!st)) { + st = rrdset_create("system", "processes", NULL, "processes", NULL, "System Processes", "processes", 600, update_every, RRDSET_TYPE_LINE); + + rrddim_add(st, "running", NULL, 1, 1, RRDDIM_ABSOLUTE); + rrddim_add(st, "blocked", NULL, -1, 1, RRDDIM_ABSOLUTE); + } + else rrdset_next(st); + + rrddim_set(st, "running", vmtotal_data.t_rq); + rrddim_set(st, "blocked", (vmtotal_data.t_dw + vmtotal_data.t_pw)); + rrdset_done(st); + } + + } + } + + // -------------------------------------------------------------------- + + if(likely(do_processes)) { + + st = rrdset_find_bytype("system", "processes"); + if(unlikely(!st)) { + st = rrdset_create("system", "processes", NULL, "processes", NULL, "System Processes", "processes", 600, update_every, RRDSET_TYPE_LINE); + + rrddim_add(st, "running", NULL, 1, 1, RRDDIM_ABSOLUTE); + rrddim_add(st, "blocked", NULL, -1, 1, RRDDIM_ABSOLUTE); + } + else rrdset_next(st); + + rrddim_set(st, "running", vmtotal_data.t_rq); + rrddim_set(st, "blocked", (vmtotal_data.t_dw + vmtotal_data.t_pw)); + rrdset_done(st); + } + + // -------------------------------------------------------------------- + + if(likely(do_cpu)) { + if (unlikely(CPUSTATES != 5)) { + error("FREEBSD: There are %d CPU states (5 was expected)", CPUSTATES); + do_cpu = 0; + error("DISABLED: system.cpu"); + } else { + if (unlikely(GETSYSCTL("kern.cp_time", cp_time))) { + do_cpu = 0; + error("DISABLED: system.cpu"); + } else { + + st = rrdset_find_bytype("system", "cpu"); + if(unlikely(!st)) { + st = rrdset_create("system", "cpu", NULL, "cpu", "system.cpu", "Total CPU utilization", "percentage", 100, update_every, RRDSET_TYPE_STACKED); + + rrddim_add(st, "user", NULL, 1, 1, RRDDIM_PCENT_OVER_DIFF_TOTAL); + rrddim_add(st, "nice", NULL, 1, 1, RRDDIM_PCENT_OVER_DIFF_TOTAL); + rrddim_add(st, "system", NULL, 1, 1, RRDDIM_PCENT_OVER_DIFF_TOTAL); + rrddim_add(st, "interrupt", NULL, 1, 1, RRDDIM_PCENT_OVER_DIFF_TOTAL); + rrddim_add(st, "idle", NULL, 1, 1, RRDDIM_PCENT_OVER_DIFF_TOTAL); + rrddim_hide(st, "idle"); + } + else rrdset_next(st); + + rrddim_set(st, "user", cp_time[0]); + rrddim_set(st, "nice", cp_time[1]); + rrddim_set(st, "system", cp_time[2]); + rrddim_set(st, "interrupt", cp_time[3]); + rrddim_set(st, "idle", cp_time[4]); + rrdset_done(st); + } + } + } + + // -------------------------------------------------------------------- + + if(likely(do_cpu_cores)) { + if (unlikely(CPUSTATES != 5)) { + error("FREEBSD: There are %d CPU states (5 was expected)", CPUSTATES); + do_cpu_cores = 0; + error("DISABLED: cpu.cpuXX"); + } else { + if (unlikely(GETSYSCTL("kern.smp.cpus", ncpus))) { + do_cpu_cores = 0; + error("DISABLED: cpu.cpuXX"); + } else { + pcpu_cp_time = realloc(pcpu_cp_time, sizeof(cp_time) * ncpus); + + for (i = 0; i < ncpus; i++) { + if (unlikely(getsysctl("kern.cp_times", pcpu_cp_time, sizeof(cp_time) * ncpus))) { + do_cpu_cores = 0; + error("DISABLED: cpu.cpuXX"); + break; + } + if (unlikely(ncpus > 9999)) { + error("FREEBSD: There are more than 4 digits in cpu cores number"); + do_cpu_cores = 0; + error("DISABLED: cpu.cpuXX"); + break; + } + snprintfz(cpuid, 8, "cpu%d", i); + + st = rrdset_find_bytype("cpu", cpuid); + if(unlikely(!st)) { + st = rrdset_create("cpu", cpuid, NULL, "utilization", "cpu.cpu", "Core utilization", "percentage", 1000, update_every, RRDSET_TYPE_STACKED); + + rrddim_add(st, "user", NULL, 1, 1, RRDDIM_PCENT_OVER_DIFF_TOTAL); + rrddim_add(st, "nice", NULL, 1, 1, RRDDIM_PCENT_OVER_DIFF_TOTAL); + rrddim_add(st, "system", NULL, 1, 1, RRDDIM_PCENT_OVER_DIFF_TOTAL); + rrddim_add(st, "interrupt", NULL, 1, 1, RRDDIM_PCENT_OVER_DIFF_TOTAL); + rrddim_add(st, "idle", NULL, 1, 1, RRDDIM_PCENT_OVER_DIFF_TOTAL); + rrddim_hide(st, "idle"); + } + else rrdset_next(st); + + rrddim_set(st, "user", pcpu_cp_time[i * 5 + 0]); + rrddim_set(st, "nice", pcpu_cp_time[i * 5 + 1]); + rrddim_set(st, "system", pcpu_cp_time[i * 5 + 2]); + rrddim_set(st, "interrupt", pcpu_cp_time[i * 5 + 3]); + rrddim_set(st, "idle", pcpu_cp_time[i * 5 + 4]); + rrdset_done(st); + } + } + } + } + + // -------------------------------------------------------------------- + + if(likely(do_interrupts)) { + if (unlikely(sysctlbyname("hw.intrcnt", NULL, &intrcnt_size, NULL, 0) == -1)) { + error("FREEBSD: sysctl(hw.intrcnt...) failed: %s", strerror(errno)); + do_interrupts = 0; + error("DISABLED: system.intr"); + } else { + nintr = intrcnt_size / sizeof(u_long); + intrcnt = realloc(intrcnt, nintr * sizeof(u_long)); + if (unlikely(getsysctl("hw.intrcnt", intrcnt, nintr * sizeof(u_long)))){ + do_interrupts = 0; + error("DISABLED: system.intr"); + } else { + for (i = 0; i < nintr; i++) + totalintr += intrcnt[i]; + + st = rrdset_find_bytype("system", "intr"); + if(unlikely(!st)) { + st = rrdset_create("system", "intr", NULL, "interrupts", NULL, "Total Device Interrupts", "interrupts/s", 900, update_every, RRDSET_TYPE_LINE); + st->isdetail = 1; + + rrddim_add(st, "interrupts", NULL, 1, 1, RRDDIM_INCREMENTAL); + } + else rrdset_next(st); + + rrddim_set(st, "interrupts", totalintr); + rrdset_done(st); + } + } + } + + // -------------------------------------------------------------------- + + if(likely(do_context)) { + if (unlikely(GETSYSCTL("vm.stats.sys.v_swtch", u_int_data))) { + do_context = 0; + error("DISABLED: system.ctxt"); + } else { + + st = rrdset_find_bytype("system", "ctxt"); + if(unlikely(!st)) { + st = rrdset_create("system", "ctxt", NULL, "processes", NULL, "CPU Context Switches", "context switches/s", 800, update_every, RRDSET_TYPE_LINE); + + rrddim_add(st, "switches", NULL, 1, 1, RRDDIM_INCREMENTAL); + } + else rrdset_next(st); + + rrddim_set(st, "switches", u_int_data); + rrdset_done(st); + } + } + + // -------------------------------------------------------------------- + + if(likely(do_forks)) { + if (unlikely(GETSYSCTL("vm.stats.vm.v_forks", u_int_data))) { + do_forks = 0; + error("DISABLED: system.forks"); + } else { + + st = rrdset_find_bytype("system", "forks"); + if(unlikely(!st)) { + st = rrdset_create("system", "forks", NULL, "processes", NULL, "Started Processes", "processes/s", 700, update_every, RRDSET_TYPE_LINE); + st->isdetail = 1; + + rrddim_add(st, "started", NULL, 1, 1, RRDDIM_INCREMENTAL); + } + else rrdset_next(st); + + rrddim_set(st, "started", u_int_data); + rrdset_done(st); + } + } + + return 0; +} diff --git a/src/main.c b/src/main.c index fab7799c..b9ab4ef3 100644 --- a/src/main.c +++ b/src/main.c @@ -45,12 +45,11 @@ struct netdata_static_thread { {"tc", "plugins", "tc", 1, NULL, NULL, tc_main}, {"idlejitter", "plugins", "idlejitter", 1, NULL, NULL, cpuidlejitter_main}, -#ifndef __FreeBSD__ +#ifndef __FreeBSD__ {"proc", "plugins", "proc", 1, NULL, NULL, proc_main}, #else - {"proc", "plugins", "proc", 1, NULL, NULL, freebsd_main}, + {"freebsd", "plugins", "freebsd", 1, NULL, NULL, freebsd_main}, #endif /* __FreeBSD__ */ - {"cgroups", "plugins", "cgroups", 1, NULL, NULL, cgroups_main}, {"check", "plugins", "checks", 0, NULL, NULL, checks_main}, {"backends", NULL, NULL, 1, NULL, NULL, backends_main}, @@ -463,15 +462,15 @@ int main(int argc, char **argv) debug_flags = strtoull(flags, NULL, 0); debug(D_OPTIONS, "Debug flags set to '0x%8llx'.", debug_flags); -#ifndef __FreeBSD__ if(debug_flags != 0) { struct rlimit rl = { RLIM_INFINITY, RLIM_INFINITY }; if(setrlimit(RLIMIT_CORE, &rl) != 0) error("Cannot request unlimited core dumps for debugging... Proceeding anyway..."); +#ifndef __FreeBSD__ prctl(PR_SET_DUMPABLE, 1, 0, 0, 0); - } #endif /* __FreeBSD__ */ + } // -------------------------------------------------------------------- @@ -640,16 +639,16 @@ int main(int argc, char **argv) // initialize the log files open_all_log_files(); -#ifndef __FreeBSD__ #ifdef NETDATA_INTERNAL_CHECKS if(debug_flags != 0) { struct rlimit rl = { RLIM_INFINITY, RLIM_INFINITY }; if(setrlimit(RLIMIT_CORE, &rl) != 0) error("Cannot request unlimited core dumps for debugging... Proceeding anyway..."); +#ifndef __FreeBSD__ prctl(PR_SET_DUMPABLE, 1, 0, 0, 0); +#endif /* __FreeBSD__ */ } #endif /* NETDATA_INTERNAL_CHECKS */ -#endif /* __FreeBSD__ */ // fork, switch user, create pid file, set process priority if(become_daemon(dont_fork, user) == -1) diff --git a/src/plugin_freebsd.c b/src/plugin_freebsd.c index 818acced..47a18613 100644 --- a/src/plugin_freebsd.c +++ b/src/plugin_freebsd.c @@ -17,59 +17,13 @@ void *freebsd_main(void *ptr) config_get_boolean("plugin:proc:/proc/net/dev:lo", "enabled", 0); config_get_boolean("plugin:proc:/proc/net/dev:fireqos_monitor", "enabled", 0); */ - + // when ZERO, attempt to do it - /* - int vdo_proc_net_dev = !config_get_boolean("plugin:proc", "/proc/net/dev", 1); - int vdo_proc_diskstats = !config_get_boolean("plugin:proc", "/proc/diskstats", 1); - int vdo_proc_net_snmp = !config_get_boolean("plugin:proc", "/proc/net/snmp", 1); - int vdo_proc_net_snmp6 = !config_get_boolean("plugin:proc", "/proc/net/snmp6", 1); - int vdo_proc_net_netstat = !config_get_boolean("plugin:proc", "/proc/net/netstat", 1); - int vdo_proc_net_stat_conntrack = !config_get_boolean("plugin:proc", "/proc/net/stat/conntrack", 1); - int vdo_proc_net_ip_vs_stats = !config_get_boolean("plugin:proc", "/proc/net/ip_vs/stats", 1); - int vdo_proc_net_stat_synproxy = !config_get_boolean("plugin:proc", "/proc/net/stat/synproxy", 1); - int vdo_proc_stat = !config_get_boolean("plugin:proc", "/proc/stat", 1); - int vdo_proc_meminfo = !config_get_boolean("plugin:proc", "/proc/meminfo", 1); - int vdo_proc_vmstat = !config_get_boolean("plugin:proc", "/proc/vmstat", 1); - int vdo_proc_net_rpc_nfs = !config_get_boolean("plugin:proc", "/proc/net/rpc/nfs", 1); - 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_proc_net_softnet_stat = !config_get_boolean("plugin:proc", "/proc/net/softnet_stat", 1); - int vdo_proc_loadavg = !config_get_boolean("plugin:proc", "/proc/loadavg", 1); - int vdo_ipc = !config_get_boolean("plugin:proc", "ipc", 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); - int vdo_proc_stat = !config_get_boolean("plugin:proc", "/proc/stat", 1); - int vdo_proc_loadavg = !config_get_boolean("plugin:proc", "/proc/loadavg", 1); + int vdo_cpu_netdata = !config_get_boolean("plugin:freebsd", "netdata server resources", 1); + int vdo_freebsd_sysctl = !config_get_boolean("plugin:freebsd", "sysctl", 1); // keep track of the time each module was called - /* - unsigned long long sutime_proc_net_dev = 0ULL; - unsigned long long sutime_proc_diskstats = 0ULL; - unsigned long long sutime_proc_net_snmp = 0ULL; - unsigned long long sutime_proc_net_snmp6 = 0ULL; - unsigned long long sutime_proc_net_netstat = 0ULL; - unsigned long long sutime_proc_net_stat_conntrack = 0ULL; - unsigned long long sutime_proc_net_ip_vs_stats = 0ULL; - unsigned long long sutime_proc_net_stat_synproxy = 0ULL; - unsigned long long sutime_proc_stat = 0ULL; - unsigned long long sutime_proc_meminfo = 0ULL; - unsigned long long sutime_proc_vmstat = 0ULL; - unsigned long long sutime_proc_net_rpc_nfs = 0ULL; - unsigned long long sutime_proc_net_rpc_nfsd = 0ULL; - unsigned long long sutime_proc_sys_kernel_random_entropy_avail = 0ULL; - unsigned long long sutime_proc_interrupts = 0ULL; - unsigned long long sutime_proc_softirqs = 0ULL; - unsigned long long sutime_proc_net_softnet_stat = 0ULL; - unsigned long long sutime_proc_loadavg = 0ULL; - unsigned long long sutime_ipc = 0ULL; - unsigned long long sutime_sys_kernel_mm_ksm = 0ULL; - */ - unsigned long long sutime_proc_stat = 0ULL; - unsigned long long sutime_proc_loadavg = 0ULL; + unsigned long long sutime_freebsd_sysctl = 0ULL; unsigned long long step = rrd_update_every * 1000000ULL; for(;;) { @@ -84,183 +38,12 @@ void *freebsd_main(void *ptr) if(unlikely(netdata_exit)) break; // BEGIN -- the job to be done - /* - - if(!vdo_sys_kernel_mm_ksm) { - debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_sys_kernel_mm_ksm()."); - - now = time_usec(); - vdo_sys_kernel_mm_ksm = do_sys_kernel_mm_ksm(rrd_update_every, (sutime_sys_kernel_mm_ksm > 0)?now - sutime_sys_kernel_mm_ksm:0ULL); - sutime_sys_kernel_mm_ksm = now; - } - if(unlikely(netdata_exit)) break; - - if(!vdo_proc_loadavg) { - debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_loadavg()."); - now = time_usec(); - vdo_proc_loadavg = do_proc_loadavg(rrd_update_every, (sutime_proc_loadavg > 0)?now - sutime_proc_loadavg:0ULL); - sutime_proc_loadavg = now; - } - if(unlikely(netdata_exit)) break; - - if(!vdo_ipc) { - debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_ipc()."); - now = time_usec(); - vdo_ipc = do_ipc(rrd_update_every, (sutime_ipc > 0)?now - sutime_ipc:0ULL); - sutime_ipc = now; - } - if(unlikely(netdata_exit)) break; - - if(!vdo_proc_interrupts) { - debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_interrupts()."); - now = time_usec(); - vdo_proc_interrupts = do_proc_interrupts(rrd_update_every, (sutime_proc_interrupts > 0)?now - sutime_proc_interrupts:0ULL); - sutime_proc_interrupts = now; - } - if(unlikely(netdata_exit)) break; - - if(!vdo_proc_softirqs) { - debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_softirqs()."); - now = time_usec(); - vdo_proc_softirqs = do_proc_softirqs(rrd_update_every, (sutime_proc_softirqs > 0)?now - sutime_proc_softirqs:0ULL); - sutime_proc_softirqs = now; - } - if(unlikely(netdata_exit)) break; - - if(!vdo_proc_net_softnet_stat) { - debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_net_softnet_stat()."); - now = time_usec(); - vdo_proc_net_softnet_stat = do_proc_net_softnet_stat(rrd_update_every, (sutime_proc_net_softnet_stat > 0)?now - sutime_proc_net_softnet_stat:0ULL); - sutime_proc_net_softnet_stat = now; - } - if(unlikely(netdata_exit)) break; - - if(!vdo_proc_sys_kernel_random_entropy_avail) { - debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_sys_kernel_random_entropy_avail()."); - now = time_usec(); - vdo_proc_sys_kernel_random_entropy_avail = do_proc_sys_kernel_random_entropy_avail(rrd_update_every, (sutime_proc_sys_kernel_random_entropy_avail > 0)?now - sutime_proc_sys_kernel_random_entropy_avail:0ULL); - sutime_proc_sys_kernel_random_entropy_avail = now; - } - if(unlikely(netdata_exit)) break; - - if(!vdo_proc_net_dev) { - debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_net_dev()."); - now = time_usec(); - vdo_proc_net_dev = do_proc_net_dev(rrd_update_every, (sutime_proc_net_dev > 0)?now - sutime_proc_net_dev:0ULL); - sutime_proc_net_dev = now; - } - if(unlikely(netdata_exit)) break; - - if(!vdo_proc_diskstats) { - debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_diskstats()."); - now = time_usec(); - vdo_proc_diskstats = do_proc_diskstats(rrd_update_every, (sutime_proc_diskstats > 0)?now - sutime_proc_diskstats:0ULL); - sutime_proc_diskstats = now; - } - if(unlikely(netdata_exit)) break; - - if(!vdo_proc_net_snmp) { - debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_net_snmp()."); - now = time_usec(); - vdo_proc_net_snmp = do_proc_net_snmp(rrd_update_every, (sutime_proc_net_snmp > 0)?now - sutime_proc_net_snmp:0ULL); - sutime_proc_net_snmp = now; - } - if(unlikely(netdata_exit)) break; - - if(!vdo_proc_net_snmp6) { - debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_net_snmp6()."); - now = time_usec(); - vdo_proc_net_snmp6 = do_proc_net_snmp6(rrd_update_every, (sutime_proc_net_snmp6 > 0)?now - sutime_proc_net_snmp6:0ULL); - sutime_proc_net_snmp6 = now; - } - if(unlikely(netdata_exit)) break; - - if(!vdo_proc_net_netstat) { - debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_net_netstat()."); - now = time_usec(); - vdo_proc_net_netstat = do_proc_net_netstat(rrd_update_every, (sutime_proc_net_netstat > 0)?now - sutime_proc_net_netstat:0ULL); - sutime_proc_net_netstat = now; - } - if(unlikely(netdata_exit)) break; - if(!vdo_proc_net_stat_conntrack) { - debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_net_stat_conntrack()."); + if(!vdo_freebsd_sysctl) { + debug(D_PROCNETDEV_LOOP, "FREEBSD: calling do_freebsd_sysctl()."); now = time_usec(); - vdo_proc_net_stat_conntrack = do_proc_net_stat_conntrack(rrd_update_every, (sutime_proc_net_stat_conntrack > 0)?now - sutime_proc_net_stat_conntrack:0ULL); - sutime_proc_net_stat_conntrack = now; - } - if(unlikely(netdata_exit)) break; - - if(!vdo_proc_net_ip_vs_stats) { - debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling vdo_proc_net_ip_vs_stats()."); - now = time_usec(); - vdo_proc_net_ip_vs_stats = do_proc_net_ip_vs_stats(rrd_update_every, (sutime_proc_net_ip_vs_stats > 0)?now - sutime_proc_net_ip_vs_stats:0ULL); - sutime_proc_net_ip_vs_stats = now; - } - if(unlikely(netdata_exit)) break; - - if(!vdo_proc_net_stat_synproxy) { - debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling vdo_proc_net_stat_synproxy()."); - now = time_usec(); - vdo_proc_net_stat_synproxy = do_proc_net_stat_synproxy(rrd_update_every, (sutime_proc_net_stat_synproxy > 0)?now - sutime_proc_net_stat_synproxy:0ULL); - sutime_proc_net_stat_synproxy = now; - } - if(unlikely(netdata_exit)) break; - - if(!vdo_proc_stat) { - debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_stat()."); - now = time_usec(); - vdo_proc_stat = do_proc_stat(rrd_update_every, (sutime_proc_stat > 0)?now - sutime_proc_stat:0ULL); - sutime_proc_stat = now; - } - if(unlikely(netdata_exit)) break; - - if(!vdo_proc_meminfo) { - debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling vdo_proc_meminfo()."); - now = time_usec(); - vdo_proc_meminfo = do_proc_meminfo(rrd_update_every, (sutime_proc_meminfo > 0)?now - sutime_proc_meminfo:0ULL); - sutime_proc_meminfo = now; - } - if(unlikely(netdata_exit)) break; - - if(!vdo_proc_vmstat) { - debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling vdo_proc_vmstat()."); - now = time_usec(); - vdo_proc_vmstat = do_proc_vmstat(rrd_update_every, (sutime_proc_vmstat > 0)?now - sutime_proc_vmstat:0ULL); - sutime_proc_vmstat = now; - } - if(unlikely(netdata_exit)) break; - - if(!vdo_proc_net_rpc_nfsd) { - debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_net_rpc_nfsd()."); - now = time_usec(); - vdo_proc_net_rpc_nfsd = do_proc_net_rpc_nfsd(rrd_update_every, (sutime_proc_net_rpc_nfsd > 0)?now - sutime_proc_net_rpc_nfsd:0ULL); - sutime_proc_net_rpc_nfsd = now; - } - if(unlikely(netdata_exit)) break; - - if(!vdo_proc_net_rpc_nfs) { - debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_net_rpc_nfs()."); - now = time_usec(); - vdo_proc_net_rpc_nfs = do_proc_net_rpc_nfs(rrd_update_every, (sutime_proc_net_rpc_nfs > 0)?now - sutime_proc_net_rpc_nfs:0ULL); - sutime_proc_net_rpc_nfs = now; - } - if(unlikely(netdata_exit)) break; - */ - - if(!vdo_proc_stat) { - debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_stat()."); - now = time_usec(); - vdo_proc_stat = do_proc_stat(rrd_update_every, (sutime_proc_stat > 0)?now - sutime_proc_stat:0ULL); - sutime_proc_stat = now; - } - if(unlikely(netdata_exit)) break; - - if(!vdo_proc_loadavg) { - debug(D_PROCNETDEV_LOOP, "PROCNETDEV: calling do_proc_loadavg()."); - now = time_usec(); - vdo_proc_loadavg = do_proc_loadavg(rrd_update_every, (sutime_proc_loadavg > 0)?now - sutime_proc_loadavg:0ULL); - sutime_proc_loadavg = now; + vdo_freebsd_sysctl = do_freebsd_sysctl(rrd_update_every, (sutime_freebsd_sysctl > 0)?now - sutime_freebsd_sysctl:0ULL); + sutime_freebsd_sysctl = now; } if(unlikely(netdata_exit)) break; @@ -285,14 +68,12 @@ int getsysctl(const char *name, void *ptr, size_t len) size_t nlen = len; if (unlikely(sysctlbyname(name, ptr, &nlen, NULL, 0) == -1)) { - error("FREEBSD: sysctl(%s...) failed: %s\n", name, - strerror(errno)); + error("FREEBSD: sysctl(%s...) failed: %s", name, strerror(errno)); return 1; } if (unlikely(nlen != len)) { - error("FREEBSD: sysctl(%s...) expected %lu, got %lu\n", - name, (unsigned long)len, (unsigned long)nlen); + error("FREEBSD: sysctl(%s...) expected %lu, got %lu", name, (unsigned long)len, (unsigned long)nlen); return 1; } return 0; -} \ No newline at end of file +} diff --git a/src/plugin_freebsd.h b/src/plugin_freebsd.h index 6279683e..ee432bfc 100644 --- a/src/plugin_freebsd.h +++ b/src/plugin_freebsd.h @@ -5,29 +5,8 @@ void *freebsd_main(void *ptr); -extern int getsysctl(const char *name, void *ptr, size_t len); +int getsysctl(const char *name, void *ptr, size_t len); -/* -extern int do_proc_net_dev(int update_every, unsigned long long dt); -extern int do_proc_diskstats(int update_every, unsigned long long dt); -extern int do_proc_net_snmp(int update_every, unsigned long long dt); -extern int do_proc_net_snmp6(int update_every, unsigned long long dt); -extern int do_proc_net_netstat(int update_every, unsigned long long dt); -extern int do_proc_net_stat_conntrack(int update_every, unsigned long long dt); -extern int do_proc_net_ip_vs_stats(int update_every, unsigned long long dt); -extern int do_proc_meminfo(int update_every, unsigned long long dt); -extern int do_proc_vmstat(int update_every, unsigned long long dt); -extern int do_proc_net_rpc_nfs(int update_every, unsigned long long dt); -extern int do_proc_net_rpc_nfsd(int update_every, unsigned long long dt); -extern int do_proc_sys_kernel_random_entropy_avail(int update_every, unsigned long long dt); -extern int do_proc_interrupts(int update_every, unsigned long long dt); -extern int do_proc_softirqs(int update_every, unsigned long long dt); -extern int do_sys_kernel_mm_ksm(int update_every, unsigned long long dt); -extern int do_proc_loadavg(int update_every, unsigned long long dt); -extern int do_proc_net_stat_synproxy(int update_every, unsigned long long dt); -extern int do_proc_net_softnet_stat(int update_every, unsigned long long dt); -*/ -extern int do_proc_stat(int update_every, unsigned long long dt); -extern int do_proc_loadavg(int update_every, unsigned long long dt); +extern int do_freebsd_sysctl(int update_every, unsigned long long dt); -#endif /* NETDATA_FREEBSD_PROC_H */ +#endif /* NETDATA_PLUGIN_FREEBSD_H */ -- 2.39.2