Separate system.ram module
Vladimir Kobal committed
Mar 9, 2017 at 16:41 UTC
ab59b2ea28b911faee23182c468a0741b7eb7ceb
3 files changed
+74
-46
src/freebsd_sysctl.c
+72
-46
@@ -725,6 +725,77 @@ int do_vm_swap_info(int update_every, usec_t dt) {
725
return 0;
726
}
727
728
+// --------------------------------------------------------------------------------------------------------------------
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};
738
+ struct vmmeter vmmeter_data;
739
+ int vfs_bufspace_count;
740
+
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) ||
744
+#if __FreeBSD_version < 1200016
745
+ GETSYSCTL_SIMPLE("vm.stats.vm.v_cache_count", mib_v_cache_count, vmmeter_data.v_cache_count) ||
746
+#endif
747
+ 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))) {
749
+ error("DISABLED: system.ram chart");
750
+ error("DISABLED: System.ram module");
751
+ return 1;
752
+ } else {
753
+
754
+ // --------------------------------------------------------------------
755
+
756
+ static RRDSET *st = NULL;
757
+ static RRDDIM *rd_free = NULL, *rd_active = NULL, *rd_inactive = NULL,
758
+ *rd_wired = NULL, *rd_cache = NULL, *rd_buffers = NULL;
759
+
760
+ st = rrdset_find_localhost("system.ram");
761
+ if (unlikely(!st)) {
762
+ st = rrdset_create_localhost("system",
763
+ "ram",
764
+ NULL,
765
+ "ram",
766
+ NULL,
767
+ "System RAM",
768
+ "MB",
769
+ 200,
770
+ update_every,
771
+ RRDSET_TYPE_STACKED
772
+ );
773
+
774
+ rd_free = rrddim_add(st, "free", NULL, system_pagesize, MEGA_FACTOR, RRD_ALGORITHM_ABSOLUTE);
775
+ rd_active = rrddim_add(st, "active", NULL, system_pagesize, MEGA_FACTOR, RRD_ALGORITHM_ABSOLUTE);
776
+ rd_inactive = rrddim_add(st, "inactive", NULL, system_pagesize, MEGA_FACTOR, RRD_ALGORITHM_ABSOLUTE);
777
+ rd_wired = rrddim_add(st, "wired", NULL, system_pagesize, MEGA_FACTOR, RRD_ALGORITHM_ABSOLUTE);
778
+#if __FreeBSD_version < 1200016
779
+ rd_cache = rrddim_add(st, "cache", NULL, system_pagesize, MEGA_FACTOR, RRD_ALGORITHM_ABSOLUTE);
780
+#endif
781
+ rd_buffers = rrddim_add(st, "buffers", NULL, 1, MEGA_FACTOR, RRD_ALGORITHM_ABSOLUTE);
782
+ }
783
+ else rrdset_next(st);
784
+
785
+ rrddim_set_by_pointer(st, rd_free, vmmeter_data.v_free_count);
786
+ rrddim_set_by_pointer(st, rd_active, vmmeter_data.v_active_count);
787
+ rrddim_set_by_pointer(st, rd_inactive, vmmeter_data.v_inactive_count);
788
+ rrddim_set_by_pointer(st, rd_wired, vmmeter_data.v_wire_count);
789
+#if __FreeBSD_version < 1200016
790
+ rrddim_set_by_pointer(st, rd_cache, vmmeter_data.v_cache_count);
791
+#endif
792
+ rrddim_set_by_pointer(st, rd_buffers, vfs_bufspace_count);
793
+ rrdset_done(st);
794
+ }
795
+
796
+ return 0;
797
+}
798
+
799
// --------------------------------------------------------------------------------------------------------------------
800
// old sources
801
@@ -735,7 +806,7 @@ int do_vm_swap_info(int update_every, usec_t dt) {
806
#define IFA_DATA(s) (((struct if_data *)ifa->ifa_data)->ifi_ ## s)
807
808
int do_freebsd_sysctl_old(int update_every, usec_t dt) {
738
- static int do_disk_io = -1, do_ram = -1, do_swapio = -1,
809
+ static int do_disk_io = -1, do_swapio = -1,
810
do_pgfaults = -1, do_ipc_semaphores = -1, do_ipc_shared_mem = -1, do_ipc_msg_queues = -1,
811
do_netisr = -1, do_netisr_per_core = -1, do_bandwidth = -1,
812
do_tcp_sockets = -1, do_tcp_packets = -1, do_tcp_errors = -1, do_tcp_handshake = -1,
@@ -748,7 +819,6 @@ int do_freebsd_sysctl_old(int update_every, usec_t dt) {
819
820
if (unlikely(do_uptime == -1)) {
821
do_disk_io = config_get_boolean("plugin:freebsd:sysctl", "stats for all disks", 1);
751
- do_ram = config_get_boolean("plugin:freebsd:sysctl", "system ram", 1);
822
do_swapio = config_get_boolean("plugin:freebsd:sysctl", "swap i/o", 1);
823
do_pgfaults = config_get_boolean("plugin:freebsd:sysctl", "memory page faults", 1);
824
do_ipc_semaphores = config_get_boolean("plugin:freebsd:sysctl", "ipc semaphores", 1);
@@ -826,9 +896,6 @@ int do_freebsd_sysctl_old(int update_every, usec_t dt) {
896
// NEEDED BY: do_swapio, do_ram
897
struct vmmeter vmmeter_data;
898
829
- // NEEDED BY: do_ram
830
- int vfs_bufspace_count;
831
-
899
// NEEDED BY: do_ipc_semaphores
900
struct ipc_sem {
901
int semmni;
@@ -1091,47 +1158,6 @@ int do_freebsd_sysctl_old(int update_every, usec_t dt) {
1158
1159
// --------------------------------------------------------------------
1160
1094
- if (likely(do_ram)) {
1095
- if (unlikely(GETSYSCTL_BY_NAME("vm.stats.vm.v_active_count", vmmeter_data.v_active_count) ||
1096
- GETSYSCTL_BY_NAME("vm.stats.vm.v_inactive_count", vmmeter_data.v_inactive_count) ||
1097
- GETSYSCTL_BY_NAME("vm.stats.vm.v_wire_count", vmmeter_data.v_wire_count) ||
1098
-#if __FreeBSD_version < 1200016
1099
- GETSYSCTL_BY_NAME("vm.stats.vm.v_cache_count", vmmeter_data.v_cache_count) ||
1100
-#endif
1101
- GETSYSCTL_BY_NAME("vfs.bufspace", vfs_bufspace_count) ||
1102
- GETSYSCTL_BY_NAME("vm.stats.vm.v_free_count", vmmeter_data.v_free_count))) {
1103
- do_ram = 0;
1104
- error("DISABLED: system.ram");
1105
- } else {
1106
- st = rrdset_find_localhost("system.ram");
1107
- if (unlikely(!st)) {
1108
- st = rrdset_create_localhost("system", "ram", NULL, "ram", NULL, "System RAM", "MB", 200, update_every, RRDSET_TYPE_STACKED);
1109
-
1110
- rrddim_add(st, "active", NULL, system_pagesize, MEGA_FACTOR, RRD_ALGORITHM_ABSOLUTE);
1111
- rrddim_add(st, "inactive", NULL, system_pagesize, MEGA_FACTOR, RRD_ALGORITHM_ABSOLUTE);
1112
- rrddim_add(st, "wired", NULL, system_pagesize, MEGA_FACTOR, RRD_ALGORITHM_ABSOLUTE);
1113
-#if __FreeBSD_version < 1200016
1114
- rrddim_add(st, "cache", NULL, system_pagesize, MEGA_FACTOR, RRD_ALGORITHM_ABSOLUTE);
1115
-#endif
1116
- rrddim_add(st, "buffers", NULL, 1, MEGA_FACTOR, RRD_ALGORITHM_ABSOLUTE);
1117
- rrddim_add(st, "free", NULL, system_pagesize, MEGA_FACTOR, RRD_ALGORITHM_ABSOLUTE);
1118
- }
1119
- else rrdset_next(st);
1120
-
1121
- rrddim_set(st, "active", vmmeter_data.v_active_count);
1122
- rrddim_set(st, "inactive", vmmeter_data.v_inactive_count);
1123
- rrddim_set(st, "wired", vmmeter_data.v_wire_count);
1124
-#if __FreeBSD_version < 1200016
1125
- rrddim_set(st, "cache", vmmeter_data.v_cache_count);
1126
-#endif
1127
- rrddim_set(st, "buffers", vfs_bufspace_count);
1128
- rrddim_set(st, "free", vmmeter_data.v_free_count);
1129
- rrdset_done(st);
1130
- }
1131
- }
1132
-
1133
- // --------------------------------------------------------------------
1134
-
1161
if (likely(do_swapio)) {
1162
if (unlikely(GETSYSCTL_BY_NAME("vm.stats.vm.v_swappgsin", vmmeter_data.v_swappgsin) || GETSYSCTL_BY_NAME("vm.stats.vm.v_swappgsout", vmmeter_data.v_swappgsout))) {
1163
do_swapio = 0;
src/plugin_freebsd.c
+1
@@ -26,6 +26,7 @@ static struct freebsd_module {
26
{ .name = "vm.stats.sys.v_swtch", .dim = "context_swtch", .enabled = 1, .func = do_vm_stats_sys_v_swtch },
27
{ .name = "vm.stats.vm.v_forks", .dim = "forks", .enabled = 1, .func = do_vm_stats_sys_v_forks },
28
{ .name = "vm.swap_info", .dim = "swap", .enabled = 1, .func = do_vm_swap_info },
29
+ { .name = "system.ram", .dim = "system_ram", .enabled = 1, .func = do_system_ram },
30
31
// the terminator of this array
32
{ .name = NULL, .dim = NULL, .enabled = 0, .func = NULL }
src/plugin_freebsd.h
+1
@@ -17,6 +17,7 @@ extern int do_vm_stats_sys_v_soft(int update_every, usec_t dt);
17
extern int do_vm_stats_sys_v_swtch(int update_every, usec_t dt);
18
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
22
extern int do_freebsd_sysctl_old(int update_every, usec_t dt);
23