@cryptotaxi247 / netdata-1 / commits / 3a9ba6f4b

Add swap usage chart to macOS plugin

Vladimir Kobal committed Dec 28, 2016 at 05:03 UTC 3a9ba6f4bf5314beae83de6e5445abd0da3d03f1
2 files changed +29 -4
src/freebsd_sysctl.c
+3 -3
@@ -653,7 +653,7 @@ int do_freebsd_sysctl(int update_every, usec_t dt) {
653 if (unlikely(sysctlnametomib("vm.swap_info", mib, &mibsize) == -1)) {
654 error("FREEBSD: sysctl(%s...) failed: %s", "vm.swap_info", strerror(errno));
655 do_swap = 0;
656 - error("DISABLED: disk.io");
656 + error("DISABLED: system.swap");
657 } else {
658 for (i = 0; ; i++) {
659 mib[mibsize] = i;
@@ -662,12 +662,12 @@ int do_freebsd_sysctl(int update_every, usec_t dt) {
662 if (unlikely(errno != ENOENT)) {
663 error("FREEBSD: sysctl(%s...) failed: %s", "vm.swap_info", strerror(errno));
664 do_swap = 0;
665 - error("DISABLED: disk.io");
665 + error("DISABLED: system.swap");
666 } else {
667 if (unlikely(size != sizeof(xsw))) {
668 error("FREEBSD: sysctl(%s...) expected %lu, got %lu", "vm.swap_info", (unsigned long)sizeof(xsw), (unsigned long)size);
669 do_swap = 0;
670 - error("DISABLED: disk.io");
670 + error("DISABLED: system.swap");
671 } else break;
672 }
673 }
src/macos_sysctl.c
+26 -1
@@ -11,10 +11,11 @@ int getsysctl(const char *name, void *ptr, size_t len);
11 int do_macos_sysctl(int update_every, usec_t dt) {
12 (void)dt;
13
14 - static int do_loadavg = -1;
14 + static int do_loadavg = -1, do_swap = -1;
15
16 if (unlikely(do_loadavg == -1)) {
17 do_loadavg = config_get_boolean("plugin:macos:sysctl", "enable load average", 1);
18 + do_swap = config_get_boolean("plugin:macos:sysctl", "system swap", 1);
19 }
20
21 RRDSET *st;
@@ -28,6 +29,9 @@ int do_macos_sysctl(int update_every, usec_t dt) {
29 static usec_t last_loadavg_usec = 0;
30 struct loadavg sysload;
31
32 + // NEEDED BY: do_swap
33 + struct xsw_usage swap_usage;
34 +
35 if (last_loadavg_usec <= dt) {
36 if (likely(do_loadavg)) {
37 if (unlikely(GETSYSCTL("vm.loadavg", sysload))) {
@@ -55,6 +59,27 @@ int do_macos_sysctl(int update_every, usec_t dt) {
59 }
60 else last_loadavg_usec -= dt;
61
62 + if (likely(do_swap)) {
63 + if (unlikely(GETSYSCTL("vm.swapusage", swap_usage))) {
64 + do_swap = 0;
65 + error("DISABLED: system.swap");
66 + } else {
67 + st = rrdset_find("system.swap");
68 + if (unlikely(!st)) {
69 + st = rrdset_create("system", "swap", NULL, "swap", NULL, "System Swap", "MB", 201, update_every, RRDSET_TYPE_STACKED);
70 + st->isdetail = 1;
71 +
72 + rrddim_add(st, "free", NULL, 1, 1048576, RRDDIM_ABSOLUTE);
73 + rrddim_add(st, "used", NULL, 1, 1048576, RRDDIM_ABSOLUTE);
74 + }
75 + else rrdset_next(st);
76 +
77 + rrddim_set(st, "free", swap_usage.xsu_avail);
78 + rrddim_set(st, "used", swap_usage.xsu_used);
79 + rrdset_done(st);
80 + }
81 + }
82 +
83 return 0;
84 }
85