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