@cryptotaxi247 / netdata-1 / commits / 98c99c7de

Separate kern.cp_time module

Vladimir Kobal committed Mar 7, 2017 at 16:32 UTC 98c99c7de02c880daa00d425bb64542fb45f0a18
3 files changed +74 -40
src/freebsd_sysctl.c
+72 -40
@@ -34,7 +34,9 @@
34
35 int system_pagesize = PAGE_SIZE;
36
37 +// --------------------------------------------------------------------------------------------------------------------
38 // FreeBSD plugin initialization
39 +
40 int freebsd_plugin_init()
41 {
42 system_pagesize = getpagesize();
@@ -46,6 +48,9 @@ int freebsd_plugin_init()
48 return 0;
49 }
50
51 +// --------------------------------------------------------------------------------------------------------------------
52 +// vm.loadavg
53 +
54 // FreeBSD calculates load averages once every 5 seconds
55 #define MIN_LOADAVG_UPDATE_EVERY 5
56
@@ -61,6 +66,9 @@ int do_vm_loadavg(int update_every, usec_t dt){
66 error("DISABLED: vm.loadavg module");
67 return 1;
68 } else {
69 +
70 + // --------------------------------------------------------------------
71 +
72 static RRDSET *st = NULL;
73 static RRDDIM *rd_load1 = NULL, *rd_load2 = NULL, *rd_load3 = NULL;
74
@@ -96,6 +104,9 @@ int do_vm_loadavg(int update_every, usec_t dt){
104 return 0;
105 }
106
107 +// --------------------------------------------------------------------------------------------------------------------
108 +// vm.vmtotal
109 +
110 int do_vm_vmtotal(int update_every, usec_t dt) {
111 static int do_all_processes = -1, do_processes = -1, do_committed = -1;
112
@@ -119,6 +130,9 @@ int do_vm_vmtotal(int update_every, usec_t dt) {
130 error("DISABLED: vm.vmtotal module");
131 return 1;
132 } else {
133 +
134 + // --------------------------------------------------------------------
135 +
136 if (likely(do_all_processes)) {
137 static RRDSET *st = NULL;
138 static RRDDIM *rd = NULL;
@@ -209,6 +223,61 @@ int do_vm_vmtotal(int update_every, usec_t dt) {
223 return 0;
224 }
225
226 +// --------------------------------------------------------------------------------------------------------------------
227 +// kern.cp_time
228 +
229 +int do_kern_cp_time(int update_every, usec_t dt) {
230 + if (unlikely(CPUSTATES != 5)) {
231 + error("FREEBSD: There are %d CPU states (5 was expected)", CPUSTATES);
232 + error("DISABLED: system.cpu chart");
233 + error("DISABLED: kern.cp_time module");
234 + return 1;
235 + } else {
236 + static int mib[2] = {0, 0};
237 + long cp_time[CPUSTATES];
238 +
239 + if (unlikely(GETSYSCTL_SIMPLE("kern.cp_time", mib, cp_time))) {
240 + error("DISABLED: system.cpu chart");
241 + error("DISABLED: kern.cp_time module");
242 + return 1;
243 + } else {
244 + static RRDSET *st = NULL;
245 + static RRDDIM *rd_nice = NULL, *rd_system = NULL, *rd_user = NULL, *rd_interrupt = NULL, *rd_idle = NULL;
246 +
247 + if (unlikely(!st)) {
248 + st = rrdset_create_localhost("system",
249 + "cpu",
250 + NULL,
251 + "cpu",
252 + "system.cpu",
253 + "Total CPU utilization",
254 + "percentage",
255 + 100, update_every,
256 + RRDSET_TYPE_STACKED
257 + );
258 +
259 + rd_nice = rrddim_add(st, "nice", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
260 + rd_system = rrddim_add(st, "system", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
261 + rd_user = rrddim_add(st, "user", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
262 + rd_interrupt = rrddim_add(st, "interrupt", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
263 + rd_idle = rrddim_add(st, "idle", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
264 + rrddim_hide(st, "idle");
265 + }
266 + else rrdset_next(st);
267 +
268 + rrddim_set_by_pointer(st, rd_nice, cp_time[1]);
269 + rrddim_set_by_pointer(st, rd_system, cp_time[2]);
270 + rrddim_set_by_pointer(st, rd_user, cp_time[0]);
271 + rrddim_set_by_pointer(st, rd_interrupt, cp_time[3]);
272 + rrddim_set_by_pointer(st, rd_idle, cp_time[4]);
273 + rrdset_done(st);
274 + }
275 + }
276 +}
277 +
278 +// --------------------------------------------------------------------------------------------------------------------
279 +// old sources
280 +
281 // NEEDED BY: do_disk_io
282 #define RRD_TYPE_DISK "disk"
283
@@ -216,7 +285,7 @@ int do_vm_vmtotal(int update_every, usec_t dt) {
285 #define IFA_DATA(s) (((struct if_data *)ifa->ifa_data)->ifi_ ## s)
286
287 int do_freebsd_sysctl_old(int update_every, usec_t dt) {
219 - static int do_cpu = -1, do_cpu_cores = -1, do_interrupts = -1, do_context = -1, do_forks = -1, do_disk_io = -1, do_swap = -1, do_ram = -1, do_swapio = -1,
288 + static int do_cpu_cores = -1, do_interrupts = -1, do_context = -1, do_forks = -1, do_disk_io = -1, do_swap = -1, do_ram = -1, do_swapio = -1,
289 do_pgfaults = -1, do_ipc_semaphores = -1, do_ipc_shared_mem = -1, do_ipc_msg_queues = -1,
290 do_dev_intr = -1, do_soft_intr = -1, do_netisr = -1, do_netisr_per_core = -1, do_bandwidth = -1,
291 do_tcp_sockets = -1, do_tcp_packets = -1, do_tcp_errors = -1, do_tcp_handshake = -1,
@@ -227,8 +296,7 @@ int do_freebsd_sysctl_old(int update_every, usec_t dt) {
296 do_icmp6 = -1, do_icmp6_redir = -1, do_icmp6_errors = -1, do_icmp6_echos = -1, do_icmp6_router = -1,
297 do_icmp6_neighbor = -1, do_icmp6_types = -1, do_space = -1, do_inodes = -1, do_uptime = -1;
298
230 - if (unlikely(do_cpu == -1)) {
231 - do_cpu = config_get_boolean("plugin:freebsd:sysctl", "cpu utilization", 1);
299 + if (unlikely(do_uptime == -1)) {
300 do_cpu_cores = config_get_boolean("plugin:freebsd:sysctl", "per cpu core utilization", 1);
301 do_interrupts = config_get_boolean("plugin:freebsd:sysctl", "cpu interrupts", 1);
302 do_dev_intr = config_get_boolean("plugin:freebsd:sysctl", "device interrupts", 1);
@@ -287,7 +355,7 @@ int do_freebsd_sysctl_old(int update_every, usec_t dt) {
355 size_t size;
356 char title[4096 + 1];
357
290 - // NEEDED BY: do_cpu, do_cpu_cores
358 + // NEEDED BY: do_cpu_cores
359 long cp_time[CPUSTATES];
360
361 // NEEDED BY: du_cpu_cores, do_netisr, do_netisr_per_core
@@ -427,42 +495,6 @@ int do_freebsd_sysctl_old(int update_every, usec_t dt) {
495
496 // --------------------------------------------------------------------
497
430 - if (likely(do_cpu)) {
431 - if (unlikely(CPUSTATES != 5)) {
432 - error("FREEBSD: There are %d CPU states (5 was expected)", CPUSTATES);
433 - do_cpu = 0;
434 - error("DISABLED: system.cpu");
435 - } else {
436 - if (unlikely(GETSYSCTL_BY_NAME("kern.cp_time", cp_time))) {
437 - do_cpu = 0;
438 - error("DISABLED: system.cpu");
439 - } else {
440 -
441 - st = rrdset_find_bytype_localhost("system", "cpu");
442 - if (unlikely(!st)) {
443 - st = rrdset_create_localhost("system", "cpu", NULL, "cpu", "system.cpu", "Total CPU utilization", "percentage", 100, update_every, RRDSET_TYPE_STACKED);
444 -
445 - rrddim_add(st, "nice", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
446 - rrddim_add(st, "system", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
447 - rrddim_add(st, "user", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
448 - rrddim_add(st, "interrupt", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
449 - rrddim_add(st, "idle", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
450 - rrddim_hide(st, "idle");
451 - }
452 - else rrdset_next(st);
453 -
454 - rrddim_set(st, "nice", cp_time[1]);
455 - rrddim_set(st, "system", cp_time[2]);
456 - rrddim_set(st, "user", cp_time[0]);
457 - rrddim_set(st, "interrupt", cp_time[3]);
458 - rrddim_set(st, "idle", cp_time[4]);
459 - rrdset_done(st);
460 - }
461 - }
462 - }
463 -
464 - // --------------------------------------------------------------------
465 -
498 if (likely(do_cpu_cores)) {
499 if (unlikely(CPUSTATES != 5)) {
500 error("FREEBSD: There are %d CPU states (5 was expected)", CPUSTATES);
src/plugin_freebsd.c
+1
@@ -18,6 +18,7 @@ static struct freebsd_module {
18 // system metrics
19 { .name = "vm.loadavg", .dim = "loadavg", .enabled = 1, .func = do_vm_loadavg },
20 { .name = "vm.vmtotal", .dim = "vmtotal", .enabled = 1, .func = do_vm_vmtotal },
21 + { .name = "kern.cp_time", .dim = "cp_time", .enabled = 1, .func = do_kern_cp_time },
22
23 // the terminator of this array
24 { .name = NULL, .dim = NULL, .enabled = 0, .func = NULL }
src/plugin_freebsd.h
+1
@@ -9,6 +9,7 @@ extern int freebsd_plugin_init();
9
10 extern int do_vm_loadavg(int update_every, usec_t dt);
11 extern int do_vm_vmtotal(int update_every, usec_t dt);
12 +extern int do_kern_cp_time(int update_every, usec_t dt);
13 extern int do_freebsd_sysctl_old(int update_every, usec_t dt);
14
15 #define GETSYSCTL_MIB(name, mib) getsysctl_mib(name, mib, sizeof(mib)/sizeof(int))