@cryptotaxi247 / netdata-1 / commits / 29f951511

Add device and software interrupts charts to FreeBSD plugin

Vladimir Kobal committed Dec 12, 2016 at 21:57 UTC 29f95151135c63f389b98ffa637cbb322bab1ac0
1 file changed +50 -5
src/freebsd_sysctl.c
+50 -5
@@ -23,12 +23,15 @@ int do_freebsd_sysctl(int update_every, usec_t dt) {
23
24 static int do_cpu = -1, do_cpu_cores = -1, do_interrupts = -1, do_context = -1, do_forks = -1, do_processes = -1,
25 do_loadavg = -1, do_all_processes = -1, do_disk_io = -1, do_swap = -1, do_ram = -1, do_swapio = -1,
26 - do_pgfaults = -1, do_committed = -1, do_ipc_semaphores = -1, do_ipc_shared_mem = -1, do_ipc_msg_queues = -1;
26 + do_pgfaults = -1, do_committed = -1, do_ipc_semaphores = -1, do_ipc_shared_mem = -1, do_ipc_msg_queues = -1,
27 + do_dev_intr = -1, do_soft_intr = -1;
28
29 if (unlikely(do_cpu == -1)) {
30 do_cpu = config_get_boolean("plugin:freebsd:sysctl", "cpu utilization", 1);
31 do_cpu_cores = config_get_boolean("plugin:freebsd:sysctl", "per cpu core utilization", 1);
32 do_interrupts = config_get_boolean("plugin:freebsd:sysctl", "cpu interrupts", 1);
33 + do_dev_intr = config_get_boolean("plugin:freebsd:sysctl", "device interrupts", 1);
34 + do_soft_intr = config_get_boolean("plugin:freebsd:sysctl", "software interrupts", 1);
35 do_context = config_get_boolean("plugin:freebsd:sysctl", "context switches", 1);
36 do_forks = config_get_boolean("plugin:freebsd:sysctl", "processes started", 1);
37 do_processes = config_get_boolean("plugin:freebsd:sysctl", "processes running", 1);
@@ -331,7 +334,7 @@ int do_freebsd_sysctl(int update_every, usec_t dt) {
334
335 st = rrdset_find_bytype("system", "intr");
336 if (unlikely(!st)) {
334 - st = rrdset_create("system", "intr", NULL, "interrupts", NULL, "Total Device Interrupts", "interrupts/s", 900, update_every, RRDSET_TYPE_LINE);
337 + st = rrdset_create("system", "intr", NULL, "interrupts", NULL, "Total Hardware Interrupts", "interrupts/s", 900, update_every, RRDSET_TYPE_LINE);
338 st->isdetail = 1;
339
340 rrddim_add(st, "interrupts", NULL, 1, 1, RRDDIM_INCREMENTAL);
@@ -346,6 +349,48 @@ int do_freebsd_sysctl(int update_every, usec_t dt) {
349
350 // --------------------------------------------------------------------
351
352 + if (likely(do_dev_intr)) {
353 + if (unlikely(GETSYSCTL("vm.stats.sys.v_intr", u_int_data))) {
354 + do_dev_intr = 0;
355 + error("DISABLED: system.dev_intr");
356 + } else {
357 +
358 + st = rrdset_find_bytype("system", "dev_intr");
359 + if (unlikely(!st)) {
360 + st = rrdset_create("system", "dev_intr", NULL, "interrupts", NULL, "Device Interrupts", "interrupts/s", 1000, update_every, RRDSET_TYPE_LINE);
361 +
362 + rrddim_add(st, "interrupts", NULL, 1, 1, RRDDIM_INCREMENTAL);
363 + }
364 + else rrdset_next(st);
365 +
366 + rrddim_set(st, "interrupts", u_int_data);
367 + rrdset_done(st);
368 + }
369 + }
370 +
371 + // --------------------------------------------------------------------
372 +
373 + if (likely(do_soft_intr)) {
374 + if (unlikely(GETSYSCTL("vm.stats.sys.v_soft", u_int_data))) {
375 + do_soft_intr = 0;
376 + error("DISABLED: system.dev_intr");
377 + } else {
378 +
379 + st = rrdset_find_bytype("system", "soft_intr");
380 + if (unlikely(!st)) {
381 + st = rrdset_create("system", "soft_intr", NULL, "interrupts", NULL, "Software Interrupts", "interrupts/s", 1100, update_every, RRDSET_TYPE_LINE);
382 +
383 + rrddim_add(st, "interrupts", NULL, 1, 1, RRDDIM_INCREMENTAL);
384 + }
385 + else rrdset_next(st);
386 +
387 + rrddim_set(st, "interrupts", u_int_data);
388 + rrdset_done(st);
389 + }
390 + }
391 +
392 + // --------------------------------------------------------------------
393 +
394 if (likely(do_context)) {
395 if (unlikely(GETSYSCTL("vm.stats.sys.v_swtch", u_int_data))) {
396 do_context = 0;
@@ -649,7 +694,7 @@ int do_freebsd_sysctl(int update_every, usec_t dt) {
694 // --------------------------------------------------------------------
695
696 if (likely(do_swapio)) {
652 - if (unlikely(GETSYSCTL("vm.stats.vm.v_swappgsin", vmmeter_data.v_swappgsin) || GETSYSCTL("vm.stats.vm.v_vnodepgsout", vmmeter_data.v_swappgsout))) {
697 + if (unlikely(GETSYSCTL("vm.stats.vm.v_swappgsin", vmmeter_data.v_swappgsin) || GETSYSCTL("vm.stats.vm.v_swappgsout", vmmeter_data.v_swappgsout))) {
698 do_swapio = 0;
699 error("DISABLED: system.swapio");
700 } else {
@@ -826,7 +871,7 @@ int do_freebsd_sysctl(int update_every, usec_t dt) {
871
872 st = rrdset_find("system.ipc_msq_queues");
873 if (unlikely(!st)) {
829 - st = rrdset_create("system", "ipc_msq_queues", NULL, "ipc message queues", NULL, "Number of IPC Message Queues", "queues", 1000, rrd_update_every, RRDSET_TYPE_AREA);
874 + st = rrdset_create("system", "ipc_msq_queues", NULL, "ipc message queues", NULL, "Number of IPC Message Queues", "queues", 900, rrd_update_every, RRDSET_TYPE_AREA);
875 rrddim_add(st, "queues", NULL, 1, 1, RRDDIM_ABSOLUTE);
876 }
877 else rrdset_next(st);
@@ -850,7 +895,7 @@ int do_freebsd_sysctl(int update_every, usec_t dt) {
895
896 st = rrdset_find("system.ipc_msq_size");
897 if (unlikely(!st)) {
853 - st = rrdset_create("system", "ipc_msq_size", NULL, "ipc message queues", NULL, "Size of IPC Message Queues", "bytes", 1000, rrd_update_every, RRDSET_TYPE_LINE);
898 + st = rrdset_create("system", "ipc_msq_size", NULL, "ipc message queues", NULL, "Size of IPC Message Queues", "bytes", 1100, rrd_update_every, RRDSET_TYPE_LINE);
899 rrddim_add(st, "allocated", NULL, 1, 1, RRDDIM_ABSOLUTE);
900 rrddim_add(st, "used", NULL, 1, 1, RRDDIM_ABSOLUTE);
901 }