@cryptotaxi247 / netdata-1 / commits / afb65dc13

Separate kern.ipc.shm module

Vladimir Kobal committed Mar 9, 2017 at 18:51 UTC afb65dc134513bdc9220d332d534f8f53cedf434
3 files changed +91 -59
src/freebsd_sysctl.c
+89 -59
@@ -982,12 +982,100 @@ int do_kern_ipc_sem(int update_every, usec_t dt) {
982 return 0;
983 }
984
985 +// --------------------------------------------------------------------------------------------------------------------
986 +// kern.ipc.shm
987 +
988 +int do_kern_ipc_shm(int update_every, usec_t dt) {
989 + static int mib_shmmni[3] = {0, 0, 0}, mib_shmsegs[3] = {0, 0, 0};
990 + struct ipc_shm {
991 + u_long shmmni;
992 + collected_number segs;
993 + collected_number segsize;
994 + } ipc_shm = {0, 0, 0};
995 +
996 + if (unlikely(GETSYSCTL_SIMPLE("kern.ipc.shmmni", mib_shmmni, ipc_shm.shmmni))) {
997 + error("DISABLED: system.ipc_shared_mem_segs chart");
998 + error("DISABLED: system.ipc_shared_mem_size chart");
999 + error("DISABLED: kern.ipc.shmmodule");
1000 + return 1;
1001 + } else {
1002 + static struct shmid_kernel *ipc_shm_data = NULL;
1003 +
1004 + ipc_shm_data = reallocz(ipc_shm_data, sizeof(struct shmid_kernel) * ipc_shm.shmmni);
1005 + if (unlikely(
1006 + GETSYSCTL_WSIZE("kern.ipc.shmsegs", mib_shmsegs, ipc_shm_data, sizeof(struct shmid_kernel) * ipc_shm.shmmni))) {
1007 + error("DISABLED: system.ipc_shared_mem_segs chart");
1008 + error("DISABLED: system.ipc_shared_mem_size chart");
1009 + error("DISABLED: kern.ipc.shmmodule");
1010 + return 1;
1011 + } else {
1012 + int i;
1013 +
1014 + for (i = 0; i < ipc_shm.shmmni; i++) {
1015 + if (unlikely(ipc_shm_data[i].u.shm_perm.mode & 0x0800)) {
1016 + ipc_shm.segs += 1;
1017 + ipc_shm.segsize += ipc_shm_data[i].u.shm_segsz;
1018 + }
1019 + }
1020 +
1021 + // --------------------------------------------------------------------
1022 +
1023 + static RRDSET *st_segs = NULL, *st_size = NULL;
1024 + static RRDDIM *rd_segments = NULL, *rd_allocated = NULL;
1025 +
1026 + if (unlikely(!st_segs)) {
1027 + st_segs = rrdset_create_localhost("system",
1028 + "ipc_shared_mem_segs",
1029 + NULL,
1030 + "ipc shared memory",
1031 + NULL,
1032 + "IPC Shared Memory Segments",
1033 + "segments",
1034 + 1000,
1035 + localhost->rrd_update_every,
1036 + RRDSET_TYPE_AREA
1037 + );
1038 +
1039 + rd_segments = rrddim_add(st_segs, "segments", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
1040 + }
1041 + else rrdset_next(st_segs);
1042 +
1043 + rrddim_set_by_pointer(st_segs, rd_segments, ipc_shm.segs);
1044 + rrdset_done(st_segs);
1045 +
1046 + // --------------------------------------------------------------------
1047 +
1048 + if (unlikely(!st_size)) {
1049 + st_size = rrdset_create_localhost("system",
1050 + "ipc_shared_mem_size",
1051 + NULL,
1052 + "ipc shared memory",
1053 + NULL,
1054 + "IPC Shared Memory Segments Size",
1055 + "kilobytes",
1056 + 1000,
1057 + localhost->rrd_update_every,
1058 + RRDSET_TYPE_AREA
1059 + );
1060 +
1061 + rd_allocated = rrddim_add(st_size, "allocated", NULL, 1, KILO_FACTOR, RRD_ALGORITHM_ABSOLUTE);
1062 + }
1063 + else rrdset_next(st_size);
1064 +
1065 + rrddim_set_by_pointer(st_size, rd_allocated, ipc_shm.segsize);
1066 + rrdset_done(st_size);
1067 + }
1068 + }
1069 +
1070 + return 0;
1071 +}
1072 +
1073 // --------------------------------------------------------------------------------------------------------------------
1074 // old sources
1075
1076 int do_freebsd_sysctl_old(int update_every, usec_t dt) {
1077 static int do_disk_io = -1,
990 - do_ipc_shared_mem = -1, do_ipc_msg_queues = -1,
1078 + do_ipc_msg_queues = -1,
1079 do_netisr = -1, do_netisr_per_core = -1, do_bandwidth = -1,
1080 do_tcp_sockets = -1, do_tcp_packets = -1, do_tcp_errors = -1, do_tcp_handshake = -1,
1081 do_ecn = -1, do_tcpext_syscookies = -1, do_tcpext_ofo = -1, do_tcpext_connaborts = -1,
@@ -999,7 +1087,6 @@ int do_freebsd_sysctl_old(int update_every, usec_t dt) {
1087
1088 if (unlikely(do_uptime == -1)) {
1089 do_disk_io = config_get_boolean("plugin:freebsd:sysctl", "stats for all disks", 1);
1002 - do_ipc_shared_mem = config_get_boolean("plugin:freebsd:sysctl", "ipc shared memory", 1);
1090 do_ipc_msg_queues = config_get_boolean("plugin:freebsd:sysctl", "ipc message queues", 1);
1091 do_netisr = config_get_boolean("plugin:freebsd:sysctl", "netisr", 1);
1092 do_netisr_per_core = config_get_boolean("plugin:freebsd:sysctl", "netisr per core", 1);
@@ -1068,14 +1155,6 @@ int do_freebsd_sysctl_old(int update_every, usec_t dt) {
1155 collected_number busy_time_ms;
1156 } prev_dstat;
1157
1071 - // NEEDED BY: do_ipc_shared_mem
1072 - struct ipc_shm {
1073 - u_long shmmni;
1074 - collected_number segs;
1075 - collected_number segsize;
1076 - } ipc_shm = {0, 0, 0};
1077 - static struct shmid_kernel *ipc_shm_data = NULL;
1078 -
1158 // NEEDED BY: do_ipc_msg_queues
1159 struct ipc_msq {
1160 int msgmni;
@@ -1323,55 +1402,6 @@ int do_freebsd_sysctl_old(int update_every, usec_t dt) {
1402
1403 // --------------------------------------------------------------------
1404
1326 - if (likely(do_ipc_shared_mem)) {
1327 - if (unlikely(GETSYSCTL_BY_NAME("kern.ipc.shmmni", ipc_shm.shmmni))) {
1328 - do_ipc_shared_mem = 0;
1329 - error("DISABLED: system.ipc_shared_mem_segs");
1330 - error("DISABLED: system.ipc_shared_mem_size");
1331 - } else {
1332 - ipc_shm_data = reallocz(ipc_shm_data, sizeof(struct shmid_kernel) * ipc_shm.shmmni);
1333 - if (unlikely(
1334 - getsysctl_by_name("kern.ipc.shmsegs", ipc_shm_data, sizeof(struct shmid_kernel) * ipc_shm.shmmni))) {
1335 - do_ipc_shared_mem = 0;
1336 - error("DISABLED: system.ipc_shared_mem_segs");
1337 - error("DISABLED: system.ipc_shared_mem_size");
1338 - } else {
1339 - for (i = 0; i < ipc_shm.shmmni; i++) {
1340 - if (unlikely(ipc_shm_data[i].u.shm_perm.mode & 0x0800)) {
1341 - ipc_shm.segs += 1;
1342 - ipc_shm.segsize += ipc_shm_data[i].u.shm_segsz;
1343 - }
1344 - }
1345 -
1346 - // --------------------------------------------------------------------
1347 -
1348 - st = rrdset_find_localhost("system.ipc_shared_mem_segs");
1349 - if (unlikely(!st)) {
1350 - st = rrdset_create_localhost("system", "ipc_shared_mem_segs", NULL, "ipc shared memory", NULL, "IPC Shared Memory Segments", "segments", 1000, localhost->rrd_update_every, RRDSET_TYPE_AREA);
1351 - rrddim_add(st, "segments", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
1352 - }
1353 - else rrdset_next(st);
1354 -
1355 - rrddim_set(st, "segments", ipc_shm.segs);
1356 - rrdset_done(st);
1357 -
1358 - // --------------------------------------------------------------------
1359 -
1360 - st = rrdset_find_localhost("system.ipc_shared_mem_size");
1361 - if (unlikely(!st)) {
1362 - st = rrdset_create_localhost("system", "ipc_shared_mem_size", NULL, "ipc shared memory", NULL, "IPC Shared Memory Segments Size", "kilobytes", 1000, localhost->rrd_update_every, RRDSET_TYPE_AREA);
1363 - rrddim_add(st, "allocated", NULL, 1, 1024, RRD_ALGORITHM_ABSOLUTE);
1364 - }
1365 - else rrdset_next(st);
1366 -
1367 - rrddim_set(st, "allocated", ipc_shm.segsize);
1368 - rrdset_done(st);
1369 - }
1370 - }
1371 - }
1372 -
1373 - // --------------------------------------------------------------------
1374 -
1405 if (likely(do_ipc_msg_queues)) {
1406 if (unlikely(GETSYSCTL_BY_NAME("kern.ipc.msgmni", ipc_msq.msgmni))) {
1407 do_ipc_msg_queues = 0;
src/plugin_freebsd.c
+1
@@ -28,6 +28,7 @@ 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 { .name = "kern.ipc.sem", .dim = "semaphores", .enabled = 1, .func = do_kern_ipc_sem },
31 + { .name = "kern.ipc.shm", .dim = "shared_memory", .enabled = 1, .func = do_kern_ipc_shm },
32
33 // CPU metrics
34 { .name = "kern.cp_times", .dim = "cp_times", .enabled = 1, .func = do_kern_cp_times },
src/plugin_freebsd.h
+1
@@ -21,6 +21,7 @@ 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 extern int do_kern_ipc_sem(int update_every, usec_t dt);
24 +extern int do_kern_ipc_shm(int update_every, usec_t dt);
25
26 extern int do_freebsd_sysctl_old(int update_every, usec_t dt);
27