@cryptotaxi247 / netdata-1 / commits / 8010f3334

Separate vm.swap_info module

Vladimir Kobal committed Mar 9, 2017 at 15:41 UTC 8010f3334c859dcff0ab4954020e9ff9a15a3823
3 files changed +87 -59
src/freebsd_sysctl.c
+85 -59
@@ -534,6 +534,9 @@ int do_vm_stats_sys_v_soft(int update_every, usec_t dt) {
534 error("DISABLED: vm.stats.sys.v_soft module");
535 return 1;
536 } else {
537 +
538 + // --------------------------------------------------------------------
539 +
540 static RRDSET *st = NULL;
541 static RRDDIM *rd = NULL;
542
@@ -573,6 +576,9 @@ int do_vm_stats_sys_v_swtch(int update_every, usec_t dt) {
576 error("DISABLED: vm.stats.sys.v_swtch module");
577 return 1;
578 } else {
579 +
580 + // --------------------------------------------------------------------
581 +
582 static RRDSET *st = NULL;
583 static RRDDIM *rd = NULL;
584
@@ -612,6 +618,9 @@ int do_vm_stats_sys_v_forks(int update_every, usec_t dt) {
618 error("DISABLED: vm.stats.sys.v_swtch module");
619 return 1;
620 } else {
621 +
622 + // --------------------------------------------------------------------
623 +
624 static RRDSET *st = NULL;
625 static RRDDIM *rd = NULL;
626
@@ -641,6 +650,81 @@ int do_vm_stats_sys_v_forks(int update_every, usec_t dt) {
650 return 0;
651 }
652
653 +// --------------------------------------------------------------------------------------------------------------------
654 +// vm.swap_info
655 +
656 +int do_vm_swap_info(int update_every, usec_t dt) {
657 + static int mib[3] = {0, 0, 0};
658 +
659 + if (unlikely(getsysctl_mib("vm.swap_info", mib, 2))) {
660 + error("DISABLED: system.swap chart");
661 + error("DISABLED: vm.swap_info module");
662 + return 1;
663 + } else {
664 + int i;
665 + struct xswdev xsw;
666 + struct total_xsw {
667 + collected_number bytes_used;
668 + collected_number bytes_total;
669 + } total_xsw = {0, 0};
670 +
671 + for (i = 0; ; i++) {
672 + size_t size;
673 +
674 + mib[2] = i;
675 + size = sizeof(xsw);
676 + if (unlikely(sysctl(mib, 3, &xsw, &size, NULL, 0) == -1 )) {
677 + if (unlikely(errno != ENOENT)) {
678 + error("FREEBSD: sysctl(%s...) failed: %s", "vm.swap_info", strerror(errno));
679 + error("DISABLED: system.swap chart");
680 + error("DISABLED: vm.swap_info module");
681 + return 1;
682 + } else {
683 + if (unlikely(size != sizeof(xsw))) {
684 + error("FREEBSD: sysctl(%s...) expected %lu, got %lu", "vm.swap_info", (unsigned long)sizeof(xsw), (unsigned long)size);
685 + error("DISABLED: system.swap chart");
686 + error("DISABLED: vm.swap_info module");
687 + return 1;
688 + } else break;
689 + }
690 + }
691 + total_xsw.bytes_used += xsw.xsw_used;
692 + total_xsw.bytes_total += xsw.xsw_nblks;
693 + }
694 +
695 + // --------------------------------------------------------------------
696 +
697 + static RRDSET *st = NULL;
698 + static RRDDIM *rd_free = NULL, *rd_used = NULL;
699 +
700 + if (unlikely(!st)) {
701 + st = rrdset_create_localhost("system",
702 + "swap",
703 + NULL,
704 + "swap",
705 + NULL,
706 + "System Swap",
707 + "MB",
708 + 201,
709 + update_every,
710 + RRDSET_TYPE_STACKED
711 + );
712 +
713 + rrdset_flag_set(st, RRDSET_FLAG_DETAIL);
714 +
715 + rd_free = rrddim_add(st, "free", NULL, system_pagesize, MEGA_FACTOR, RRD_ALGORITHM_ABSOLUTE);
716 + rd_used = rrddim_add(st, "used", NULL, system_pagesize, MEGA_FACTOR, RRD_ALGORITHM_ABSOLUTE);
717 + }
718 + else rrdset_next(st);
719 +
720 + rrddim_set_by_pointer(st, rd_free, total_xsw.bytes_total - total_xsw.bytes_used);
721 + rrddim_set_by_pointer(st, rd_used, total_xsw.bytes_used);
722 + rrdset_done(st);
723 + }
724 +
725 + return 0;
726 +}
727 +
728 // --------------------------------------------------------------------------------------------------------------------
729 // old sources
730
@@ -651,7 +735,7 @@ int do_vm_stats_sys_v_forks(int update_every, usec_t dt) {
735 #define IFA_DATA(s) (((struct if_data *)ifa->ifa_data)->ifi_ ## s)
736
737 int do_freebsd_sysctl_old(int update_every, usec_t dt) {
654 - static int do_disk_io = -1, do_swap = -1, do_ram = -1, do_swapio = -1,
738 + static int do_disk_io = -1, do_ram = -1, do_swapio = -1,
739 do_pgfaults = -1, do_ipc_semaphores = -1, do_ipc_shared_mem = -1, do_ipc_msg_queues = -1,
740 do_netisr = -1, do_netisr_per_core = -1, do_bandwidth = -1,
741 do_tcp_sockets = -1, do_tcp_packets = -1, do_tcp_errors = -1, do_tcp_handshake = -1,
@@ -664,7 +748,6 @@ int do_freebsd_sysctl_old(int update_every, usec_t dt) {
748
749 if (unlikely(do_uptime == -1)) {
750 do_disk_io = config_get_boolean("plugin:freebsd:sysctl", "stats for all disks", 1);
667 - do_swap = config_get_boolean("plugin:freebsd:sysctl", "system swap", 1);
751 do_ram = config_get_boolean("plugin:freebsd:sysctl", "system ram", 1);
752 do_swapio = config_get_boolean("plugin:freebsd:sysctl", "swap i/o", 1);
753 do_pgfaults = config_get_boolean("plugin:freebsd:sysctl", "memory page faults", 1);
@@ -740,15 +823,6 @@ int do_freebsd_sysctl_old(int update_every, usec_t dt) {
823 collected_number busy_time_ms;
824 } prev_dstat;
825
743 - // NEEDED BY: do_swap
744 - size_t mibsize;
745 - int mib[3]; // CTL_MAXNAME = 24 maximum mib components (sysctl.h)
746 - struct xswdev xsw;
747 - struct total_xsw {
748 - collected_number bytes_used;
749 - collected_number bytes_total;
750 - } total_xsw = {0, 0};
751 -
826 // NEEDED BY: do_swapio, do_ram
827 struct vmmeter vmmeter_data;
828
@@ -1017,54 +1091,6 @@ int do_freebsd_sysctl_old(int update_every, usec_t dt) {
1091
1092 // --------------------------------------------------------------------
1093
1020 -
1021 - if (likely(do_swap)) {
1022 - mibsize = sizeof mib / sizeof mib[0];
1023 - if (unlikely(sysctlnametomib("vm.swap_info", mib, &mibsize) == -1)) {
1024 - error("FREEBSD: sysctl(%s...) failed: %s", "vm.swap_info", strerror(errno));
1025 - do_swap = 0;
1026 - error("DISABLED: system.swap");
1027 - } else {
1028 - for (i = 0; ; i++) {
1029 - mib[mibsize] = i;
1030 - size = sizeof(xsw);
1031 - if (unlikely(sysctl(mib, mibsize + 1, &xsw, &size, NULL, 0) == -1 )) {
1032 - if (unlikely(errno != ENOENT)) {
1033 - error("FREEBSD: sysctl(%s...) failed: %s", "vm.swap_info", strerror(errno));
1034 - do_swap = 0;
1035 - error("DISABLED: system.swap");
1036 - } else {
1037 - if (unlikely(size != sizeof(xsw))) {
1038 - error("FREEBSD: sysctl(%s...) expected %lu, got %lu", "vm.swap_info", (unsigned long)sizeof(xsw), (unsigned long)size);
1039 - do_swap = 0;
1040 - error("DISABLED: system.swap");
1041 - } else break;
1042 - }
1043 - }
1044 - total_xsw.bytes_used += xsw.xsw_used;
1045 - total_xsw.bytes_total += xsw.xsw_nblks;
1046 - }
1047 -
1048 - if (likely(do_swap)) {
1049 - st = rrdset_find_localhost("system.swap");
1050 - if (unlikely(!st)) {
1051 - st = rrdset_create_localhost("system", "swap", NULL, "swap", NULL, "System Swap", "MB", 201, update_every, RRDSET_TYPE_STACKED);
1052 - rrdset_flag_set(st, RRDSET_FLAG_DETAIL);
1053 -
1054 - rrddim_add(st, "free", NULL, system_pagesize, MEGA_FACTOR, RRD_ALGORITHM_ABSOLUTE);
1055 - rrddim_add(st, "used", NULL, system_pagesize, MEGA_FACTOR, RRD_ALGORITHM_ABSOLUTE);
1056 - }
1057 - else rrdset_next(st);
1058 -
1059 - rrddim_set(st, "used", total_xsw.bytes_used);
1060 - rrddim_set(st, "free", total_xsw.bytes_total - total_xsw.bytes_used);
1061 - rrdset_done(st);
1062 - }
1063 - }
1064 - }
1065 -
1066 - // --------------------------------------------------------------------
1067 -
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) ||
src/plugin_freebsd.c
+1
@@ -25,6 +25,7 @@ static struct freebsd_module {
25 { .name = "vm.stats.sys.v_soft", .dim = "soft_intr", .enabled = 1, .func = do_vm_stats_sys_v_soft },
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
30 // the terminator of this array
31 { .name = NULL, .dim = NULL, .enabled = 0, .func = NULL }
src/plugin_freebsd.h
+1
@@ -16,6 +16,7 @@ extern int do_vm_stats_sys_v_intr(int update_every, usec_t dt);
16 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
21 extern int do_freebsd_sysctl_old(int update_every, usec_t dt);
22