From a7fe8a2acaf490ce7de877cbc5a808cf816f6710 Mon Sep 17 00:00:00 2001 From: Vladimir Kobal Date: Thu, 9 Mar 2017 02:22:27 +0200 Subject: [PATCH] Separate vm.stats.sys.v_forks module --- src/freebsd_sysctl.c | 67 +++++++++++++++++++++++++++----------------- src/plugin_freebsd.c | 9 +++--- src/plugin_freebsd.h | 2 ++ 3 files changed, 49 insertions(+), 29 deletions(-) diff --git a/src/freebsd_sysctl.c b/src/freebsd_sysctl.c index 4f1e35fa..778f0352 100644 --- a/src/freebsd_sysctl.c +++ b/src/freebsd_sysctl.c @@ -576,7 +576,6 @@ int do_vm_stats_sys_v_swtch(int update_every, usec_t dt) { static RRDSET *st = NULL; static RRDDIM *rd = NULL; - st = rrdset_find_bytype_localhost("system", "ctxt"); if (unlikely(!st)) { st = rrdset_create_localhost("system", "ctxt", @@ -601,6 +600,47 @@ int do_vm_stats_sys_v_swtch(int update_every, usec_t dt) { return 0; } +// -------------------------------------------------------------------------------------------------------------------- +// vm.stats.vm.v_forks + +int do_vm_stats_sys_v_forks(int update_every, usec_t dt) { + static int mib[4] = {0, 0, 0, 0}; + u_int forks_number; + + if (unlikely(GETSYSCTL_SIMPLE("vm.stats.vm.v_forks", mib, forks_number))) { + error("DISABLED: system.forks chart"); + error("DISABLED: vm.stats.sys.v_swtch module"); + return 1; + } else { + static RRDSET *st = NULL; + static RRDDIM *rd = NULL; + + if (unlikely(!st)) { + st = rrdset_create_localhost("system", + "forks", + NULL, + "processes", + NULL, + "Started Processes", + "processes/s", + 700, + update_every, + RRDSET_TYPE_LINE + ); + + rrdset_flag_set(st, RRDSET_FLAG_DETAIL); + + rd = rrddim_add(st, "started", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL); + } + else rrdset_next(st); + + rrddim_set_by_pointer(st, rd, forks_number); + rrdset_done(st); + } + + return 0; +} + // -------------------------------------------------------------------------------------------------------------------- // old sources @@ -611,7 +651,7 @@ int do_vm_stats_sys_v_swtch(int update_every, usec_t dt) { #define IFA_DATA(s) (((struct if_data *)ifa->ifa_data)->ifi_ ## s) int do_freebsd_sysctl_old(int update_every, usec_t dt) { - static int do_forks = -1, do_disk_io = -1, do_swap = -1, do_ram = -1, do_swapio = -1, + static int do_disk_io = -1, do_swap = -1, do_ram = -1, do_swapio = -1, do_pgfaults = -1, do_ipc_semaphores = -1, do_ipc_shared_mem = -1, do_ipc_msg_queues = -1, do_netisr = -1, do_netisr_per_core = -1, do_bandwidth = -1, do_tcp_sockets = -1, do_tcp_packets = -1, do_tcp_errors = -1, do_tcp_handshake = -1, @@ -623,7 +663,6 @@ int do_freebsd_sysctl_old(int update_every, usec_t dt) { do_icmp6_neighbor = -1, do_icmp6_types = -1, do_space = -1, do_inodes = -1, do_uptime = -1; if (unlikely(do_uptime == -1)) { - do_forks = config_get_boolean("plugin:freebsd:sysctl", "processes started", 1); do_disk_io = config_get_boolean("plugin:freebsd:sysctl", "stats for all disks", 1); do_swap = config_get_boolean("plugin:freebsd:sysctl", "system swap", 1); do_ram = config_get_boolean("plugin:freebsd:sysctl", "system ram", 1); @@ -800,28 +839,6 @@ int do_freebsd_sysctl_old(int update_every, usec_t dt) { // -------------------------------------------------------------------- - if (likely(do_forks)) { - if (unlikely(GETSYSCTL_BY_NAME("vm.stats.vm.v_forks", u_int_data))) { - do_forks = 0; - error("DISABLED: system.forks"); - } else { - - st = rrdset_find_bytype_localhost("system", "forks"); - if (unlikely(!st)) { - st = rrdset_create_localhost("system", "forks", NULL, "processes", NULL, "Started Processes", "processes/s", 700, update_every, RRDSET_TYPE_LINE); - rrdset_flag_set(st, RRDSET_FLAG_DETAIL); - - rrddim_add(st, "started", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL); - } - else rrdset_next(st); - - rrddim_set(st, "started", u_int_data); - rrdset_done(st); - } - } - - // -------------------------------------------------------------------- - if (likely(do_disk_io)) { if (unlikely(GETSYSCTL_BY_NAME("kern.devstat.numdevs", numdevs))) { do_disk_io = 0; diff --git a/src/plugin_freebsd.c b/src/plugin_freebsd.c index 3b1110a6..31d632b6 100644 --- a/src/plugin_freebsd.c +++ b/src/plugin_freebsd.c @@ -20,10 +20,11 @@ static struct freebsd_module { { .name = "vm.vmtotal", .dim = "vmtotal", .enabled = 1, .func = do_vm_vmtotal }, { .name = "kern.cp_time", .dim = "cp_time", .enabled = 1, .func = do_kern_cp_time }, { .name = "kern.cp_times", .dim = "cp_times", .enabled = 1, .func = do_kern_cp_times }, - { .name = "hw.intrcnt", .dim = "hw_intrcnt", .enabled = 1, .func = do_hw_intcnt }, - { .name = "vm.stats.sys.v_intr", .dim = "dev_intrcnt", .enabled = 1, .func = do_vm_stats_sys_v_intr }, - { .name = "vm.stats.sys.v_soft", .dim = "dev_intrcnt", .enabled = 1, .func = do_vm_stats_sys_v_soft }, - { .name = "vm.stats.sys.v_swtch", .dim = "dev_intrcnt", .enabled = 1, .func = do_vm_stats_sys_v_swtch }, + { .name = "hw.intrcnt", .dim = "hw_intr", .enabled = 1, .func = do_hw_intcnt }, + { .name = "vm.stats.sys.v_intr", .dim = "dev_intr", .enabled = 1, .func = do_vm_stats_sys_v_intr }, + { .name = "vm.stats.sys.v_soft", .dim = "soft_intr", .enabled = 1, .func = do_vm_stats_sys_v_soft }, + { .name = "vm.stats.sys.v_swtch", .dim = "context_swtch", .enabled = 1, .func = do_vm_stats_sys_v_swtch }, + { .name = "vm.stats.vm.v_forks", .dim = "forks", .enabled = 1, .func = do_vm_stats_sys_v_forks }, // the terminator of this array { .name = NULL, .dim = NULL, .enabled = 0, .func = NULL } diff --git a/src/plugin_freebsd.h b/src/plugin_freebsd.h index 6ad083fb..3ea30559 100644 --- a/src/plugin_freebsd.h +++ b/src/plugin_freebsd.h @@ -15,6 +15,8 @@ extern int do_hw_intcnt(int update_every, usec_t dt); extern int do_vm_stats_sys_v_intr(int update_every, usec_t dt); extern int do_vm_stats_sys_v_soft(int update_every, usec_t dt); extern int do_vm_stats_sys_v_swtch(int update_every, usec_t dt); +extern int do_vm_stats_sys_v_forks(int update_every, usec_t dt); + extern int do_freebsd_sysctl_old(int update_every, usec_t dt); #define GETSYSCTL_MIB(name, mib) getsysctl_mib(name, mib, sizeof(mib)/sizeof(int)) -- 2.39.2