@cryptotaxi247 / netdata-1 / commits / 44b40520a

Separate vm.vmtotal module

Vladimir Kobal committed Mar 7, 2017 at 00:40 UTC 44b40520a4c970d140bfc0f1644777f309b7bb5d
3 files changed +151 -97
src/freebsd_sysctl.c
+148 -96
@@ -51,41 +51,160 @@ int freebsd_plugin_init()
51
52 int do_vm_loadavg(int update_every, usec_t dt){
53 static usec_t next_loadavg_dt = 0;
54 - static int mib[2] = {0,0};
55 - struct loadavg sysload;
56 - static RRDSET *st = NULL;
57 - static RRDDIM *rdload1 = NULL, *rdload2 = NULL, *rdload3 = NULL;
54
55 if (next_loadavg_dt <= dt) {
56 + static int mib[2] = {0,0};
57 + struct loadavg sysload;
58 +
59 if (unlikely(GETSYSCTL_SIMPLE("vm.loadavg", mib, sysload))) {
61 - error("DISABLED: system.load");
60 + error("DISABLED: system.load chart");
61 + error("DISABLED: vm.loadavg module");
62 return 1;
63 - } else if (unlikely(!st)) {
64 - st = rrdset_create_localhost("system",
65 - "load",
66 - NULL,
67 - "load",
68 - NULL,
69 - "System Load Average",
70 - "load",
71 - 100,
72 - (update_every < MIN_LOADAVG_UPDATE_EVERY) ?
73 - MIN_LOADAVG_UPDATE_EVERY : update_every, RRDSET_TYPE_LINE
74 - );
75 - rdload1 = rrddim_add(st, "load1", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
76 - rdload2 = rrddim_add(st, "load5", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
77 - rdload3 = rrddim_add(st, "load15", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
63 + } else {
64 + static RRDSET *st = NULL;
65 + static RRDDIM *rd_load1 = NULL, *rd_load2 = NULL, *rd_load3 = NULL;
66 +
67 + if (unlikely(!st)) {
68 + st = rrdset_create_localhost("system",
69 + "load",
70 + NULL,
71 + "load",
72 + NULL,
73 + "System Load Average",
74 + "load",
75 + 100,
76 + (update_every < MIN_LOADAVG_UPDATE_EVERY) ?
77 + MIN_LOADAVG_UPDATE_EVERY : update_every, RRDSET_TYPE_LINE
78 + );
79 + rd_load1 = rrddim_add(st, "load1", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
80 + rd_load2 = rrddim_add(st, "load5", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
81 + rd_load3 = rrddim_add(st, "load15", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
82 + } else
83 + rrdset_next(st);
84 +
85 + rrddim_set_by_pointer(st, rd_load1, (collected_number) ((double) sysload.ldavg[0] / sysload.fscale * 1000));
86 + rrddim_set_by_pointer(st, rd_load2, (collected_number) ((double) sysload.ldavg[1] / sysload.fscale * 1000));
87 + rrddim_set_by_pointer(st, rd_load3, (collected_number) ((double) sysload.ldavg[2] / sysload.fscale * 1000));
88 + rrdset_done(st);
89 +
90 + next_loadavg_dt = st->update_every * USEC_PER_SEC;
91 }
79 - else rrdset_next(st);
92 + }
93 + else
94 + next_loadavg_dt -= dt;
95
81 - rrddim_set_by_pointer(st, rdload1, (collected_number) ((double)sysload.ldavg[0] / sysload.fscale * 1000));
82 - rrddim_set_by_pointer(st, rdload2, (collected_number) ((double)sysload.ldavg[1] / sysload.fscale * 1000));
83 - rrddim_set_by_pointer(st, rdload3, (collected_number) ((double)sysload.ldavg[2] / sysload.fscale * 1000));
84 - rrdset_done(st);
96 + return 0;
97 +}
98 +
99 +int do_vm_vmtotal(int update_every, usec_t dt) {
100 + static int do_all_processes = -1, do_processes = -1, do_committed = -1;
101 +
102 + if (unlikely(do_all_processes == -1)) {
103 + do_all_processes = config_get_boolean("plugin:freebsd:vm.vmtotal", "enable total processes", 1);
104 + do_processes = config_get_boolean("plugin:freebsd:vm.vmtotal", "processes running", 1);
105 + do_committed = config_get_boolean("plugin:freebsd:vm.vmtotal", "committed memory", 1);
106 + }
107 +
108 + if (likely(do_all_processes | do_processes | do_committed)) {
109 + static int mib[2] = {0, 0};
110 + struct vmtotal vmtotal_data;
111 +
112 + if (unlikely(GETSYSCTL_SIMPLE("vm.vmtotal", mib, vmtotal_data))) {
113 + do_all_processes = 0;
114 + error("DISABLED: system.active_processes chart");
115 + do_processes = 0;
116 + error("DISABLED: system.processes chart");
117 + do_committed = 0;
118 + error("DISABLED: mem.committed chart");
119 + error("DISABLED: vm.vmtotal module");
120 + return 1;
121 + } else {
122 + if (likely(do_all_processes)) {
123 + static RRDSET *st = NULL;
124 + static RRDDIM *rd = NULL;
125 +
126 + if (unlikely(!st)) {
127 + st = rrdset_create_localhost("system",
128 + "active_processes",
129 + NULL,
130 + "processes",
131 + NULL,
132 + "System Active Processes",
133 + "processes",
134 + 750,
135 + update_every,
136 + RRDSET_TYPE_LINE
137 + );
138 + rd = rrddim_add(st, "active", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
139 + }
140 + else rrdset_next(st);
141 +
142 + rrddim_set_by_pointer(st, rd, (vmtotal_data.t_rq + vmtotal_data.t_dw + vmtotal_data.t_pw + vmtotal_data.t_sl + vmtotal_data.t_sw));
143 + rrdset_done(st);
144 + }
145 +
146 + // --------------------------------------------------------------------
147 +
148 + if (likely(do_processes)) {
149 + static RRDSET *st = NULL;
150 + static RRDDIM *rd_running = NULL, *rd_blocked = NULL;
151 +
152 + st = rrdset_find_bytype_localhost("system", "processes");
153 + if (unlikely(!st)) {
154 + st = rrdset_create_localhost("system",
155 + "processes",
156 + NULL,
157 + "processes",
158 + NULL,
159 + "System Processes",
160 + "processes",
161 + 600,
162 + update_every,
163 + RRDSET_TYPE_LINE
164 + );
165 +
166 + rd_running = rrddim_add(st, "running", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
167 + rd_blocked = rrddim_add(st, "blocked", NULL, -1, 1, RRD_ALGORITHM_ABSOLUTE);
168 + }
169 + else rrdset_next(st);
170 +
171 + rrddim_set_by_pointer(st, rd_running, vmtotal_data.t_rq);
172 + rrddim_set_by_pointer(st, rd_blocked, (vmtotal_data.t_dw + vmtotal_data.t_pw));
173 + rrdset_done(st);
174 + }
175 +
176 + // --------------------------------------------------------------------
177 +
178 + if (likely(do_committed)) {
179 + static RRDSET *st = NULL;
180 + static RRDDIM *rd = NULL;
181 +
182 + if (unlikely(!st)) {
183 + st = rrdset_create_localhost("mem",
184 + "committed",
185 + NULL,
186 + "system",
187 + NULL,
188 + "Committed (Allocated) Memory",
189 + "MB",
190 + 5000,
191 + update_every,
192 + RRDSET_TYPE_AREA
193 + );
194 + rrdset_flag_set(st, RRDSET_FLAG_DETAIL);
195 +
196 + rd = rrddim_add(st, "Committed_AS", NULL, system_pagesize, MEGA_FACTOR, RRD_ALGORITHM_ABSOLUTE);
197 + }
198 + else rrdset_next(st);
199
86 - next_loadavg_dt = st->update_every * USEC_PER_SEC;
200 + rrddim_set_by_pointer(st, rd, vmtotal_data.t_rm);
201 + rrdset_done(st);
202 + }
203 + }
204 + } else {
205 + error("DISABLED: vm.vmtotal module");
206 + return 1;
207 }
88 - else next_loadavg_dt -= dt;
208
209 return 0;
210 }
@@ -97,9 +216,8 @@ int do_vm_loadavg(int update_every, usec_t dt){
216 #define IFA_DATA(s) (((struct if_data *)ifa->ifa_data)->ifi_ ## s)
217
218 int do_freebsd_sysctl_old(int update_every, usec_t dt) {
100 - static int do_cpu = -1, do_cpu_cores = -1, do_interrupts = -1, do_context = -1, do_forks = -1, do_processes = -1,
101 - do_all_processes = -1, do_disk_io = -1, do_swap = -1, do_ram = -1, do_swapio = -1,
102 - do_pgfaults = -1, do_committed = -1, do_ipc_semaphores = -1, do_ipc_shared_mem = -1, do_ipc_msg_queues = -1,
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,
220 + do_pgfaults = -1, do_ipc_semaphores = -1, do_ipc_shared_mem = -1, do_ipc_msg_queues = -1,
221 do_dev_intr = -1, do_soft_intr = -1, do_netisr = -1, do_netisr_per_core = -1, do_bandwidth = -1,
222 do_tcp_sockets = -1, do_tcp_packets = -1, do_tcp_errors = -1, do_tcp_handshake = -1,
223 do_ecn = -1, do_tcpext_syscookies = -1, do_tcpext_ofo = -1, do_tcpext_connaborts = -1,
@@ -117,14 +235,11 @@ int do_freebsd_sysctl_old(int update_every, usec_t dt) {
235 do_soft_intr = config_get_boolean("plugin:freebsd:sysctl", "software interrupts", 1);
236 do_context = config_get_boolean("plugin:freebsd:sysctl", "context switches", 1);
237 do_forks = config_get_boolean("plugin:freebsd:sysctl", "processes started", 1);
120 - do_processes = config_get_boolean("plugin:freebsd:sysctl", "processes running", 1);
121 - do_all_processes = config_get_boolean("plugin:freebsd:sysctl", "enable total processes", 1);
238 do_disk_io = config_get_boolean("plugin:freebsd:sysctl", "stats for all disks", 1);
239 do_swap = config_get_boolean("plugin:freebsd:sysctl", "system swap", 1);
240 do_ram = config_get_boolean("plugin:freebsd:sysctl", "system ram", 1);
241 do_swapio = config_get_boolean("plugin:freebsd:sysctl", "swap i/o", 1);
242 do_pgfaults = config_get_boolean("plugin:freebsd:sysctl", "memory page faults", 1);
127 - do_committed = config_get_boolean("plugin:freebsd:sysctl", "committed memory", 1);
243 do_ipc_semaphores = config_get_boolean("plugin:freebsd:sysctl", "ipc semaphores", 1);
244 do_ipc_shared_mem = config_get_boolean("plugin:freebsd:sysctl", "ipc shared memory", 1);
245 do_ipc_msg_queues = config_get_boolean("plugin:freebsd:sysctl", "ipc message queues", 1);
@@ -182,9 +297,6 @@ int do_freebsd_sysctl_old(int update_every, usec_t dt) {
297 static long *pcpu_cp_time = NULL;
298 char cpuid[MAX_INT_DIGITS + 1];
299
185 - // NEEDED BY: do_all_processes, do_processes
186 - struct vmtotal vmtotal_data;
187 -
300 // NEEDED BY: do_context, do_forks
301 u_int u_int_data;
302
@@ -315,66 +427,6 @@ int do_freebsd_sysctl_old(int update_every, usec_t dt) {
427
428 // --------------------------------------------------------------------
429
318 - if (likely(do_all_processes | do_processes | do_committed)) {
319 - if (unlikely(GETSYSCTL_BY_NAME("vm.vmtotal", vmtotal_data))) {
320 - do_all_processes = 0;
321 - error("DISABLED: system.active_processes");
322 - do_processes = 0;
323 - error("DISABLED: system.processes");
324 - do_committed = 0;
325 - error("DISABLED: mem.committed");
326 - } else {
327 - if (likely(do_all_processes)) {
328 -
329 - st = rrdset_find_bytype_localhost("system", "active_processes");
330 - if (unlikely(!st)) {
331 - st = rrdset_create_localhost("system", "active_processes", NULL, "processes", NULL, "System Active Processes", "processes", 750, update_every, RRDSET_TYPE_LINE);
332 - rrddim_add(st, "active", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
333 - }
334 - else rrdset_next(st);
335 -
336 - rrddim_set(st, "active", (vmtotal_data.t_rq + vmtotal_data.t_dw + vmtotal_data.t_pw + vmtotal_data.t_sl + vmtotal_data.t_sw));
337 - rrdset_done(st);
338 - }
339 -
340 - // --------------------------------------------------------------------
341 -
342 - if (likely(do_processes)) {
343 -
344 - st = rrdset_find_bytype_localhost("system", "processes");
345 - if (unlikely(!st)) {
346 - st = rrdset_create_localhost("system", "processes", NULL, "processes", NULL, "System Processes", "processes", 600, update_every, RRDSET_TYPE_LINE);
347 -
348 - rrddim_add(st, "running", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
349 - rrddim_add(st, "blocked", NULL, -1, 1, RRD_ALGORITHM_ABSOLUTE);
350 - }
351 - else rrdset_next(st);
352 -
353 - rrddim_set(st, "running", vmtotal_data.t_rq);
354 - rrddim_set(st, "blocked", (vmtotal_data.t_dw + vmtotal_data.t_pw));
355 - rrdset_done(st);
356 - }
357 -
358 - // --------------------------------------------------------------------
359 -
360 - if (likely(do_committed)) {
361 - st = rrdset_find_localhost("mem.committed");
362 - if (unlikely(!st)) {
363 - st = rrdset_create_localhost("mem", "committed", NULL, "system", NULL, "Committed (Allocated) Memory", "MB", 5000, update_every, RRDSET_TYPE_AREA);
364 - rrdset_flag_set(st, RRDSET_FLAG_DETAIL);
365 -
366 - rrddim_add(st, "Committed_AS", NULL, system_pagesize, MEGA_FACTOR, RRD_ALGORITHM_ABSOLUTE);
367 - }
368 - else rrdset_next(st);
369 -
370 - rrddim_set(st, "Committed_AS", vmtotal_data.t_rm);
371 - rrdset_done(st);
372 - }
373 - }
374 - }
375 -
376 - // --------------------------------------------------------------------
377 -
430 if (likely(do_cpu)) {
431 if (unlikely(CPUSTATES != 5)) {
432 error("FREEBSD: There are %d CPU states (5 was expected)", CPUSTATES);
src/plugin_freebsd.c
+2 -1
@@ -16,7 +16,8 @@ static struct freebsd_module {
16 { .name = "freebsd_old", .dim = "freebsd_old", .enabled = 1, .func = do_freebsd_sysctl_old },
17
18 // system metrics
19 - { .name = "load average", .dim = "loadavg", .enabled = 1, .func = do_vm_loadavg },
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
22 // the terminator of this array
23 { .name = NULL, .dim = NULL, .enabled = 0, .func = NULL }
src/plugin_freebsd.h
+1
@@ -8,6 +8,7 @@ void *freebsd_main(void *ptr);
8 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_freebsd_sysctl_old(int update_every, usec_t dt);
13
14 #define GETSYSCTL_MIB(name, mib) getsysctl_mib(name, mib, sizeof(mib)/sizeof(int))