@cryptotaxi247 / netdata-1 / commits / 7e625be7f

Separate vm.stats.vm.v_pgfaults module

Vladimir Kobal committed Mar 9, 2017 at 17:49 UTC 7e625be7f6413059fd7176785758f22dfface48e
3 files changed +75 -57
src/freebsd_sysctl.c
+68 -56
@@ -729,23 +729,19 @@ int do_vm_swap_info(int update_every, usec_t dt) {
729 // system.ram
730
731 int do_system_ram(int update_every, usec_t dt) {
732 - static int mib_v_active_count[4] = {0, 0, 0, 0};
733 - static int mib_v_inactive_count[4] = {0, 0, 0, 0};
734 - static int mib_v_wire_count[4] = {0, 0, 0, 0};
735 - static int mib_v_cache_count[4] = {0, 0, 0, 0};
736 - static int mib_vfs_bufspace[2] = {0, 0};
737 - static int mib_v_free_count[4] = {0, 0, 0, 0};
732 + static int mib_active_count[4] = {0, 0, 0, 0}, mib_inactive_count[4] = {0, 0, 0, 0}, mib_wire_count[4] = {0, 0, 0, 0},
733 + mib_cache_count[4] = {0, 0, 0, 0}, mib_vfs_bufspace[2] = {0, 0}, mib_free_count[4] = {0, 0, 0, 0};
734 struct vmmeter vmmeter_data;
735 int vfs_bufspace_count;
736
741 - if (unlikely(GETSYSCTL_SIMPLE("vm.stats.vm.v_active_count", mib_v_active_count, vmmeter_data.v_active_count) ||
742 - GETSYSCTL_SIMPLE("vm.stats.vm.v_inactive_count", mib_v_inactive_count, vmmeter_data.v_inactive_count) ||
743 - GETSYSCTL_SIMPLE("vm.stats.vm.v_wire_count", mib_v_wire_count, vmmeter_data.v_wire_count) ||
737 + if (unlikely(GETSYSCTL_SIMPLE("vm.stats.vm.v_active_count", mib_active_count, vmmeter_data.v_active_count) ||
738 + GETSYSCTL_SIMPLE("vm.stats.vm.v_inactive_count", mib_inactive_count, vmmeter_data.v_inactive_count) ||
739 + GETSYSCTL_SIMPLE("vm.stats.vm.v_wire_count", mib_wire_count, vmmeter_data.v_wire_count) ||
740 #if __FreeBSD_version < 1200016
745 - GETSYSCTL_SIMPLE("vm.stats.vm.v_cache_count", mib_v_cache_count, vmmeter_data.v_cache_count) ||
741 + GETSYSCTL_SIMPLE("vm.stats.vm.v_cache_count", mib_cache_count, vmmeter_data.v_cache_count) ||
742 #endif
743 GETSYSCTL_SIMPLE("vfs.bufspace", mib_vfs_bufspace, vfs_bufspace_count) ||
748 - GETSYSCTL_SIMPLE("vm.stats.vm.v_free_count", mib_v_free_count, vmmeter_data.v_free_count))) {
744 + GETSYSCTL_SIMPLE("vm.stats.vm.v_free_count", mib_free_count, vmmeter_data.v_free_count))) {
745 error("DISABLED: system.ram chart");
746 error("DISABLED: System.ram module");
747 return 1;
@@ -800,8 +796,7 @@ int do_system_ram(int update_every, usec_t dt) {
796 // vm.stats.vm.v_swappgs
797
798 int do_vm_stats_sys_v_swappgs(int update_every, usec_t dt) {
803 - static int mib_swappgsin[4] = {0, 0, 0, 0};
804 - static int mib_swappgsout[4] = {0, 0, 0, 0};
799 + static int mib_swappgsin[4] = {0, 0, 0, 0}, mib_swappgsout[4] = {0, 0, 0, 0};
800 struct vmmeter vmmeter_data;
801
802 if (unlikely(GETSYSCTL_SIMPLE("vm.stats.vm.v_swappgsin", mib_swappgsin, vmmeter_data.v_swappgsin) ||
@@ -843,17 +838,69 @@ int do_vm_stats_sys_v_swappgs(int update_every, usec_t dt) {
838 }
839
840 // --------------------------------------------------------------------------------------------------------------------
846 -// old sources
841 +// vm.stats.vm.v_pgfaults
842 +
843 +int do_vm_stats_sys_v_pgfaults(int update_every, usec_t dt) {
844 + static int mib_vm_faults[4] = {0, 0, 0, 0}, mib_io_faults[4] = {0, 0, 0, 0}, mib_cow_faults[4] = {0, 0, 0, 0},
845 + mib_cow_optim[4] = {0, 0, 0, 0}, mib_intrans[4] = {0, 0, 0, 0};
846 + struct vmmeter vmmeter_data;
847
848 -// NEEDED BY: do_disk_io
849 -#define RRD_TYPE_DISK "disk"
848 + if (unlikely(GETSYSCTL_SIMPLE("vm.stats.vm.v_vm_faults", mib_vm_faults, vmmeter_data.v_vm_faults) ||
849 + GETSYSCTL_SIMPLE("vm.stats.vm.v_io_faults", mib_io_faults, vmmeter_data.v_io_faults) ||
850 + GETSYSCTL_SIMPLE("vm.stats.vm.v_cow_faults", mib_cow_faults, vmmeter_data.v_cow_faults) ||
851 + GETSYSCTL_SIMPLE("vm.stats.vm.v_cow_optim", mib_cow_optim, vmmeter_data.v_cow_optim) ||
852 + GETSYSCTL_SIMPLE("vm.stats.vm.v_intrans", mib_intrans, vmmeter_data.v_intrans))) {
853 + error("DISABLED: mem.pgfaults chart");
854 + error("DISABLED: vm.stats.vm.v_pgfaults module");
855 + return 1;
856 + } else {
857
851 -// NEEDED BY: do_bandwidth
852 -#define IFA_DATA(s) (((struct if_data *)ifa->ifa_data)->ifi_ ## s)
858 + // --------------------------------------------------------------------
859 +
860 + static RRDSET *st = NULL;
861 + static RRDDIM *rd_memory = NULL, *rd_io_requiring = NULL, *rd_cow = NULL,
862 + *rd_cow_optimized = NULL, *rd_in_transit = NULL;
863 +
864 + if (unlikely(!st)) {
865 + st = rrdset_create_localhost("mem",
866 + "pgfaults",
867 + NULL,
868 + "system",
869 + NULL,
870 + "Memory Page Faults",
871 + "page faults/s",
872 + 500,
873 + update_every,
874 + RRDSET_TYPE_LINE
875 + );
876 +
877 + rrdset_flag_set(st, RRDSET_FLAG_DETAIL);
878 +
879 + rd_memory = rrddim_add(st, "memory", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
880 + rd_io_requiring = rrddim_add(st, "io_requiring", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
881 + rd_cow = rrddim_add(st, "cow", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
882 + rd_cow_optimized = rrddim_add(st, "cow_optimized", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
883 + rd_in_transit = rrddim_add(st, "in_transit", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
884 + }
885 + else rrdset_next(st);
886 +
887 + rrddim_set_by_pointer(st, rd_memory, vmmeter_data.v_vm_faults);
888 + rrddim_set_by_pointer(st, rd_io_requiring, vmmeter_data.v_io_faults);
889 + rrddim_set_by_pointer(st, rd_cow, vmmeter_data.v_cow_faults);
890 + rrddim_set_by_pointer(st, rd_cow_optimized, vmmeter_data.v_cow_optim);
891 + rrddim_set_by_pointer(st, rd_in_transit, vmmeter_data.v_intrans);
892 + rrdset_done(st);
893 + }
894 +
895 + return 0;
896 +}
897 +
898 +// --------------------------------------------------------------------------------------------------------------------
899 +// old sources
900
901 int do_freebsd_sysctl_old(int update_every, usec_t dt) {
902 static int do_disk_io = -1,
856 - do_pgfaults = -1, do_ipc_semaphores = -1, do_ipc_shared_mem = -1, do_ipc_msg_queues = -1,
903 + do_ipc_semaphores = -1, do_ipc_shared_mem = -1, do_ipc_msg_queues = -1,
904 do_netisr = -1, do_netisr_per_core = -1, do_bandwidth = -1,
905 do_tcp_sockets = -1, do_tcp_packets = -1, do_tcp_errors = -1, do_tcp_handshake = -1,
906 do_ecn = -1, do_tcpext_syscookies = -1, do_tcpext_ofo = -1, do_tcpext_connaborts = -1,
@@ -865,7 +912,6 @@ int do_freebsd_sysctl_old(int update_every, usec_t dt) {
912
913 if (unlikely(do_uptime == -1)) {
914 do_disk_io = config_get_boolean("plugin:freebsd:sysctl", "stats for all disks", 1);
868 - do_pgfaults = config_get_boolean("plugin:freebsd:sysctl", "memory page faults", 1);
915 do_ipc_semaphores = config_get_boolean("plugin:freebsd:sysctl", "ipc semaphores", 1);
916 do_ipc_shared_mem = config_get_boolean("plugin:freebsd:sysctl", "ipc shared memory", 1);
917 do_ipc_msg_queues = config_get_boolean("plugin:freebsd:sysctl", "ipc message queues", 1);
@@ -914,10 +960,8 @@ int do_freebsd_sysctl_old(int update_every, usec_t dt) {
960 size_t size;
961 char title[4096 + 1];
962
917 - // NEEDED BY: do_context, do_forks
918 - u_int u_int_data;
919 -
963 // NEEDED BY: do_disk_io
964 + #define RRD_TYPE_DISK "disk"
965 #define BINTIME_SCALE 5.42101086242752217003726400434970855712890625e-17 // this is 1000/2^64
966 int numdevs;
967 static void *devstat_data = NULL;
@@ -982,6 +1026,7 @@ int do_freebsd_sysctl_old(int update_every, usec_t dt) {
1026 char netstat_cpuid[21]; // no more than 4 digits expected
1027
1028 // NEEDED BY: do_bandwidth
1029 + #define IFA_DATA(s) (((struct if_data *)ifa->ifa_data)->ifi_ ## s)
1030 struct ifaddrs *ifa, *ifap;
1031 struct iftot {
1032 u_long ift_ibytes;
@@ -1203,39 +1248,6 @@ int do_freebsd_sysctl_old(int update_every, usec_t dt) {
1248
1249 // --------------------------------------------------------------------
1250
1206 - if (likely(do_pgfaults)) {
1207 - if (unlikely(GETSYSCTL_BY_NAME("vm.stats.vm.v_vm_faults", vmmeter_data.v_vm_faults) ||
1208 - GETSYSCTL_BY_NAME("vm.stats.vm.v_io_faults", vmmeter_data.v_io_faults) ||
1209 - GETSYSCTL_BY_NAME("vm.stats.vm.v_cow_faults", vmmeter_data.v_cow_faults) ||
1210 - GETSYSCTL_BY_NAME("vm.stats.vm.v_cow_optim", vmmeter_data.v_cow_optim) ||
1211 - GETSYSCTL_BY_NAME("vm.stats.vm.v_intrans", vmmeter_data.v_intrans))) {
1212 - do_pgfaults = 0;
1213 - error("DISABLED: mem.pgfaults");
1214 - } else {
1215 - st = rrdset_find_localhost("mem.pgfaults");
1216 - if (unlikely(!st)) {
1217 - st = rrdset_create_localhost("mem", "pgfaults", NULL, "system", NULL, "Memory Page Faults", "page faults/s", 500, update_every, RRDSET_TYPE_LINE);
1218 - rrdset_flag_set(st, RRDSET_FLAG_DETAIL);
1219 -
1220 - rrddim_add(st, "memory", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
1221 - rrddim_add(st, "io_requiring", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
1222 - rrddim_add(st, "cow", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
1223 - rrddim_add(st, "cow_optimized", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
1224 - rrddim_add(st, "in_transit", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
1225 - }
1226 - else rrdset_next(st);
1227 -
1228 - rrddim_set(st, "memory", vmmeter_data.v_vm_faults);
1229 - rrddim_set(st, "io_requiring", vmmeter_data.v_io_faults);
1230 - rrddim_set(st, "cow", vmmeter_data.v_cow_faults);
1231 - rrddim_set(st, "cow_optimized", vmmeter_data.v_cow_optim);
1232 - rrddim_set(st, "in_transit", vmmeter_data.v_intrans);
1233 - rrdset_done(st);
1234 - }
1235 - }
1236 -
1237 - // --------------------------------------------------------------------
1238 -
1251 if (likely(do_ipc_semaphores)) {
1252 if (unlikely(GETSYSCTL_BY_NAME("kern.ipc.semmni", ipc_sem.semmni))) {
1253 do_ipc_semaphores = 0;
src/plugin_freebsd.c
+6 -1
@@ -19,7 +19,6 @@ static struct freebsd_module {
19 { .name = "vm.loadavg", .dim = "loadavg", .enabled = 1, .func = do_vm_loadavg },
20 { .name = "vm.vmtotal", .dim = "vmtotal", .enabled = 1, .func = do_vm_vmtotal },
21 { .name = "kern.cp_time", .dim = "cp_time", .enabled = 1, .func = do_kern_cp_time },
22 - { .name = "kern.cp_times", .dim = "cp_times", .enabled = 1, .func = do_kern_cp_times },
22 { .name = "hw.intrcnt", .dim = "hw_intr", .enabled = 1, .func = do_hw_intcnt },
23 { .name = "vm.stats.sys.v_intr", .dim = "dev_intr", .enabled = 1, .func = do_vm_stats_sys_v_intr },
24 { .name = "vm.stats.sys.v_soft", .dim = "soft_intr", .enabled = 1, .func = do_vm_stats_sys_v_soft },
@@ -29,6 +28,12 @@ static struct freebsd_module {
28 { .name = "system.ram", .dim = "system_ram", .enabled = 1, .func = do_system_ram },
29 { .name = "vm.stats.vm.v_swappgs", .dim = "swap_io", .enabled = 1, .func = do_vm_stats_sys_v_swappgs },
30
31 + // CPU metrics
32 + { .name = "kern.cp_times", .dim = "cp_times", .enabled = 1, .func = do_kern_cp_times },
33 +
34 + // memory metrics
35 + { .name = "vm.stats.vm.v_pgfaults", .dim = "pgfaults", .enabled = 1, .func = do_vm_stats_sys_v_pgfaults },
36 +
37 // the terminator of this array
38 { .name = NULL, .dim = NULL, .enabled = 0, .func = NULL }
39 };
src/plugin_freebsd.h
+1
@@ -19,6 +19,7 @@ extern int do_vm_stats_sys_v_forks(int update_every, usec_t dt);
19 extern int do_vm_swap_info(int update_every, usec_t dt);
20 extern int do_system_ram(int update_every, usec_t dt);
21 extern int do_vm_stats_sys_v_swappgs(int update_every, usec_t dt);
22 +extern int do_vm_stats_sys_v_pgfaults(int update_every, usec_t dt);
23
24 extern int do_freebsd_sysctl_old(int update_every, usec_t dt);
25