@cryptotaxi247 / netdata-1 / commits / 5b9054a89

split rrd.c into multiple files

Costa Tsaousis (ktsaou) committed Feb 18, 2017 at 10:57 UTC 5b9054a89f2be6b0d47eaba8fc7cd5e923a9d35a
49 files changed +2364 -2273
CMakeLists.txt
+1 -1
@@ -123,7 +123,7 @@ set(NETDATA_SOURCE_FILES
123 src/web_client.h
124 src/web_server.c
125 src/web_server.h
126 - )
126 + src/rrdhost.c src/rrdfamily.c src/rrdset.c src/rrddim.c)
127
128 set(APPS_PLUGIN_SOURCE_FILES
129 src/appconfig.c
src/Makefile.am
+5 -1
@@ -30,7 +30,7 @@ endif
30
31 netdata_SOURCES = \
32 appconfig.c appconfig.h \
33 - adaptive_resortable_list.c adaptive_resortable_list.h \
33 + adaptive_resortable_list.c \adaptive_resortable_list.h \
34 avl.c avl.h \
35 backends.c backends.h \
36 clocks.c clocks.h \
@@ -65,6 +65,10 @@ netdata_SOURCES = \
65 registry_db.c \
66 registry_log.c \
67 rrd.c rrd.h \
68 + rrddim.c \
69 + rrdfamily.c \
70 + rrdhost.c \
71 + rrdset.c \
72 rrd2json.c rrd2json.h \
73 storage_number.c storage_number.h \
74 unit_test.c unit_test.h \
src/backends.c
+15 -15
@@ -240,28 +240,28 @@ void *backends_main(void *ptr) {
240 RRDSET *chart_metrics = rrdset_find_localhost("netdata.backend_metrics");
241 if(!chart_metrics) {
242 chart_metrics = rrdset_create("netdata", "backend_metrics", NULL, "backend", NULL, "Netdata Buffered Metrics", "metrics", 130600, frequency, RRDSET_TYPE_LINE);
243 - rrddim_add(chart_metrics, "buffered", NULL, 1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
244 - rrddim_add(chart_metrics, "lost", NULL, 1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
245 - rrddim_add(chart_metrics, "sent", NULL, 1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
243 + rrddim_add(chart_metrics, "buffered", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
244 + rrddim_add(chart_metrics, "lost", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
245 + rrddim_add(chart_metrics, "sent", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
246 }
247
248 RRDSET *chart_bytes = rrdset_find_localhost("netdata.backend_bytes");
249 if(!chart_bytes) {
250 chart_bytes = rrdset_create("netdata", "backend_bytes", NULL, "backend", NULL, "Netdata Backend Data Size", "KB", 130610, frequency, RRDSET_TYPE_AREA);
251 - rrddim_add(chart_bytes, "buffered", NULL, 1, 1024, RRDDIM_ALGORITHM_ABSOLUTE);
252 - rrddim_add(chart_bytes, "lost", NULL, 1, 1024, RRDDIM_ALGORITHM_ABSOLUTE);
253 - rrddim_add(chart_bytes, "sent", NULL, 1, 1024, RRDDIM_ALGORITHM_ABSOLUTE);
254 - rrddim_add(chart_bytes, "received", NULL, 1, 1024, RRDDIM_ALGORITHM_ABSOLUTE);
251 + rrddim_add(chart_bytes, "buffered", NULL, 1, 1024, RRD_ALGORITHM_ABSOLUTE);
252 + rrddim_add(chart_bytes, "lost", NULL, 1, 1024, RRD_ALGORITHM_ABSOLUTE);
253 + rrddim_add(chart_bytes, "sent", NULL, 1, 1024, RRD_ALGORITHM_ABSOLUTE);
254 + rrddim_add(chart_bytes, "received", NULL, 1, 1024, RRD_ALGORITHM_ABSOLUTE);
255 }
256
257 RRDSET *chart_ops = rrdset_find_localhost("netdata.backend_ops");
258 if(!chart_ops) {
259 chart_ops = rrdset_create("netdata", "backend_ops", NULL, "backend", NULL, "Netdata Backend Operations", "operations", 130630, frequency, RRDSET_TYPE_LINE);
260 - rrddim_add(chart_ops, "write", NULL, 1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
261 - rrddim_add(chart_ops, "discard", NULL, 1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
262 - rrddim_add(chart_ops, "reconnect", NULL, 1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
263 - rrddim_add(chart_ops, "failure", NULL, 1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
264 - rrddim_add(chart_ops, "read", NULL, 1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
260 + rrddim_add(chart_ops, "write", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
261 + rrddim_add(chart_ops, "discard", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
262 + rrddim_add(chart_ops, "reconnect", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
263 + rrddim_add(chart_ops, "failure", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
264 + rrddim_add(chart_ops, "read", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
265 }
266
267 /*
@@ -274,15 +274,15 @@ void *backends_main(void *ptr) {
274 RRDSET *chart_latency = rrdset_find_localhost("netdata.backend_latency");
275 if(!chart_latency) {
276 chart_latency = rrdset_create("netdata", "backend_latency", NULL, "backend", NULL, "Netdata Backend Latency", "ms", 130620, frequency, RRDSET_TYPE_AREA);
277 - rrddim_add(chart_latency, "latency", NULL, 1, 1000, RRDDIM_ALGORITHM_ABSOLUTE);
277 + rrddim_add(chart_latency, "latency", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
278 }
279 */
280
281 RRDSET *chart_rusage = rrdset_find_localhost("netdata.backend_thread_cpu");
282 if(!chart_rusage) {
283 chart_rusage = rrdset_create("netdata", "backend_thread_cpu", NULL, "backend", NULL, "NetData Backend Thread CPU usage", "milliseconds/s", 130630, frequency, RRDSET_TYPE_STACKED);
284 - rrddim_add(chart_rusage, "user", NULL, 1, 1000, RRDDIM_ALGORITHM_INCREMENTAL);
285 - rrddim_add(chart_rusage, "system", NULL, 1, 1000, RRDDIM_ALGORITHM_INCREMENTAL);
284 + rrddim_add(chart_rusage, "user", NULL, 1, 1000, RRD_ALGORITHM_INCREMENTAL);
285 + rrddim_add(chart_rusage, "system", NULL, 1, 1000, RRD_ALGORITHM_INCREMENTAL);
286 }
287
288 // ------------------------------------------------------------------------
src/daemon.c
+1 -1
@@ -27,7 +27,7 @@ void sig_handler_save(int signo)
27 if(signo) {
28 error_log_limit_unlimited();
29 info("Received signal %d to save the database...", signo);
30 - rrdset_save_all();
30 + rrdhost_save_all();
31 error_log_limit_reset();
32 }
33 }
src/global_statistics.c
+11 -11
@@ -135,8 +135,8 @@ void global_statistics_charts(void) {
135 "NetData Proc Plugin CPU usage", "milliseconds/s", 132000, rrd_update_every,
136 RRDSET_TYPE_STACKED);
137
138 - rrddim_add(stcpu_thread, "user", NULL, 1, 1000, RRDDIM_ALGORITHM_INCREMENTAL);
139 - rrddim_add(stcpu_thread, "system", NULL, 1, 1000, RRDDIM_ALGORITHM_INCREMENTAL);
138 + rrddim_add(stcpu_thread, "user", NULL, 1, 1000, RRD_ALGORITHM_INCREMENTAL);
139 + rrddim_add(stcpu_thread, "system", NULL, 1, 1000, RRD_ALGORITHM_INCREMENTAL);
140 } else rrdset_next(stcpu_thread);
141
142 rrddim_set(stcpu_thread, "user", thread.ru_utime.tv_sec * 1000000ULL + thread.ru_utime.tv_usec);
@@ -150,8 +150,8 @@ void global_statistics_charts(void) {
150 stcpu = rrdset_create("netdata", "server_cpu", NULL, "netdata", NULL, "NetData CPU usage", "milliseconds/s",
151 130000, rrd_update_every, RRDSET_TYPE_STACKED);
152
153 - rrddim_add(stcpu, "user", NULL, 1, 1000, RRDDIM_ALGORITHM_INCREMENTAL);
154 - rrddim_add(stcpu, "system", NULL, 1, 1000, RRDDIM_ALGORITHM_INCREMENTAL);
153 + rrddim_add(stcpu, "user", NULL, 1, 1000, RRD_ALGORITHM_INCREMENTAL);
154 + rrddim_add(stcpu, "system", NULL, 1, 1000, RRD_ALGORITHM_INCREMENTAL);
155 } else rrdset_next(stcpu);
156
157 rrddim_set(stcpu, "user", me.ru_utime.tv_sec * 1000000ULL + me.ru_utime.tv_usec);
@@ -165,7 +165,7 @@ void global_statistics_charts(void) {
165 stclients = rrdset_create("netdata", "clients", NULL, "netdata", NULL, "NetData Web Clients",
166 "connected clients", 130200, rrd_update_every, RRDSET_TYPE_LINE);
167
168 - rrddim_add(stclients, "clients", NULL, 1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
168 + rrddim_add(stclients, "clients", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
169 } else rrdset_next(stclients);
170
171 rrddim_set(stclients, "clients", gs.connected_clients);
@@ -178,7 +178,7 @@ void global_statistics_charts(void) {
178 streqs = rrdset_create("netdata", "requests", NULL, "netdata", NULL, "NetData Web Requests", "requests/s",
179 130300, rrd_update_every, RRDSET_TYPE_LINE);
180
181 - rrddim_add(streqs, "requests", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
181 + rrddim_add(streqs, "requests", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
182 } else rrdset_next(streqs);
183
184 rrddim_set(streqs, "requests", (collected_number) gs.web_requests);
@@ -191,8 +191,8 @@ void global_statistics_charts(void) {
191 stbytes = rrdset_create("netdata", "net", NULL, "netdata", NULL, "NetData Network Traffic", "kilobits/s",
192 130000, rrd_update_every, RRDSET_TYPE_AREA);
193
194 - rrddim_add(stbytes, "in", NULL, 8, 1024, RRDDIM_ALGORITHM_INCREMENTAL);
195 - rrddim_add(stbytes, "out", NULL, -8, 1024, RRDDIM_ALGORITHM_INCREMENTAL);
194 + rrddim_add(stbytes, "in", NULL, 8, 1024, RRD_ALGORITHM_INCREMENTAL);
195 + rrddim_add(stbytes, "out", NULL, -8, 1024, RRD_ALGORITHM_INCREMENTAL);
196 } else rrdset_next(stbytes);
197
198 rrddim_set(stbytes, "in", (collected_number) gs.bytes_received);
@@ -206,8 +206,8 @@ void global_statistics_charts(void) {
206 stduration = rrdset_create("netdata", "response_time", NULL, "netdata", NULL, "NetData API Response Time",
207 "ms/request", 130400, rrd_update_every, RRDSET_TYPE_LINE);
208
209 - rrddim_add(stduration, "average", NULL, 1, 1000, RRDDIM_ALGORITHM_ABSOLUTE);
210 - rrddim_add(stduration, "max", NULL, 1, 1000, RRDDIM_ALGORITHM_ABSOLUTE);
209 + rrddim_add(stduration, "average", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
210 + rrddim_add(stduration, "max", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
211 } else rrdset_next(stduration);
212
213 uint64_t gweb_usec = gs.web_usec;
@@ -238,7 +238,7 @@ void global_statistics_charts(void) {
238 "NetData API Responses Compression Savings Ratio", "percentage", 130500,
239 rrd_update_every, RRDSET_TYPE_LINE);
240
241 - rrddim_add(stcompression, "savings", NULL, 1, 1000, RRDDIM_ALGORITHM_ABSOLUTE);
241 + rrddim_add(stcompression, "savings", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
242 } else rrdset_next(stcompression);
243
244 // since we don't lock here to read the global statistics
src/ipc.c
+2 -2
@@ -194,13 +194,13 @@ int do_ipc(int update_every, usec_t dt) {
194 semaphores = rrdset_find_localhost("system.ipc_semaphores");
195 if(!semaphores) {
196 semaphores = rrdset_create("system", "ipc_semaphores", NULL, "ipc semaphores", NULL, "IPC Semaphores", "semaphores", 1000, rrd_update_every, RRDSET_TYPE_AREA);
197 - rrddim_add(semaphores, "semaphores", NULL, 1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
197 + rrddim_add(semaphores, "semaphores", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
198 }
199
200 arrays = rrdset_find_localhost("system.ipc_semaphore_arrays");
201 if(!arrays) {
202 arrays = rrdset_create("system", "ipc_semaphore_arrays", NULL, "ipc semaphores", NULL, "IPC Semaphore Arrays", "arrays", 1000, rrd_update_every, RRDSET_TYPE_AREA);
203 - rrddim_add(arrays, "arrays", NULL, 1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
203 + rrddim_add(arrays, "arrays", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
204 }
205 }
206
src/macos_fw.c
+32 -32
@@ -140,8 +140,8 @@ int do_macos_iokit(int update_every, usec_t dt) {
140 if (unlikely(!st)) {
141 st = rrdset_create("disk", diskstat.name, NULL, diskstat.name, "disk.io", "Disk I/O Bandwidth", "kilobytes/s", 2000, update_every, RRDSET_TYPE_AREA);
142
143 - rrddim_add(st, "reads", NULL, 1, 1024, RRDDIM_ALGORITHM_INCREMENTAL);
144 - rrddim_add(st, "writes", NULL, -1, 1024, RRDDIM_ALGORITHM_INCREMENTAL);
143 + rrddim_add(st, "reads", NULL, 1, 1024, RRD_ALGORITHM_INCREMENTAL);
144 + rrddim_add(st, "writes", NULL, -1, 1024, RRD_ALGORITHM_INCREMENTAL);
145 }
146 else rrdset_next(st);
147
@@ -166,8 +166,8 @@ int do_macos_iokit(int update_every, usec_t dt) {
166 st = rrdset_create("disk_ops", diskstat.name, NULL, diskstat.name, "disk.ops", "Disk Completed I/O Operations", "operations/s", 2001, update_every, RRDSET_TYPE_LINE);
167 st->isdetail = 1;
168
169 - rrddim_add(st, "reads", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
170 - rrddim_add(st, "writes", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
169 + rrddim_add(st, "reads", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
170 + rrddim_add(st, "writes", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
171 }
172 else rrdset_next(st);
173
@@ -192,7 +192,7 @@ int do_macos_iokit(int update_every, usec_t dt) {
192 st = rrdset_create("disk_util", diskstat.name, NULL, diskstat.name, "disk.util", "Disk Utilization Time", "% of time working", 2004, update_every, RRDSET_TYPE_AREA);
193 st->isdetail = 1;
194
195 - rrddim_add(st, "utilization", NULL, 1, 10000000, RRDDIM_ALGORITHM_INCREMENTAL);
195 + rrddim_add(st, "utilization", NULL, 1, 10000000, RRD_ALGORITHM_INCREMENTAL);
196 }
197 else rrdset_next(st);
198
@@ -217,8 +217,8 @@ int do_macos_iokit(int update_every, usec_t dt) {
217 st = rrdset_create("disk_iotime", diskstat.name, NULL, diskstat.name, "disk.iotime", "Disk Total I/O Time", "milliseconds/s", 2022, update_every, RRDSET_TYPE_LINE);
218 st->isdetail = 1;
219
220 - rrddim_add(st, "reads", NULL, 1, 1000000, RRDDIM_ALGORITHM_INCREMENTAL);
221 - rrddim_add(st, "writes", NULL, -1, 1000000, RRDDIM_ALGORITHM_INCREMENTAL);
220 + rrddim_add(st, "reads", NULL, 1, 1000000, RRD_ALGORITHM_INCREMENTAL);
221 + rrddim_add(st, "writes", NULL, -1, 1000000, RRD_ALGORITHM_INCREMENTAL);
222 }
223 else rrdset_next(st);
224
@@ -241,8 +241,8 @@ int do_macos_iokit(int update_every, usec_t dt) {
241 st = rrdset_create("disk_await", diskstat.name, NULL, diskstat.name, "disk.await", "Average Completed I/O Operation Time", "ms per operation", 2005, update_every, RRDSET_TYPE_LINE);
242 st->isdetail = 1;
243
244 - rrddim_add(st, "reads", NULL, 1, 1000000, RRDDIM_ALGORITHM_ABSOLUTE);
245 - rrddim_add(st, "writes", NULL, -1, 1000000, RRDDIM_ALGORITHM_ABSOLUTE);
244 + rrddim_add(st, "reads", NULL, 1, 1000000, RRD_ALGORITHM_ABSOLUTE);
245 + rrddim_add(st, "writes", NULL, -1, 1000000, RRD_ALGORITHM_ABSOLUTE);
246 }
247 else rrdset_next(st);
248
@@ -259,8 +259,8 @@ int do_macos_iokit(int update_every, usec_t dt) {
259 st = rrdset_create("disk_avgsz", diskstat.name, NULL, diskstat.name, "disk.avgsz", "Average Completed I/O Operation Bandwidth", "kilobytes per operation", 2006, update_every, RRDSET_TYPE_AREA);
260 st->isdetail = 1;
261
262 - rrddim_add(st, "reads", NULL, 1, 1024, RRDDIM_ALGORITHM_ABSOLUTE);
263 - rrddim_add(st, "writes", NULL, -1, 1024, RRDDIM_ALGORITHM_ABSOLUTE);
262 + rrddim_add(st, "reads", NULL, 1, 1024, RRD_ALGORITHM_ABSOLUTE);
263 + rrddim_add(st, "writes", NULL, -1, 1024, RRD_ALGORITHM_ABSOLUTE);
264 }
265 else rrdset_next(st);
266
@@ -277,7 +277,7 @@ int do_macos_iokit(int update_every, usec_t dt) {
277 st = rrdset_create("disk_svctm", diskstat.name, NULL, diskstat.name, "disk.svctm", "Average Service Time", "ms per operation", 2007, update_every, RRDSET_TYPE_LINE);
278 st->isdetail = 1;
279
280 - rrddim_add(st, "svctm", NULL, 1, 1000000, RRDDIM_ALGORITHM_ABSOLUTE);
280 + rrddim_add(st, "svctm", NULL, 1, 1000000, RRD_ALGORITHM_ABSOLUTE);
281 }
282 else rrdset_next(st);
283
@@ -304,8 +304,8 @@ int do_macos_iokit(int update_every, usec_t dt) {
304 st = rrdset_find_bytype_localhost("system", "io");
305 if (unlikely(!st)) {
306 st = rrdset_create("system", "io", NULL, "disk", NULL, "Disk I/O", "kilobytes/s", 150, update_every, RRDSET_TYPE_AREA);
307 - rrddim_add(st, "in", NULL, 1, 1024, RRDDIM_ALGORITHM_INCREMENTAL);
308 - rrddim_add(st, "out", NULL, -1, 1024, RRDDIM_ALGORITHM_INCREMENTAL);
307 + rrddim_add(st, "in", NULL, 1, 1024, RRD_ALGORITHM_INCREMENTAL);
308 + rrddim_add(st, "out", NULL, -1, 1024, RRD_ALGORITHM_INCREMENTAL);
309 }
310 else rrdset_next(st);
311
@@ -347,10 +347,10 @@ int do_macos_iokit(int update_every, usec_t dt) {
347 update_every,
348 RRDSET_TYPE_STACKED);
349
350 - rrddim_add(st, "avail", NULL, mntbuf[i].f_bsize, GIGA_FACTOR, RRDDIM_ALGORITHM_ABSOLUTE);
351 - rrddim_add(st, "used", NULL, mntbuf[i].f_bsize, GIGA_FACTOR, RRDDIM_ALGORITHM_ABSOLUTE);
350 + rrddim_add(st, "avail", NULL, mntbuf[i].f_bsize, GIGA_FACTOR, RRD_ALGORITHM_ABSOLUTE);
351 + rrddim_add(st, "used", NULL, mntbuf[i].f_bsize, GIGA_FACTOR, RRD_ALGORITHM_ABSOLUTE);
352 rrddim_add(st, "reserved_for_root", "reserved for root", mntbuf[i].f_bsize, GIGA_FACTOR,
353 - RRDDIM_ALGORITHM_ABSOLUTE);
353 + RRD_ALGORITHM_ABSOLUTE);
354 } else
355 rrdset_next(st);
356
@@ -369,9 +369,9 @@ int do_macos_iokit(int update_every, usec_t dt) {
369 st = rrdset_create("disk_inodes", mntbuf[i].f_mntonname, NULL, mntbuf[i].f_mntonname, "disk.inodes", title, "Inodes", 2024,
370 update_every, RRDSET_TYPE_STACKED);
371
372 - rrddim_add(st, "avail", NULL, 1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
373 - rrddim_add(st, "used", NULL, 1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
374 - rrddim_add(st, "reserved_for_root", "reserved for root", 1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
372 + rrddim_add(st, "avail", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
373 + rrddim_add(st, "used", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
374 + rrddim_add(st, "reserved_for_root", "reserved for root", 1, 1, RRD_ALGORITHM_ABSOLUTE);
375 } else
376 rrdset_next(st);
377
@@ -402,8 +402,8 @@ int do_macos_iokit(int update_every, usec_t dt) {
402 if (unlikely(!st)) {
403 st = rrdset_create("net", ifa->ifa_name, NULL, ifa->ifa_name, "net.net", "Bandwidth", "kilobits/s", 7000, update_every, RRDSET_TYPE_AREA);
404
405 - rrddim_add(st, "received", NULL, 8, 1024, RRDDIM_ALGORITHM_INCREMENTAL);
406 - rrddim_add(st, "sent", NULL, -8, 1024, RRDDIM_ALGORITHM_INCREMENTAL);
405 + rrddim_add(st, "received", NULL, 8, 1024, RRD_ALGORITHM_INCREMENTAL);
406 + rrddim_add(st, "sent", NULL, -8, 1024, RRD_ALGORITHM_INCREMENTAL);
407 }
408 else rrdset_next(st);
409
@@ -418,10 +418,10 @@ int do_macos_iokit(int update_every, usec_t dt) {
418 st = rrdset_create("net_packets", ifa->ifa_name, NULL, ifa->ifa_name, "net.packets", "Packets", "packets/s", 7001, update_every, RRDSET_TYPE_LINE);
419 st->isdetail = 1;
420
421 - rrddim_add(st, "received", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
422 - rrddim_add(st, "sent", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
423 - rrddim_add(st, "multicast_received", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
424 - rrddim_add(st, "multicast_sent", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
421 + rrddim_add(st, "received", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
422 + rrddim_add(st, "sent", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
423 + rrddim_add(st, "multicast_received", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
424 + rrddim_add(st, "multicast_sent", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
425 }
426 else rrdset_next(st);
427
@@ -438,8 +438,8 @@ int do_macos_iokit(int update_every, usec_t dt) {
438 st = rrdset_create("net_errors", ifa->ifa_name, NULL, ifa->ifa_name, "net.errors", "Interface Errors", "errors/s", 7002, update_every, RRDSET_TYPE_LINE);
439 st->isdetail = 1;
440
441 - rrddim_add(st, "inbound", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
442 - rrddim_add(st, "outbound", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
441 + rrddim_add(st, "inbound", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
442 + rrddim_add(st, "outbound", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
443 }
444 else rrdset_next(st);
445
@@ -454,7 +454,7 @@ int do_macos_iokit(int update_every, usec_t dt) {
454 st = rrdset_create("net_drops", ifa->ifa_name, NULL, ifa->ifa_name, "net.drops", "Interface Drops", "drops/s", 7003, update_every, RRDSET_TYPE_LINE);
455 st->isdetail = 1;
456
457 - rrddim_add(st, "inbound", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
457 + rrddim_add(st, "inbound", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
458 }
459 else rrdset_next(st);
460
@@ -468,9 +468,9 @@ int do_macos_iokit(int update_every, usec_t dt) {
468 st = rrdset_create("net_events", ifa->ifa_name, NULL, ifa->ifa_name, "net.events", "Network Interface Events", "events/s", 7006, update_every, RRDSET_TYPE_LINE);
469 st->isdetail = 1;
470
471 - rrddim_add(st, "frames", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
472 - rrddim_add(st, "collisions", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
473 - rrddim_add(st, "carrier", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
471 + rrddim_add(st, "frames", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
472 + rrddim_add(st, "collisions", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
473 + rrddim_add(st, "carrier", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
474 }
475 else rrdset_next(st);
476
src/macos_mach_smi.c
+23 -23
@@ -52,10 +52,10 @@ int do_macos_mach_smi(int update_every, usec_t dt) {
52 if (unlikely(!st)) {
53 st = rrdset_create("system", "cpu", NULL, "cpu", "system.cpu", "Total CPU utilization", "percentage", 100, update_every, RRDSET_TYPE_STACKED);
54
55 - rrddim_add(st, "user", NULL, 1, 1, RRDDIM_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
56 - rrddim_add(st, "nice", NULL, 1, 1, RRDDIM_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
57 - rrddim_add(st, "system", NULL, 1, 1, RRDDIM_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
58 - rrddim_add(st, "idle", NULL, 1, 1, RRDDIM_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
55 + rrddim_add(st, "user", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
56 + rrddim_add(st, "nice", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
57 + rrddim_add(st, "system", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
58 + rrddim_add(st, "idle", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
59 rrddim_hide(st, "idle");
60 }
61 else rrdset_next(st);
@@ -88,14 +88,14 @@ int do_macos_mach_smi(int update_every, usec_t dt) {
88 if (unlikely(!st)) {
89 st = rrdset_create("system", "ram", NULL, "ram", NULL, "System RAM", "MB", 200, update_every, RRDSET_TYPE_STACKED);
90
91 - rrddim_add(st, "active", NULL, system_pagesize, 1048576, RRDDIM_ALGORITHM_ABSOLUTE);
92 - rrddim_add(st, "wired", NULL, system_pagesize, 1048576, RRDDIM_ALGORITHM_ABSOLUTE);
93 - rrddim_add(st, "throttled", NULL, system_pagesize, 1048576, RRDDIM_ALGORITHM_ABSOLUTE);
94 - rrddim_add(st, "compressor", NULL, system_pagesize, 1048576, RRDDIM_ALGORITHM_ABSOLUTE);
95 - rrddim_add(st, "inactive", NULL, system_pagesize, 1048576, RRDDIM_ALGORITHM_ABSOLUTE);
96 - rrddim_add(st, "purgeable", NULL, system_pagesize, 1048576, RRDDIM_ALGORITHM_ABSOLUTE);
97 - rrddim_add(st, "speculative", NULL, system_pagesize, 1048576, RRDDIM_ALGORITHM_ABSOLUTE);
98 - rrddim_add(st, "free", NULL, system_pagesize, 1048576, RRDDIM_ALGORITHM_ABSOLUTE);
91 + rrddim_add(st, "active", NULL, system_pagesize, 1048576, RRD_ALGORITHM_ABSOLUTE);
92 + rrddim_add(st, "wired", NULL, system_pagesize, 1048576, RRD_ALGORITHM_ABSOLUTE);
93 + rrddim_add(st, "throttled", NULL, system_pagesize, 1048576, RRD_ALGORITHM_ABSOLUTE);
94 + rrddim_add(st, "compressor", NULL, system_pagesize, 1048576, RRD_ALGORITHM_ABSOLUTE);
95 + rrddim_add(st, "inactive", NULL, system_pagesize, 1048576, RRD_ALGORITHM_ABSOLUTE);
96 + rrddim_add(st, "purgeable", NULL, system_pagesize, 1048576, RRD_ALGORITHM_ABSOLUTE);
97 + rrddim_add(st, "speculative", NULL, system_pagesize, 1048576, RRD_ALGORITHM_ABSOLUTE);
98 + rrddim_add(st, "free", NULL, system_pagesize, 1048576, RRD_ALGORITHM_ABSOLUTE);
99 }
100 else rrdset_next(st);
101
@@ -117,8 +117,8 @@ int do_macos_mach_smi(int update_every, usec_t dt) {
117 if (unlikely(!st)) {
118 st = rrdset_create("system", "swapio", NULL, "swap", NULL, "Swap I/O", "kilobytes/s", 250, update_every, RRDSET_TYPE_AREA);
119
120 - rrddim_add(st, "in", NULL, system_pagesize, 1024, RRDDIM_ALGORITHM_INCREMENTAL);
121 - rrddim_add(st, "out", NULL, -system_pagesize, 1024, RRDDIM_ALGORITHM_INCREMENTAL);
120 + rrddim_add(st, "in", NULL, system_pagesize, 1024, RRD_ALGORITHM_INCREMENTAL);
121 + rrddim_add(st, "out", NULL, -system_pagesize, 1024, RRD_ALGORITHM_INCREMENTAL);
122 }
123 else rrdset_next(st);
124
@@ -135,15 +135,15 @@ int do_macos_mach_smi(int update_every, usec_t dt) {
135 st = rrdset_create("mem", "pgfaults", NULL, "system", NULL, "Memory Page Faults", "page faults/s", 500, update_every, RRDSET_TYPE_LINE);
136 st->isdetail = 1;
137
138 - rrddim_add(st, "memory", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
139 - rrddim_add(st, "cow", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
140 - rrddim_add(st, "pagein", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
141 - rrddim_add(st, "pageout", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
142 - rrddim_add(st, "compress", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
143 - rrddim_add(st, "decompress", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
144 - rrddim_add(st, "zero_fill", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
145 - rrddim_add(st, "reactivate", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
146 - rrddim_add(st, "purge", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
138 + rrddim_add(st, "memory", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
139 + rrddim_add(st, "cow", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
140 + rrddim_add(st, "pagein", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
141 + rrddim_add(st, "pageout", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
142 + rrddim_add(st, "compress", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
143 + rrddim_add(st, "decompress", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
144 + rrddim_add(st, "zero_fill", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
145 + rrddim_add(st, "reactivate", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
146 + rrddim_add(st, "purge", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
147 }
148 else rrdset_next(st);
149
src/macos_sysctl.c
+114 -114
@@ -218,9 +218,9 @@ int do_macos_sysctl(int update_every, usec_t dt) {
218 st = rrdset_find_bytype_localhost("system", "load");
219 if (unlikely(!st)) {
220 st = rrdset_create("system", "load", NULL, "load", NULL, "System Load Average", "load", 100, (update_every < MIN_LOADAVG_UPDATE_EVERY) ? MIN_LOADAVG_UPDATE_EVERY : update_every, RRDSET_TYPE_LINE);
221 - rrddim_add(st, "load1", NULL, 1, 1000, RRDDIM_ALGORITHM_ABSOLUTE);
222 - rrddim_add(st, "load5", NULL, 1, 1000, RRDDIM_ALGORITHM_ABSOLUTE);
223 - rrddim_add(st, "load15", NULL, 1, 1000, RRDDIM_ALGORITHM_ABSOLUTE);
221 + rrddim_add(st, "load1", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
222 + rrddim_add(st, "load5", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
223 + rrddim_add(st, "load15", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
224 }
225 else rrdset_next(st);
226
@@ -247,8 +247,8 @@ int do_macos_sysctl(int update_every, usec_t dt) {
247 st = rrdset_create("system", "swap", NULL, "swap", NULL, "System Swap", "MB", 201, update_every, RRDSET_TYPE_STACKED);
248 st->isdetail = 1;
249
250 - rrddim_add(st, "free", NULL, 1, 1048576, RRDDIM_ALGORITHM_ABSOLUTE);
251 - rrddim_add(st, "used", NULL, 1, 1048576, RRDDIM_ALGORITHM_ABSOLUTE);
250 + rrddim_add(st, "free", NULL, 1, 1048576, RRD_ALGORITHM_ABSOLUTE);
251 + rrddim_add(st, "used", NULL, 1, 1048576, RRD_ALGORITHM_ABSOLUTE);
252 }
253 else rrdset_next(st);
254
@@ -295,8 +295,8 @@ int do_macos_sysctl(int update_every, usec_t dt) {
295 if (unlikely(!st)) {
296 st = rrdset_create("system", "ipv4", NULL, "network", NULL, "IPv4 Bandwidth", "kilobits/s", 500, update_every, RRDSET_TYPE_AREA);
297
298 - rrddim_add(st, "InOctets", "received", 8, 1024, RRDDIM_ALGORITHM_INCREMENTAL);
299 - rrddim_add(st, "OutOctets", "sent", -8, 1024, RRDDIM_ALGORITHM_INCREMENTAL);
298 + rrddim_add(st, "InOctets", "received", 8, 1024, RRD_ALGORITHM_INCREMENTAL);
299 + rrddim_add(st, "OutOctets", "sent", -8, 1024, RRD_ALGORITHM_INCREMENTAL);
300 }
301 else rrdset_next(st);
302
@@ -334,8 +334,8 @@ int do_macos_sysctl(int update_every, usec_t dt) {
334 "packets/s",
335 2600, update_every, RRDSET_TYPE_LINE);
336
337 - rrddim_add(st, "InSegs", "received", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
338 - rrddim_add(st, "OutSegs", "sent", -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
337 + rrddim_add(st, "InSegs", "received", 1, 1, RRD_ALGORITHM_INCREMENTAL);
338 + rrddim_add(st, "OutSegs", "sent", -1, 1, RRD_ALGORITHM_INCREMENTAL);
339 } else
340 rrdset_next(st);
341
@@ -354,9 +354,9 @@ int do_macos_sysctl(int update_every, usec_t dt) {
354 2700, update_every, RRDSET_TYPE_LINE);
355 st->isdetail = 1;
356
357 - rrddim_add(st, "InErrs", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
358 - rrddim_add(st, "InCsumErrors", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
359 - rrddim_add(st, "RetransSegs", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
357 + rrddim_add(st, "InErrs", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
358 + rrddim_add(st, "InCsumErrors", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
359 + rrddim_add(st, "RetransSegs", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
360 } else
361 rrdset_next(st);
362
@@ -376,10 +376,10 @@ int do_macos_sysctl(int update_every, usec_t dt) {
376 "events/s", 2900, update_every, RRDSET_TYPE_LINE);
377 st->isdetail = 1;
378
379 - rrddim_add(st, "EstabResets", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
380 - rrddim_add(st, "ActiveOpens", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
381 - rrddim_add(st, "PassiveOpens", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
382 - rrddim_add(st, "AttemptFails", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
379 + rrddim_add(st, "EstabResets", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
380 + rrddim_add(st, "ActiveOpens", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
381 + rrddim_add(st, "PassiveOpens", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
382 + rrddim_add(st, "AttemptFails", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
383 } else
384 rrdset_next(st);
385
@@ -398,10 +398,10 @@ int do_macos_sysctl(int update_every, usec_t dt) {
398 if (unlikely(!st)) {
399 st = rrdset_create("ipv4", "tcpconnaborts", NULL, "tcp", NULL, "TCP Connection Aborts", "connections/s", 3010, update_every, RRDSET_TYPE_LINE);
400
401 - rrddim_add(st, "TCPAbortOnData", "baddata", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
402 - rrddim_add(st, "TCPAbortOnClose", "userclosed", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
403 - rrddim_add(st, "TCPAbortOnMemory", "nomemory", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
404 - rrddim_add(st, "TCPAbortOnTimeout", "timeout", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
401 + rrddim_add(st, "TCPAbortOnData", "baddata", 1, 1, RRD_ALGORITHM_INCREMENTAL);
402 + rrddim_add(st, "TCPAbortOnClose", "userclosed", 1, 1, RRD_ALGORITHM_INCREMENTAL);
403 + rrddim_add(st, "TCPAbortOnMemory", "nomemory", 1, 1, RRD_ALGORITHM_INCREMENTAL);
404 + rrddim_add(st, "TCPAbortOnTimeout", "timeout", 1, 1, RRD_ALGORITHM_INCREMENTAL);
405 }
406 else rrdset_next(st);
407
@@ -420,7 +420,7 @@ int do_macos_sysctl(int update_every, usec_t dt) {
420 if (unlikely(!st)) {
421 st = rrdset_create("ipv4", "tcpofo", NULL, "tcp", NULL, "TCP Out-Of-Order Queue", "packets/s", 3050, update_every, RRDSET_TYPE_LINE);
422
423 - rrddim_add(st, "TCPOFOQueue", "inqueue", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
423 + rrddim_add(st, "TCPOFOQueue", "inqueue", 1, 1, RRD_ALGORITHM_INCREMENTAL);
424 }
425 else rrdset_next(st);
426
@@ -437,9 +437,9 @@ int do_macos_sysctl(int update_every, usec_t dt) {
437 if (unlikely(!st)) {
438 st = rrdset_create("ipv4", "tcpsyncookies", NULL, "tcp", NULL, "TCP SYN Cookies", "packets/s", 3100, update_every, RRDSET_TYPE_LINE);
439
440 - rrddim_add(st, "SyncookiesRecv", "received", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
441 - rrddim_add(st, "SyncookiesSent", "sent", -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
442 - rrddim_add(st, "SyncookiesFailed", "failed", -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
440 + rrddim_add(st, "SyncookiesRecv", "received", 1, 1, RRD_ALGORITHM_INCREMENTAL);
441 + rrddim_add(st, "SyncookiesSent", "sent", -1, 1, RRD_ALGORITHM_INCREMENTAL);
442 + rrddim_add(st, "SyncookiesFailed", "failed", -1, 1, RRD_ALGORITHM_INCREMENTAL);
443 }
444 else rrdset_next(st);
445
@@ -458,8 +458,8 @@ int do_macos_sysctl(int update_every, usec_t dt) {
458 st = rrdset_create("ipv4", "ecnpkts", NULL, "ecn", NULL, "IPv4 ECN Statistics", "packets/s", 8700, update_every, RRDSET_TYPE_LINE);
459 st->isdetail = 1;
460
461 - rrddim_add(st, "InCEPkts", "CEP", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
462 - rrddim_add(st, "InNoECTPkts", "NoECTP", -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
461 + rrddim_add(st, "InCEPkts", "CEP", 1, 1, RRD_ALGORITHM_INCREMENTAL);
462 + rrddim_add(st, "InNoECTPkts", "NoECTP", -1, 1, RRD_ALGORITHM_INCREMENTAL);
463 }
464 else rrdset_next(st);
465
@@ -487,8 +487,8 @@ int do_macos_sysctl(int update_every, usec_t dt) {
487 st = rrdset_create("ipv4", "udppackets", NULL, "udp", NULL, "IPv4 UDP Packets",
488 "packets/s", 2601, update_every, RRDSET_TYPE_LINE);
489
490 - rrddim_add(st, "InDatagrams", "received", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
491 - rrddim_add(st, "OutDatagrams", "sent", -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
490 + rrddim_add(st, "InDatagrams", "received", 1, 1, RRD_ALGORITHM_INCREMENTAL);
491 + rrddim_add(st, "OutDatagrams", "sent", -1, 1, RRD_ALGORITHM_INCREMENTAL);
492 } else
493 rrdset_next(st);
494
@@ -506,11 +506,11 @@ int do_macos_sysctl(int update_every, usec_t dt) {
506 2701, update_every, RRDSET_TYPE_LINE);
507 st->isdetail = 1;
508
509 - rrddim_add(st, "RcvbufErrors", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
510 - rrddim_add(st, "InErrors", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
511 - rrddim_add(st, "NoPorts", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
512 - rrddim_add(st, "InCsumErrors", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
513 - rrddim_add(st, "IgnoredMulti", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
509 + rrddim_add(st, "RcvbufErrors", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
510 + rrddim_add(st, "InErrors", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
511 + rrddim_add(st, "NoPorts", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
512 + rrddim_add(st, "InCsumErrors", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
513 + rrddim_add(st, "IgnoredMulti", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
514 } else
515 rrdset_next(st);
516
@@ -549,8 +549,8 @@ int do_macos_sysctl(int update_every, usec_t dt) {
549 2602,
550 update_every, RRDSET_TYPE_LINE);
551
552 - rrddim_add(st, "InMsgs", "received", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
553 - rrddim_add(st, "OutMsgs", "sent", -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
552 + rrddim_add(st, "InMsgs", "received", 1, 1, RRD_ALGORITHM_INCREMENTAL);
553 + rrddim_add(st, "OutMsgs", "sent", -1, 1, RRD_ALGORITHM_INCREMENTAL);
554 } else
555 rrdset_next(st);
556
@@ -567,9 +567,9 @@ int do_macos_sysctl(int update_every, usec_t dt) {
567 "packets/s",
568 2603, update_every, RRDSET_TYPE_LINE);
569
570 - rrddim_add(st, "InErrors", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
571 - rrddim_add(st, "OutErrors", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
572 - rrddim_add(st, "InCsumErrors", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
570 + rrddim_add(st, "InErrors", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
571 + rrddim_add(st, "OutErrors", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
572 + rrddim_add(st, "InCsumErrors", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
573 } else
574 rrdset_next(st);
575
@@ -588,10 +588,10 @@ int do_macos_sysctl(int update_every, usec_t dt) {
588 st = rrdset_create("ipv4", "icmpmsg", NULL, "icmp", NULL, "IPv4 ICMP Messsages",
589 "packets/s", 2604, update_every, RRDSET_TYPE_LINE);
590
591 - rrddim_add(st, "InEchoReps", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
592 - rrddim_add(st, "OutEchoReps", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
593 - rrddim_add(st, "InEchos", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
594 - rrddim_add(st, "OutEchos", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
591 + rrddim_add(st, "InEchoReps", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
592 + rrddim_add(st, "OutEchoReps", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
593 + rrddim_add(st, "InEchos", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
594 + rrddim_add(st, "OutEchos", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
595 } else
596 rrdset_next(st);
597
@@ -625,10 +625,10 @@ int do_macos_sysctl(int update_every, usec_t dt) {
625 st = rrdset_create("ipv4", "packets", NULL, "packets", NULL, "IPv4 Packets", "packets/s",
626 3000, update_every, RRDSET_TYPE_LINE);
627
628 - rrddim_add(st, "InReceives", "received", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
629 - rrddim_add(st, "OutRequests", "sent", -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
630 - rrddim_add(st, "ForwDatagrams", "forwarded", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
631 - rrddim_add(st, "InDelivers", "delivered", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
628 + rrddim_add(st, "InReceives", "received", 1, 1, RRD_ALGORITHM_INCREMENTAL);
629 + rrddim_add(st, "OutRequests", "sent", -1, 1, RRD_ALGORITHM_INCREMENTAL);
630 + rrddim_add(st, "ForwDatagrams", "forwarded", 1, 1, RRD_ALGORITHM_INCREMENTAL);
631 + rrddim_add(st, "InDelivers", "delivered", 1, 1, RRD_ALGORITHM_INCREMENTAL);
632 } else
633 rrdset_next(st);
634
@@ -648,9 +648,9 @@ int do_macos_sysctl(int update_every, usec_t dt) {
648 "packets/s", 3010, update_every, RRDSET_TYPE_LINE);
649 st->isdetail = 1;
650
651 - rrddim_add(st, "FragOKs", "ok", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
652 - rrddim_add(st, "FragFails", "failed", -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
653 - rrddim_add(st, "FragCreates", "created", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
651 + rrddim_add(st, "FragOKs", "ok", 1, 1, RRD_ALGORITHM_INCREMENTAL);
652 + rrddim_add(st, "FragFails", "failed", -1, 1, RRD_ALGORITHM_INCREMENTAL);
653 + rrddim_add(st, "FragCreates", "created", 1, 1, RRD_ALGORITHM_INCREMENTAL);
654 } else
655 rrdset_next(st);
656
@@ -670,9 +670,9 @@ int do_macos_sysctl(int update_every, usec_t dt) {
670 "packets/s", 3011, update_every, RRDSET_TYPE_LINE);
671 st->isdetail = 1;
672
673 - rrddim_add(st, "ReasmOKs", "ok", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
674 - rrddim_add(st, "ReasmFails", "failed", -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
675 - rrddim_add(st, "ReasmReqds", "all", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
673 + rrddim_add(st, "ReasmOKs", "ok", 1, 1, RRD_ALGORITHM_INCREMENTAL);
674 + rrddim_add(st, "ReasmFails", "failed", -1, 1, RRD_ALGORITHM_INCREMENTAL);
675 + rrddim_add(st, "ReasmReqds", "all", 1, 1, RRD_ALGORITHM_INCREMENTAL);
676 } else
677 rrdset_next(st);
678
@@ -692,14 +692,14 @@ int do_macos_sysctl(int update_every, usec_t dt) {
692 update_every, RRDSET_TYPE_LINE);
693 st->isdetail = 1;
694
695 - rrddim_add(st, "InDiscards", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
696 - rrddim_add(st, "OutDiscards", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
695 + rrddim_add(st, "InDiscards", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
696 + rrddim_add(st, "OutDiscards", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
697
698 - rrddim_add(st, "InHdrErrors", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
699 - rrddim_add(st, "OutNoRoutes", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
698 + rrddim_add(st, "InHdrErrors", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
699 + rrddim_add(st, "OutNoRoutes", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
700
701 - rrddim_add(st, "InAddrErrors", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
702 - rrddim_add(st, "InUnknownProtos", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
701 + rrddim_add(st, "InAddrErrors", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
702 + rrddim_add(st, "InUnknownProtos", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
703 } else
704 rrdset_next(st);
705
@@ -736,10 +736,10 @@ int do_macos_sysctl(int update_every, usec_t dt) {
736 st = rrdset_create("ipv6", "packets", NULL, "packets", NULL, "IPv6 Packets", "packets/s", 3000,
737 update_every, RRDSET_TYPE_LINE);
738
739 - rrddim_add(st, "received", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
740 - rrddim_add(st, "sent", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
741 - rrddim_add(st, "forwarded", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
742 - rrddim_add(st, "delivers", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
739 + rrddim_add(st, "received", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
740 + rrddim_add(st, "sent", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
741 + rrddim_add(st, "forwarded", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
742 + rrddim_add(st, "delivers", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
743 } else
744 rrdset_next(st);
745
@@ -762,9 +762,9 @@ int do_macos_sysctl(int update_every, usec_t dt) {
762 "packets/s", 3010, update_every, RRDSET_TYPE_LINE);
763 st->isdetail = 1;
764
765 - rrddim_add(st, "ok", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
766 - rrddim_add(st, "failed", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
767 - rrddim_add(st, "all", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
765 + rrddim_add(st, "ok", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
766 + rrddim_add(st, "failed", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
767 + rrddim_add(st, "all", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
768 } else
769 rrdset_next(st);
770
@@ -786,10 +786,10 @@ int do_macos_sysctl(int update_every, usec_t dt) {
786 "packets/s", 3011, update_every, RRDSET_TYPE_LINE);
787 st->isdetail = 1;
788
789 - rrddim_add(st, "ok", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
790 - rrddim_add(st, "failed", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
791 - rrddim_add(st, "timeout", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
792 - rrddim_add(st, "all", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
789 + rrddim_add(st, "ok", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
790 + rrddim_add(st, "failed", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
791 + rrddim_add(st, "timeout", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
792 + rrddim_add(st, "all", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
793 } else
794 rrdset_next(st);
795
@@ -819,15 +819,15 @@ int do_macos_sysctl(int update_every, usec_t dt) {
819 update_every, RRDSET_TYPE_LINE);
820 st->isdetail = 1;
821
822 - rrddim_add(st, "InDiscards", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
823 - rrddim_add(st, "OutDiscards", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
822 + rrddim_add(st, "InDiscards", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
823 + rrddim_add(st, "OutDiscards", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
824
825 - rrddim_add(st, "InHdrErrors", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
826 - rrddim_add(st, "InAddrErrors", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
827 - rrddim_add(st, "InTruncatedPkts", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
828 - rrddim_add(st, "InNoRoutes", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
825 + rrddim_add(st, "InHdrErrors", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
826 + rrddim_add(st, "InAddrErrors", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
827 + rrddim_add(st, "InTruncatedPkts", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
828 + rrddim_add(st, "InNoRoutes", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
829
830 - rrddim_add(st, "OutNoRoutes", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
830 + rrddim_add(st, "OutNoRoutes", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
831 } else
832 rrdset_next(st);
833
@@ -865,8 +865,8 @@ int do_macos_sysctl(int update_every, usec_t dt) {
865 st = rrdset_create("ipv6", "icmp", NULL, "icmp", NULL, "IPv6 ICMP Messages",
866 "messages/s", 10000, update_every, RRDSET_TYPE_LINE);
867
868 - rrddim_add(st, "received", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
869 - rrddim_add(st, "sent", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
868 + rrddim_add(st, "received", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
869 + rrddim_add(st, "sent", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
870 } else
871 rrdset_next(st);
872
@@ -884,8 +884,8 @@ int do_macos_sysctl(int update_every, usec_t dt) {
884 st = rrdset_create("ipv6", "icmpredir", NULL, "icmp", NULL, "IPv6 ICMP Redirects",
885 "redirects/s", 10050, update_every, RRDSET_TYPE_LINE);
886
887 - rrddim_add(st, "received", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
888 - rrddim_add(st, "sent", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
887 + rrddim_add(st, "received", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
888 + rrddim_add(st, "sent", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
889 } else
890 rrdset_next(st);
891
@@ -913,17 +913,17 @@ int do_macos_sysctl(int update_every, usec_t dt) {
913 if (unlikely(!st)) {
914 st = rrdset_create("ipv6", "icmperrors", NULL, "icmp", NULL, "IPv6 ICMP Errors", "errors/s", 10100, update_every, RRDSET_TYPE_LINE);
915
916 - rrddim_add(st, "InErrors", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
917 - rrddim_add(st, "OutErrors", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
918 -
919 - rrddim_add(st, "InCsumErrors", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
920 - rrddim_add(st, "InDestUnreachs", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
921 - rrddim_add(st, "InPktTooBigs", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
922 - rrddim_add(st, "InTimeExcds", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
923 - rrddim_add(st, "InParmProblems", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
924 - rrddim_add(st, "OutDestUnreachs", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
925 - rrddim_add(st, "OutTimeExcds", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
926 - rrddim_add(st, "OutParmProblems", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
916 + rrddim_add(st, "InErrors", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
917 + rrddim_add(st, "OutErrors", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
918 +
919 + rrddim_add(st, "InCsumErrors", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
920 + rrddim_add(st, "InDestUnreachs", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
921 + rrddim_add(st, "InPktTooBigs", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
922 + rrddim_add(st, "InTimeExcds", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
923 + rrddim_add(st, "InParmProblems", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
924 + rrddim_add(st, "OutDestUnreachs", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
925 + rrddim_add(st, "OutTimeExcds", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
926 + rrddim_add(st, "OutParmProblems", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
927 } else
928 rrdset_next(st);
929
@@ -952,10 +952,10 @@ int do_macos_sysctl(int update_every, usec_t dt) {
952 if (unlikely(!st)) {
953 st = rrdset_create("ipv6", "icmpechos", NULL, "icmp", NULL, "IPv6 ICMP Echo", "messages/s", 10200, update_every, RRDSET_TYPE_LINE);
954
955 - rrddim_add(st, "InEchos", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
956 - rrddim_add(st, "OutEchos", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
957 - rrddim_add(st, "InEchoReplies", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
958 - rrddim_add(st, "OutEchoReplies", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
955 + rrddim_add(st, "InEchos", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
956 + rrddim_add(st, "OutEchos", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
957 + rrddim_add(st, "InEchoReplies", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
958 + rrddim_add(st, "OutEchoReplies", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
959 } else
960 rrdset_next(st);
961
@@ -978,10 +978,10 @@ int do_macos_sysctl(int update_every, usec_t dt) {
978 if (unlikely(!st)) {
979 st = rrdset_create("ipv6", "icmprouter", NULL, "icmp", NULL, "IPv6 Router Messages", "messages/s", 10400, update_every, RRDSET_TYPE_LINE);
980
981 - rrddim_add(st, "InSolicits", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
982 - rrddim_add(st, "OutSolicits", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
983 - rrddim_add(st, "InAdvertisements", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
984 - rrddim_add(st, "OutAdvertisements", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
981 + rrddim_add(st, "InSolicits", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
982 + rrddim_add(st, "OutSolicits", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
983 + rrddim_add(st, "InAdvertisements", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
984 + rrddim_add(st, "OutAdvertisements", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
985 } else
986 rrdset_next(st);
987
@@ -1004,10 +1004,10 @@ int do_macos_sysctl(int update_every, usec_t dt) {
1004 if (unlikely(!st)) {
1005 st = rrdset_create("ipv6", "icmpneighbor", NULL, "icmp", NULL, "IPv6 Neighbor Messages", "messages/s", 10500, update_every, RRDSET_TYPE_LINE);
1006
1007 - rrddim_add(st, "InSolicits", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
1008 - rrddim_add(st, "OutSolicits", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
1009 - rrddim_add(st, "InAdvertisements", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
1010 - rrddim_add(st, "OutAdvertisements", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
1007 + rrddim_add(st, "InSolicits", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
1008 + rrddim_add(st, "OutSolicits", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
1009 + rrddim_add(st, "InAdvertisements", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
1010 + rrddim_add(st, "OutAdvertisements", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
1011 } else
1012 rrdset_next(st);
1013
@@ -1037,16 +1037,16 @@ int do_macos_sysctl(int update_every, usec_t dt) {
1037 st = rrdset_create("ipv6", "icmptypes", NULL, "icmp", NULL, "IPv6 ICMP Types",
1038 "messages/s", 10700, update_every, RRDSET_TYPE_LINE);
1039
1040 - rrddim_add(st, "InType1", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
1041 - rrddim_add(st, "InType128", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
1042 - rrddim_add(st, "InType129", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
1043 - rrddim_add(st, "InType136", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
1044 - rrddim_add(st, "OutType1", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
1045 - rrddim_add(st, "OutType128", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
1046 - rrddim_add(st, "OutType129", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
1047 - rrddim_add(st, "OutType133", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
1048 - rrddim_add(st, "OutType135", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
1049 - rrddim_add(st, "OutType143", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
1040 + rrddim_add(st, "InType1", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
1041 + rrddim_add(st, "InType128", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
1042 + rrddim_add(st, "InType129", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
1043 + rrddim_add(st, "InType136", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
1044 + rrddim_add(st, "OutType1", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
1045 + rrddim_add(st, "OutType128", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
1046 + rrddim_add(st, "OutType129", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
1047 + rrddim_add(st, "OutType133", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
1048 + rrddim_add(st, "OutType135", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
1049 + rrddim_add(st, "OutType143", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
1050 } else
1051 rrdset_next(st);
1052
@@ -1077,7 +1077,7 @@ int do_macos_sysctl(int update_every, usec_t dt) {
1077
1078 if(unlikely(!st)) {
1079 st = rrdset_create("system", "uptime", NULL, "uptime", NULL, "System Uptime", "seconds", 1000, update_every, RRDSET_TYPE_LINE);
1080 - rrddim_add(st, "uptime", NULL, 1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
1080 + rrddim_add(st, "uptime", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
1081 }
1082 else rrdset_next(st);
1083
src/main.c
+2 -2
@@ -10,7 +10,7 @@ void netdata_cleanup_and_exit(int ret) {
10 debug(D_EXIT, "Called: netdata_cleanup_and_exit()");
11
12 // save the database
13 - rrdset_save_all();
13 + rrdhost_save_all();
14
15 // unlink the pid
16 if(pidfile[0]) {
@@ -23,7 +23,7 @@ void netdata_cleanup_and_exit(int ret) {
23 //kill_childs();
24
25 // free database
26 - rrdset_free_all();
26 + rrdhost_free_all();
27 #endif
28
29 info("netdata exiting. Bye bye...");
src/plugin_checks.c
+7 -7
@@ -17,17 +17,17 @@ void *checks_main(void *ptr) {
17 RRDSET *check1, *check2, *check3, *apps_cpu = NULL;
18
19 check1 = rrdset_create("netdata", "check1", NULL, "netdata", NULL, "Caller gives microseconds", "a million !", 99999, rrd_update_every, RRDSET_TYPE_LINE);
20 - rrddim_add(check1, "absolute", NULL, -1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
21 - rrddim_add(check1, "incremental", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
20 + rrddim_add(check1, "absolute", NULL, -1, 1, RRD_ALGORITHM_ABSOLUTE);
21 + rrddim_add(check1, "incremental", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
22
23 check2 = rrdset_create("netdata", "check2", NULL, "netdata", NULL, "Netdata calcs microseconds", "a million !", 99999, rrd_update_every, RRDSET_TYPE_LINE);
24 - rrddim_add(check2, "absolute", NULL, -1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
25 - rrddim_add(check2, "incremental", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
24 + rrddim_add(check2, "absolute", NULL, -1, 1, RRD_ALGORITHM_ABSOLUTE);
25 + rrddim_add(check2, "incremental", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
26
27 check3 = rrdset_create("netdata", "checkdt", NULL, "netdata", NULL, "Clock difference", "microseconds diff", 99999, rrd_update_every, RRDSET_TYPE_LINE);
28 - rrddim_add(check3, "caller", NULL, 1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
29 - rrddim_add(check3, "netdata", NULL, 1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
30 - rrddim_add(check3, "apps.plugin", NULL, 1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
28 + rrddim_add(check3, "caller", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
29 + rrddim_add(check3, "netdata", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
30 + rrddim_add(check3, "apps.plugin", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
31
32 now_realtime_timeval(&last);
33 while(1) {
src/plugin_idlejitter.c
+1 -1
@@ -22,7 +22,7 @@ void *cpuidlejitter_main(void *ptr) {
22 RRDSET *st = rrdset_find_localhost("system.idlejitter");
23 if(!st) {
24 st = rrdset_create("system", "idlejitter", NULL, "processes", NULL, "CPU Idle Jitter", "microseconds lost/s", 9999, rrd_update_every, RRDSET_TYPE_LINE);
25 - rrddim_add(st, "jitter", NULL, 1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
25 + rrddim_add(st, "jitter", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
26 }
27
28 struct timeval before, after;
src/plugin_nfacct.c
+4 -4
@@ -142,14 +142,14 @@ void *nfacct_main(void *ptr) {
142 st = rrdset_create("netfilter", "nfacct_packets", NULL, "nfacct", NULL, "Netfilter Accounting Packets", "packets/s", 3206, rrd_update_every, RRDSET_TYPE_STACKED);
143
144 for(i = 0; i < nfacct_list->len ; i++)
145 - rrddim_add(st, nfacct_list->data[i].name, NULL, 1, rrd_update_every, RRDDIM_ALGORITHM_INCREMENTAL);
145 + rrddim_add(st, nfacct_list->data[i].name, NULL, 1, rrd_update_every, RRD_ALGORITHM_INCREMENTAL);
146 }
147 else rrdset_next(st);
148
149 for(i = 0; i < nfacct_list->len ; i++) {
150 RRDDIM *rd = rrddim_find(st, nfacct_list->data[i].name);
151
152 - if(!rd) rd = rrddim_add(st, nfacct_list->data[i].name, NULL, 1, rrd_update_every, RRDDIM_ALGORITHM_INCREMENTAL);
152 + if(!rd) rd = rrddim_add(st, nfacct_list->data[i].name, NULL, 1, rrd_update_every, RRD_ALGORITHM_INCREMENTAL);
153 if(rd) rrddim_set_by_pointer(st, rd, nfacct_list->data[i].pkts);
154 }
155
@@ -162,14 +162,14 @@ void *nfacct_main(void *ptr) {
162 st = rrdset_create("netfilter", "nfacct_bytes", NULL, "nfacct", NULL, "Netfilter Accounting Bandwidth", "kilobytes/s", 3207, rrd_update_every, RRDSET_TYPE_STACKED);
163
164 for(i = 0; i < nfacct_list->len ; i++)
165 - rrddim_add(st, nfacct_list->data[i].name, NULL, 1, 1000 * rrd_update_every, RRDDIM_ALGORITHM_INCREMENTAL);
165 + rrddim_add(st, nfacct_list->data[i].name, NULL, 1, 1000 * rrd_update_every, RRD_ALGORITHM_INCREMENTAL);
166 }
167 else rrdset_next(st);
168
169 for(i = 0; i < nfacct_list->len ; i++) {
170 RRDDIM *rd = rrddim_find(st, nfacct_list->data[i].name);
171
172 - if(!rd) rd = rrddim_add(st, nfacct_list->data[i].name, NULL, 1, 1000 * rrd_update_every, RRDDIM_ALGORITHM_INCREMENTAL);
172 + if(!rd) rd = rrddim_add(st, nfacct_list->data[i].name, NULL, 1, 1000 * rrd_update_every, RRD_ALGORITHM_INCREMENTAL);
173 if(rd) rrddim_set_by_pointer(st, rd, nfacct_list->data[i].bytes);
174 }
175
src/plugin_proc.c
+1 -1
@@ -121,7 +121,7 @@ void *proc_main(void *ptr) {
121 struct proc_module *pm = &proc_modules[i];
122 if(unlikely(!pm->enabled)) continue;
123
124 - pm->rd = rrddim_add(st, pm->dim, NULL, 1, 1000, RRDDIM_ALGORITHM_ABSOLUTE);
124 + pm->rd = rrddim_add(st, pm->dim, NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
125 }
126 }
127 }
src/plugin_proc_diskspace.c
+9 -9
@@ -160,9 +160,9 @@ static inline void do_disk_space_stats(struct mountinfo *mi, int update_every) {
160 m->st_space = rrdset_create("disk_space", disk, NULL, family, "disk.space", title, "GB", 2023, update_every, RRDSET_TYPE_STACKED);
161 }
162
163 - m->rd_space_avail = rrddim_add(m->st_space, "avail", NULL, bsize, 1024 * 1024 * 1024, RRDDIM_ALGORITHM_ABSOLUTE);
164 - m->rd_space_used = rrddim_add(m->st_space, "used", NULL, bsize, 1024 * 1024 * 1024, RRDDIM_ALGORITHM_ABSOLUTE);
165 - m->rd_space_reserved = rrddim_add(m->st_space, "reserved_for_root", "reserved for root", bsize, 1024 * 1024 * 1024, RRDDIM_ALGORITHM_ABSOLUTE);
163 + m->rd_space_avail = rrddim_add(m->st_space, "avail", NULL, bsize, 1024 * 1024 * 1024, RRD_ALGORITHM_ABSOLUTE);
164 + m->rd_space_used = rrddim_add(m->st_space, "used", NULL, bsize, 1024 * 1024 * 1024, RRD_ALGORITHM_ABSOLUTE);
165 + m->rd_space_reserved = rrddim_add(m->st_space, "reserved_for_root", "reserved for root", bsize, 1024 * 1024 * 1024, RRD_ALGORITHM_ABSOLUTE);
166 }
167 else
168 rrdset_next(m->st_space);
@@ -187,9 +187,9 @@ static inline void do_disk_space_stats(struct mountinfo *mi, int update_every) {
187 m->st_inodes = rrdset_create("disk_inodes", disk, NULL, family, "disk.inodes", title, "Inodes", 2024, update_every, RRDSET_TYPE_STACKED);
188 }
189
190 - m->rd_inodes_avail = rrddim_add(m->st_inodes, "avail", NULL, 1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
191 - m->rd_inodes_used = rrddim_add(m->st_inodes, "used", NULL, 1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
192 - m->rd_inodes_reserved = rrddim_add(m->st_inodes, "reserved_for_root", "reserved for root", 1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
190 + m->rd_inodes_avail = rrddim_add(m->st_inodes, "avail", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
191 + m->rd_inodes_used = rrddim_add(m->st_inodes, "used", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
192 + m->rd_inodes_reserved = rrddim_add(m->st_inodes, "reserved_for_root", "reserved for root", 1, 1, RRD_ALGORITHM_ABSOLUTE);
193 }
194 else
195 rrdset_next(m->st_inodes);
@@ -277,8 +277,8 @@ void *proc_diskspace_main(void *ptr) {
277 , "NetData Disk Space Plugin CPU usage", "milliseconds/s", 132020
278 , update_every, RRDSET_TYPE_STACKED);
279
280 - rd_user = rrddim_add(stcpu_thread, "user", NULL, 1, 1000, RRDDIM_ALGORITHM_INCREMENTAL);
281 - rd_system = rrddim_add(stcpu_thread, "system", NULL, 1, 1000, RRDDIM_ALGORITHM_INCREMENTAL);
280 + rd_user = rrddim_add(stcpu_thread, "user", NULL, 1, 1000, RRD_ALGORITHM_INCREMENTAL);
281 + rd_system = rrddim_add(stcpu_thread, "system", NULL, 1, 1000, RRD_ALGORITHM_INCREMENTAL);
282 }
283 else
284 rrdset_next(stcpu_thread);
@@ -295,7 +295,7 @@ void *proc_diskspace_main(void *ptr) {
295 , "NetData Disk Space Plugin Duration", "milliseconds/run", 132021
296 , update_every, RRDSET_TYPE_AREA);
297
298 - rd_duration = rrddim_add(st_duration, "duration", NULL, 1, 1000, RRDDIM_ALGORITHM_ABSOLUTE);
298 + rd_duration = rrddim_add(st_duration, "duration", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
299 }
300 else
301 rrdset_next(st_duration);
src/plugin_tc.c
+8 -8
@@ -388,7 +388,7 @@ static inline void tc_device_commit(struct tc_device *d) {
388 if(unlikely(!c->render)) continue;
389
390 if(unlikely(!c->rd_bytes))
391 - c->rd_bytes = rrddim_add(d->st_bytes, c->id, c->name?c->name:c->id, 8, 1024, RRDDIM_ALGORITHM_INCREMENTAL);
391 + c->rd_bytes = rrddim_add(d->st_bytes, c->id, c->name?c->name:c->id, 8, 1024, RRD_ALGORITHM_INCREMENTAL);
392 else if(unlikely(c->name_updated))
393 rrddim_set_name(d->st_bytes, c->rd_bytes, c->name);
394
@@ -428,7 +428,7 @@ static inline void tc_device_commit(struct tc_device *d) {
428 if(unlikely(!c->render)) continue;
429
430 if(unlikely(!c->rd_packets))
431 - c->rd_packets = rrddim_add(d->st_packets, c->id, c->name?c->name:c->id, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
431 + c->rd_packets = rrddim_add(d->st_packets, c->id, c->name?c->name:c->id, 1, 1, RRD_ALGORITHM_INCREMENTAL);
432 else if(unlikely(c->name_updated))
433 rrddim_set_name(d->st_packets, c->rd_packets, c->name);
434
@@ -468,7 +468,7 @@ static inline void tc_device_commit(struct tc_device *d) {
468 if(unlikely(!c->render)) continue;
469
470 if(unlikely(!c->rd_dropped))
471 - c->rd_dropped = rrddim_add(d->st_dropped, c->id, c->name?c->name:c->id, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
471 + c->rd_dropped = rrddim_add(d->st_dropped, c->id, c->name?c->name:c->id, 1, 1, RRD_ALGORITHM_INCREMENTAL);
472 else if(unlikely(c->name_updated))
473 rrddim_set_name(d->st_dropped, c->rd_dropped, c->name);
474
@@ -508,7 +508,7 @@ static inline void tc_device_commit(struct tc_device *d) {
508 if(unlikely(!c->render)) continue;
509
510 if(unlikely(!c->rd_tokens)) {
511 - c->rd_tokens = rrddim_add(d->st_tokens, c->id, c->name?c->name:c->id, 1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
511 + c->rd_tokens = rrddim_add(d->st_tokens, c->id, c->name?c->name:c->id, 1, 1, RRD_ALGORITHM_ABSOLUTE);
512 }
513 else if(unlikely(c->name_updated))
514 rrddim_set_name(d->st_tokens, c->rd_tokens, c->name);
@@ -550,7 +550,7 @@ static inline void tc_device_commit(struct tc_device *d) {
550 if(unlikely(!c->render)) continue;
551
552 if(unlikely(!c->rd_ctokens))
553 - c->rd_ctokens = rrddim_add(d->st_ctokens, c->id, c->name?c->name:c->id, 1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
553 + c->rd_ctokens = rrddim_add(d->st_ctokens, c->id, c->name?c->name:c->id, 1, 1, RRD_ALGORITHM_ABSOLUTE);
554 else if(unlikely(c->name_updated))
555 rrddim_set_name(d->st_ctokens, c->rd_ctokens, c->name);
556
@@ -977,8 +977,8 @@ void *tc_main(void *ptr) {
977 if(unlikely(!stcpu)) stcpu = rrdset_find_localhost("netdata.plugin_tc_cpu");
978 if(unlikely(!stcpu)) {
979 stcpu = rrdset_create("netdata", "plugin_tc_cpu", NULL, "tc.helper", NULL, "NetData TC CPU usage", "milliseconds/s", 135000, rrd_update_every, RRDSET_TYPE_STACKED);
980 - rrddim_add(stcpu, "user", NULL, 1, 1000, RRDDIM_ALGORITHM_INCREMENTAL);
981 - rrddim_add(stcpu, "system", NULL, 1, 1000, RRDDIM_ALGORITHM_INCREMENTAL);
980 + rrddim_add(stcpu, "user", NULL, 1, 1000, RRD_ALGORITHM_INCREMENTAL);
981 + rrddim_add(stcpu, "system", NULL, 1, 1000, RRD_ALGORITHM_INCREMENTAL);
982 }
983 else rrdset_next(stcpu);
984
@@ -989,7 +989,7 @@ void *tc_main(void *ptr) {
989 if(unlikely(!sttime)) stcpu = rrdset_find_localhost("netdata.plugin_tc_time");
990 if(unlikely(!sttime)) {
991 sttime = rrdset_create("netdata", "plugin_tc_time", NULL, "tc.helper", NULL, "NetData TC script execution", "milliseconds/run", 135001, rrd_update_every, RRDSET_TYPE_AREA);
992 - rrddim_add(sttime, "run_time", "run time", 1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
992 + rrddim_add(sttime, "run_time", "run time", 1, 1, RRD_ALGORITHM_ABSOLUTE);
993 }
994 else rrdset_next(sttime);
995
src/plugins_d.c
+7 -6
@@ -84,8 +84,7 @@ static int pluginsd_split_words(char *str, char **words, int max_words) {
84 }
85
86
87 -void *pluginsd_worker_thread(void *arg)
88 -{
87 +void *pluginsd_worker_thread(void *arg) {
88 struct plugind *cd = (struct plugind *)arg;
89 cd->obsolete = 0;
90
@@ -97,6 +96,7 @@ void *pluginsd_worker_thread(void *arg)
96 #endif
97
98 char *words[MAX_WORDS] = { NULL };
99 + uint32_t HOST_HASH = simple_hash("HOST");
100 uint32_t BEGIN_HASH = simple_hash("BEGIN");
101 uint32_t END_HASH = simple_hash("END");
102 uint32_t FLUSH_HASH = simple_hash("FLUSH");
@@ -109,6 +109,7 @@ void *pluginsd_worker_thread(void *arg)
109 #endif
110
111 size_t count = 0;
112 + RRDHOST *host = &localhost;
113
114 for(;;) {
115 if(unlikely(netdata_exit)) break;
@@ -175,7 +176,7 @@ void *pluginsd_worker_thread(void *arg)
176 break;
177 }
178
178 - st = rrdset_find_localhost(id);
179 + st = rrdset_find(host, id);
180 if(unlikely(!st)) {
181 error("PLUGINSD: '%s' is requesting a BEGIN on chart '%s', which does not exist. Disabling it.", cd->fullfilename, id);
182 cd->enabled = 0;
@@ -252,7 +253,7 @@ void *pluginsd_worker_thread(void *arg)
253 if(unlikely(!family || !*family)) family = NULL;
254 if(unlikely(!context || !*context)) context = NULL;
255
255 - st = rrdset_find_bytype_localhost(type, id);
256 + st = rrdset_find_bytype(host, type, id);
257 if(unlikely(!st)) {
258 debug(D_PLUGINSD, "PLUGINSD: Creating chart type='%s', id='%s', name='%s', family='%s', context='%s', chart='%s', priority=%d, update_every=%d"
259 , type, id
@@ -305,7 +306,7 @@ void *pluginsd_worker_thread(void *arg)
306 , st->id
307 , id
308 , name?name:""
308 - , rrddim_algorithm_name(rrddim_algorithm_id(algorithm))
309 + , rrd_algorithm_name(rrd_algorithm_id(algorithm))
310 , multiplier
311 , divisor
312 , options?options:""
@@ -313,7 +314,7 @@ void *pluginsd_worker_thread(void *arg)
314
315 RRDDIM *rd = rrddim_find(st, id);
316 if(unlikely(!rd)) {
316 - rd = rrddim_add(st, id, name, multiplier, divisor, rrddim_algorithm_id(algorithm));
317 + rd = rrddim_add(st, id, name, multiplier, divisor, rrd_algorithm_id(algorithm));
318 rd->flags = 0x00000000;
319 if(options && *options) {
320 if(strstr(options, "hidden") != NULL) rrddim_flag_set(rd, RRDDIM_FLAG_HIDDEN);
src/proc_diskstats.c
+16 -16
@@ -421,8 +421,8 @@ int do_proc_diskstats(int update_every, usec_t dt) {
421 if(unlikely(!st)) {
422 st = rrdset_create(RRD_TYPE_DISK, disk, NULL, family, "disk.io", "Disk I/O Bandwidth", "kilobytes/s", 2000, update_every, RRDSET_TYPE_AREA);
423
424 - rrddim_add(st, "reads", NULL, d->sector_size, 1024, RRDDIM_ALGORITHM_INCREMENTAL);
425 - rrddim_add(st, "writes", NULL, d->sector_size * -1, 1024, RRDDIM_ALGORITHM_INCREMENTAL);
424 + rrddim_add(st, "reads", NULL, d->sector_size, 1024, RRD_ALGORITHM_INCREMENTAL);
425 + rrddim_add(st, "writes", NULL, d->sector_size * -1, 1024, RRD_ALGORITHM_INCREMENTAL);
426 }
427 else rrdset_next(st);
428
@@ -441,8 +441,8 @@ int do_proc_diskstats(int update_every, usec_t dt) {
441 st = rrdset_create("disk_ops", disk, NULL, family, "disk.ops", "Disk Completed I/O Operations", "operations/s", 2001, update_every, RRDSET_TYPE_LINE);
442 st->isdetail = 1;
443
444 - rrddim_add(st, "reads", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
445 - rrddim_add(st, "writes", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
444 + rrddim_add(st, "reads", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
445 + rrddim_add(st, "writes", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
446 }
447 else rrdset_next(st);
448
@@ -461,7 +461,7 @@ int do_proc_diskstats(int update_every, usec_t dt) {
461 st = rrdset_create("disk_qops", disk, NULL, family, "disk.qops", "Disk Current I/O Operations", "operations", 2002, update_every, RRDSET_TYPE_LINE);
462 st->isdetail = 1;
463
464 - rrddim_add(st, "operations", NULL, 1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
464 + rrddim_add(st, "operations", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
465 }
466 else rrdset_next(st);
467
@@ -479,7 +479,7 @@ int do_proc_diskstats(int update_every, usec_t dt) {
479 st = rrdset_create("disk_backlog", disk, NULL, family, "disk.backlog", "Disk Backlog", "backlog (ms)", 2003, update_every, RRDSET_TYPE_AREA);
480 st->isdetail = 1;
481
482 - rrddim_add(st, "backlog", NULL, 1, 10, RRDDIM_ALGORITHM_INCREMENTAL);
482 + rrddim_add(st, "backlog", NULL, 1, 10, RRD_ALGORITHM_INCREMENTAL);
483 }
484 else rrdset_next(st);
485
@@ -497,7 +497,7 @@ int do_proc_diskstats(int update_every, usec_t dt) {
497 st = rrdset_create("disk_util", disk, NULL, family, "disk.util", "Disk Utilization Time", "% of time working", 2004, update_every, RRDSET_TYPE_AREA);
498 st->isdetail = 1;
499
500 - rrddim_add(st, "utilization", NULL, 1, 10, RRDDIM_ALGORITHM_INCREMENTAL);
500 + rrddim_add(st, "utilization", NULL, 1, 10, RRD_ALGORITHM_INCREMENTAL);
501 }
502 else rrdset_next(st);
503
@@ -515,8 +515,8 @@ int do_proc_diskstats(int update_every, usec_t dt) {
515 st = rrdset_create("disk_mops", disk, NULL, family, "disk.mops", "Disk Merged Operations", "merged operations/s", 2021, update_every, RRDSET_TYPE_LINE);
516 st->isdetail = 1;
517
518 - rrddim_add(st, "reads", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
519 - rrddim_add(st, "writes", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
518 + rrddim_add(st, "reads", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
519 + rrddim_add(st, "writes", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
520 }
521 else rrdset_next(st);
522
@@ -535,8 +535,8 @@ int do_proc_diskstats(int update_every, usec_t dt) {
535 st = rrdset_create("disk_iotime", disk, NULL, family, "disk.iotime", "Disk Total I/O Time", "milliseconds/s", 2022, update_every, RRDSET_TYPE_LINE);
536 st->isdetail = 1;
537
538 - rrddim_add(st, "reads", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
539 - rrddim_add(st, "writes", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
538 + rrddim_add(st, "reads", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
539 + rrddim_add(st, "writes", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
540 }
541 else rrdset_next(st);
542
@@ -557,8 +557,8 @@ int do_proc_diskstats(int update_every, usec_t dt) {
557 st = rrdset_create("disk_await", disk, NULL, family, "disk.await", "Average Completed I/O Operation Time", "ms per operation", 2005, update_every, RRDSET_TYPE_LINE);
558 st->isdetail = 1;
559
560 - rrddim_add(st, "reads", NULL, 1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
561 - rrddim_add(st, "writes", NULL, -1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
560 + rrddim_add(st, "reads", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
561 + rrddim_add(st, "writes", NULL, -1, 1, RRD_ALGORITHM_ABSOLUTE);
562 }
563 else rrdset_next(st);
564
@@ -574,8 +574,8 @@ int do_proc_diskstats(int update_every, usec_t dt) {
574 st = rrdset_create("disk_avgsz", disk, NULL, family, "disk.avgsz", "Average Completed I/O Operation Bandwidth", "kilobytes per operation", 2006, update_every, RRDSET_TYPE_AREA);
575 st->isdetail = 1;
576
577 - rrddim_add(st, "reads", NULL, d->sector_size, 1024, RRDDIM_ALGORITHM_ABSOLUTE);
578 - rrddim_add(st, "writes", NULL, d->sector_size * -1, 1024, RRDDIM_ALGORITHM_ABSOLUTE);
577 + rrddim_add(st, "reads", NULL, d->sector_size, 1024, RRD_ALGORITHM_ABSOLUTE);
578 + rrddim_add(st, "writes", NULL, d->sector_size * -1, 1024, RRD_ALGORITHM_ABSOLUTE);
579 }
580 else rrdset_next(st);
581
@@ -591,7 +591,7 @@ int do_proc_diskstats(int update_every, usec_t dt) {
591 st = rrdset_create("disk_svctm", disk, NULL, family, "disk.svctm", "Average Service Time", "ms per operation", 2007, update_every, RRDSET_TYPE_LINE);
592 st->isdetail = 1;
593
594 - rrddim_add(st, "svctm", NULL, 1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
594 + rrddim_add(st, "svctm", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
595 }
596 else rrdset_next(st);
597
src/proc_interrupts.c
+2 -2
@@ -159,7 +159,7 @@ int do_proc_interrupts(int update_every, usec_t dt) {
159 if(unlikely(!irr->rd || strncmp(irr->rd->name, irr->name, MAX_INTERRUPT_NAME) != 0)) {
160 irr->rd = rrddim_find(st, irr->id);
161 if(unlikely(!irr->rd))
162 - irr->rd = rrddim_add(st, irr->id, irr->name, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
162 + irr->rd = rrddim_add(st, irr->id, irr->name, 1, 1, RRD_ALGORITHM_INCREMENTAL);
163 else
164 rrddim_set_name(st, irr->rd, irr->name);
165
@@ -195,7 +195,7 @@ int do_proc_interrupts(int update_every, usec_t dt) {
195 if(unlikely(!irr->cpu[c].rd)) {
196 irr->cpu[c].rd = rrddim_find(st, irr->id);
197 if(unlikely(!irr->cpu[c].rd))
198 - irr->cpu[c].rd = rrddim_add(st, irr->id, irr->name, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
198 + irr->cpu[c].rd = rrddim_add(st, irr->id, irr->name, 1, 1, RRD_ALGORITHM_INCREMENTAL);
199 else
200 rrddim_set_name(st, irr->cpu[c].rd, irr->name);
201 }
src/proc_loadavg.c
+4 -4
@@ -53,9 +53,9 @@ int do_proc_loadavg(int update_every, usec_t dt) {
53 load_chart = rrdset_find_byname_localhost("system.load");
54 if(unlikely(!load_chart)) {
55 load_chart = rrdset_create("system", "load", NULL, "load", NULL, "System Load Average", "load", 100, (update_every < MIN_LOADAVG_UPDATE_EVERY) ? MIN_LOADAVG_UPDATE_EVERY : update_every, RRDSET_TYPE_LINE);
56 - rrddim_add(load_chart, "load1", NULL, 1, 1000, RRDDIM_ALGORITHM_ABSOLUTE);
57 - rrddim_add(load_chart, "load5", NULL, 1, 1000, RRDDIM_ALGORITHM_ABSOLUTE);
58 - rrddim_add(load_chart, "load15", NULL, 1, 1000, RRDDIM_ALGORITHM_ABSOLUTE);
56 + rrddim_add(load_chart, "load1", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
57 + rrddim_add(load_chart, "load5", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
58 + rrddim_add(load_chart, "load15", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
59 }
60 }
61 else
@@ -78,7 +78,7 @@ int do_proc_loadavg(int update_every, usec_t dt) {
78 processes_chart = rrdset_find_byname_localhost("system.active_processes");
79 if(unlikely(!processes_chart)) {
80 processes_chart = rrdset_create("system", "active_processes", NULL, "processes", NULL, "System Active Processes", "processes", 750, update_every, RRDSET_TYPE_LINE);
81 - rrddim_add(processes_chart, "active", NULL, 1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
81 + rrddim_add(processes_chart, "active", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
82 }
83 }
84 else rrdset_next(processes_chart);
src/proc_meminfo.c
+19 -19
@@ -144,10 +144,10 @@ int do_proc_meminfo(int update_every, usec_t dt) {
144 if(!st) {
145 st = rrdset_create("system", "ram", NULL, "ram", NULL, "System RAM", "MB", 200, update_every, RRDSET_TYPE_STACKED);
146
147 - rrddim_add(st, "free", NULL, 1, 1024, RRDDIM_ALGORITHM_ABSOLUTE);
148 - rrddim_add(st, "used", NULL, 1, 1024, RRDDIM_ALGORITHM_ABSOLUTE);
149 - rrddim_add(st, "cached", NULL, 1, 1024, RRDDIM_ALGORITHM_ABSOLUTE);
150 - rrddim_add(st, "buffers", NULL, 1, 1024, RRDDIM_ALGORITHM_ABSOLUTE);
147 + rrddim_add(st, "free", NULL, 1, 1024, RRD_ALGORITHM_ABSOLUTE);
148 + rrddim_add(st, "used", NULL, 1, 1024, RRD_ALGORITHM_ABSOLUTE);
149 + rrddim_add(st, "cached", NULL, 1, 1024, RRD_ALGORITHM_ABSOLUTE);
150 + rrddim_add(st, "buffers", NULL, 1, 1024, RRD_ALGORITHM_ABSOLUTE);
151 }
152 else rrdset_next(st);
153
@@ -170,8 +170,8 @@ int do_proc_meminfo(int update_every, usec_t dt) {
170 st = rrdset_create("system", "swap", NULL, "swap", NULL, "System Swap", "MB", 201, update_every, RRDSET_TYPE_STACKED);
171 st->isdetail = 1;
172
173 - rrddim_add(st, "free", NULL, 1, 1024, RRDDIM_ALGORITHM_ABSOLUTE);
174 - rrddim_add(st, "used", NULL, 1, 1024, RRDDIM_ALGORITHM_ABSOLUTE);
173 + rrddim_add(st, "free", NULL, 1, 1024, RRD_ALGORITHM_ABSOLUTE);
174 + rrddim_add(st, "used", NULL, 1, 1024, RRD_ALGORITHM_ABSOLUTE);
175 }
176 else rrdset_next(st);
177
@@ -190,7 +190,7 @@ int do_proc_meminfo(int update_every, usec_t dt) {
190 st = rrdset_create("mem", "hwcorrupt", NULL, "ecc", NULL, "Hardware Corrupted ECC", "MB", 9000, update_every, RRDSET_TYPE_LINE);
191 st->isdetail = 1;
192
193 - rrddim_add(st, "HardwareCorrupted", NULL, 1, 1024, RRDDIM_ALGORITHM_ABSOLUTE);
193 + rrddim_add(st, "HardwareCorrupted", NULL, 1, 1024, RRD_ALGORITHM_ABSOLUTE);
194 }
195 else rrdset_next(st);
196
@@ -206,7 +206,7 @@ int do_proc_meminfo(int update_every, usec_t dt) {
206 st = rrdset_create("mem", "committed", NULL, "system", NULL, "Committed (Allocated) Memory", "MB", 5000, update_every, RRDSET_TYPE_AREA);
207 st->isdetail = 1;
208
209 - rrddim_add(st, "Committed_AS", NULL, 1, 1024, RRDDIM_ALGORITHM_ABSOLUTE);
209 + rrddim_add(st, "Committed_AS", NULL, 1, 1024, RRD_ALGORITHM_ABSOLUTE);
210 }
211 else rrdset_next(st);
212
@@ -222,11 +222,11 @@ int do_proc_meminfo(int update_every, usec_t dt) {
222 st = rrdset_create("mem", "writeback", NULL, "kernel", NULL, "Writeback Memory", "MB", 4000, update_every, RRDSET_TYPE_LINE);
223 st->isdetail = 1;
224
225 - rrddim_add(st, "Dirty", NULL, 1, 1024, RRDDIM_ALGORITHM_ABSOLUTE);
226 - rrddim_add(st, "Writeback", NULL, 1, 1024, RRDDIM_ALGORITHM_ABSOLUTE);
227 - rrddim_add(st, "FuseWriteback", NULL, 1, 1024, RRDDIM_ALGORITHM_ABSOLUTE);
228 - rrddim_add(st, "NfsWriteback", NULL, 1, 1024, RRDDIM_ALGORITHM_ABSOLUTE);
229 - rrddim_add(st, "Bounce", NULL, 1, 1024, RRDDIM_ALGORITHM_ABSOLUTE);
225 + rrddim_add(st, "Dirty", NULL, 1, 1024, RRD_ALGORITHM_ABSOLUTE);
226 + rrddim_add(st, "Writeback", NULL, 1, 1024, RRD_ALGORITHM_ABSOLUTE);
227 + rrddim_add(st, "FuseWriteback", NULL, 1, 1024, RRD_ALGORITHM_ABSOLUTE);
228 + rrddim_add(st, "NfsWriteback", NULL, 1, 1024, RRD_ALGORITHM_ABSOLUTE);
229 + rrddim_add(st, "Bounce", NULL, 1, 1024, RRD_ALGORITHM_ABSOLUTE);
230 }
231 else rrdset_next(st);
232
@@ -246,10 +246,10 @@ int do_proc_meminfo(int update_every, usec_t dt) {
246 st = rrdset_create("mem", "kernel", NULL, "kernel", NULL, "Memory Used by Kernel", "MB", 6000, update_every, RRDSET_TYPE_STACKED);
247 st->isdetail = 1;
248
249 - rrddim_add(st, "Slab", NULL, 1, 1024, RRDDIM_ALGORITHM_ABSOLUTE);
250 - rrddim_add(st, "KernelStack", NULL, 1, 1024, RRDDIM_ALGORITHM_ABSOLUTE);
251 - rrddim_add(st, "PageTables", NULL, 1, 1024, RRDDIM_ALGORITHM_ABSOLUTE);
252 - rrddim_add(st, "VmallocUsed", NULL, 1, 1024, RRDDIM_ALGORITHM_ABSOLUTE);
249 + rrddim_add(st, "Slab", NULL, 1, 1024, RRD_ALGORITHM_ABSOLUTE);
250 + rrddim_add(st, "KernelStack", NULL, 1, 1024, RRD_ALGORITHM_ABSOLUTE);
251 + rrddim_add(st, "PageTables", NULL, 1, 1024, RRD_ALGORITHM_ABSOLUTE);
252 + rrddim_add(st, "VmallocUsed", NULL, 1, 1024, RRD_ALGORITHM_ABSOLUTE);
253 }
254 else rrdset_next(st);
255
@@ -268,8 +268,8 @@ int do_proc_meminfo(int update_every, usec_t dt) {
268 st = rrdset_create("mem", "slab", NULL, "slab", NULL, "Reclaimable Kernel Memory", "MB", 6500, update_every, RRDSET_TYPE_STACKED);
269 st->isdetail = 1;
270
271 - rrddim_add(st, "reclaimable", NULL, 1, 1024, RRDDIM_ALGORITHM_ABSOLUTE);
272 - rrddim_add(st, "unreclaimable", NULL, 1, 1024, RRDDIM_ALGORITHM_ABSOLUTE);
271 + rrddim_add(st, "reclaimable", NULL, 1, 1024, RRD_ALGORITHM_ABSOLUTE);
272 + rrddim_add(st, "unreclaimable", NULL, 1, 1024, RRD_ALGORITHM_ABSOLUTE);
273 }
274 else rrdset_next(st);
275
src/proc_net_dev.c
+16 -16
@@ -228,8 +228,8 @@ int do_proc_net_dev(int update_every, usec_t dt) {
228 if(!d->st_bandwidth)
229 d->st_bandwidth = rrdset_create("net", d->name, NULL, d->name, "net.net", "Bandwidth", "kilobits/s", 7000, update_every, RRDSET_TYPE_AREA);
230
231 - d->rd_rbytes = rrddim_add(d->st_bandwidth, "received", NULL, 8, 1024, RRDDIM_ALGORITHM_INCREMENTAL);
232 - d->rd_tbytes = rrddim_add(d->st_bandwidth, "sent", NULL, -8, 1024, RRDDIM_ALGORITHM_INCREMENTAL);
231 + d->rd_rbytes = rrddim_add(d->st_bandwidth, "received", NULL, 8, 1024, RRD_ALGORITHM_INCREMENTAL);
232 + d->rd_tbytes = rrddim_add(d->st_bandwidth, "sent", NULL, -8, 1024, RRD_ALGORITHM_INCREMENTAL);
233 }
234 else rrdset_next(d->st_bandwidth);
235
@@ -252,9 +252,9 @@ int do_proc_net_dev(int update_every, usec_t dt) {
252
253 d->st_packets->isdetail = 1;
254
255 - d->rd_rpackets = rrddim_add(d->st_packets, "received", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
256 - d->rd_tpackets = rrddim_add(d->st_packets, "sent", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
257 - d->rd_rmulticast = rrddim_add(d->st_packets, "multicast", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
255 + d->rd_rpackets = rrddim_add(d->st_packets, "received", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
256 + d->rd_tpackets = rrddim_add(d->st_packets, "sent", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
257 + d->rd_rmulticast = rrddim_add(d->st_packets, "multicast", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
258 }
259 else rrdset_next(d->st_packets);
260
@@ -278,8 +278,8 @@ int do_proc_net_dev(int update_every, usec_t dt) {
278
279 d->st_errors->isdetail = 1;
280
281 - d->rd_rerrors = rrddim_add(d->st_errors, "inbound", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
282 - d->rd_terrors = rrddim_add(d->st_errors, "outbound", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
281 + d->rd_rerrors = rrddim_add(d->st_errors, "inbound", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
282 + d->rd_terrors = rrddim_add(d->st_errors, "outbound", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
283 }
284 else rrdset_next(d->st_errors);
285
@@ -302,8 +302,8 @@ int do_proc_net_dev(int update_every, usec_t dt) {
302
303 d->st_drops->isdetail = 1;
304
305 - d->rd_rdrops = rrddim_add(d->st_drops, "inbound", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
306 - d->rd_tdrops = rrddim_add(d->st_drops, "outbound", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
305 + d->rd_rdrops = rrddim_add(d->st_drops, "inbound", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
306 + d->rd_tdrops = rrddim_add(d->st_drops, "outbound", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
307 }
308 else rrdset_next(d->st_drops);
309
@@ -326,8 +326,8 @@ int do_proc_net_dev(int update_every, usec_t dt) {
326
327 d->st_fifo->isdetail = 1;
328
329 - d->rd_rfifo = rrddim_add(d->st_fifo, "receive", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
330 - d->rd_tfifo = rrddim_add(d->st_fifo, "transmit", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
329 + d->rd_rfifo = rrddim_add(d->st_fifo, "receive", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
330 + d->rd_tfifo = rrddim_add(d->st_fifo, "transmit", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
331 }
332 else rrdset_next(d->st_fifo);
333
@@ -349,8 +349,8 @@ int do_proc_net_dev(int update_every, usec_t dt) {
349
350 d->st_compressed->isdetail = 1;
351
352 - d->rd_rcompressed = rrddim_add(d->st_compressed, "received", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
353 - d->rd_tcompressed = rrddim_add(d->st_compressed, "sent", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
352 + d->rd_rcompressed = rrddim_add(d->st_compressed, "received", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
353 + d->rd_tcompressed = rrddim_add(d->st_compressed, "sent", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
354 }
355 else rrdset_next(d->st_compressed);
356
@@ -372,9 +372,9 @@ int do_proc_net_dev(int update_every, usec_t dt) {
372
373 d->st_events->isdetail = 1;
374
375 - d->rd_rframe = rrddim_add(d->st_events, "frames", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
376 - d->rd_tcollisions = rrddim_add(d->st_events, "collisions", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
377 - d->rd_tcarrier = rrddim_add(d->st_events, "carrier", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
375 + d->rd_rframe = rrddim_add(d->st_events, "frames", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
376 + d->rd_tcollisions = rrddim_add(d->st_events, "collisions", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
377 + d->rd_tcarrier = rrddim_add(d->st_events, "carrier", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
378 }
379 else rrdset_next(d->st_events);
380
src/proc_net_ip_vs_stats.c
+5 -5
@@ -44,7 +44,7 @@ int do_proc_net_ip_vs_stats(int update_every, usec_t dt) {
44 if(!st) {
45 st = rrdset_create(RRD_TYPE_NET_IPVS, "sockets", NULL, RRD_TYPE_NET_IPVS, NULL, "IPVS New Connections", "connections/s", 3101, update_every, RRDSET_TYPE_LINE);
46
47 - rrddim_add(st, "connections", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
47 + rrddim_add(st, "connections", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
48 }
49 else rrdset_next(st);
50
@@ -59,8 +59,8 @@ int do_proc_net_ip_vs_stats(int update_every, usec_t dt) {
59 if(!st) {
60 st = rrdset_create(RRD_TYPE_NET_IPVS, "packets", NULL, RRD_TYPE_NET_IPVS, NULL, "IPVS Packets", "packets/s", 3102, update_every, RRDSET_TYPE_LINE);
61
62 - rrddim_add(st, "received", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
63 - rrddim_add(st, "sent", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
62 + rrddim_add(st, "received", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
63 + rrddim_add(st, "sent", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
64 }
65 else rrdset_next(st);
66
@@ -76,8 +76,8 @@ int do_proc_net_ip_vs_stats(int update_every, usec_t dt) {
76 if(!st) {
77 st = rrdset_create(RRD_TYPE_NET_IPVS, "net", NULL, RRD_TYPE_NET_IPVS, NULL, "IPVS Bandwidth", "kilobits/s", 3100, update_every, RRDSET_TYPE_AREA);
78
79 - rrddim_add(st, "received", NULL, 8, 1024, RRDDIM_ALGORITHM_INCREMENTAL);
80 - rrddim_add(st, "sent", NULL, -8, 1024, RRDDIM_ALGORITHM_INCREMENTAL);
79 + rrddim_add(st, "received", NULL, 8, 1024, RRD_ALGORITHM_INCREMENTAL);
80 + rrddim_add(st, "sent", NULL, -8, 1024, RRD_ALGORITHM_INCREMENTAL);
81 }
82 else rrdset_next(st);
83
src/proc_net_netstat.c
+35 -35
@@ -234,8 +234,8 @@ int do_proc_net_netstat(int update_every, usec_t dt) {
234 if(unlikely(!st)) {
235 st = rrdset_create("system", "ipv4", NULL, "network", NULL, "IPv4 Bandwidth", "kilobits/s", 500, update_every, RRDSET_TYPE_AREA);
236
237 - rrddim_add(st, "InOctets", "received", 8, 1024, RRDDIM_ALGORITHM_INCREMENTAL);
238 - rrddim_add(st, "OutOctets", "sent", -8, 1024, RRDDIM_ALGORITHM_INCREMENTAL);
237 + rrddim_add(st, "InOctets", "received", 8, 1024, RRD_ALGORITHM_INCREMENTAL);
238 + rrddim_add(st, "OutOctets", "sent", -8, 1024, RRD_ALGORITHM_INCREMENTAL);
239 }
240 else rrdset_next(st);
241
@@ -253,9 +253,9 @@ int do_proc_net_netstat(int update_every, usec_t dt) {
253 st = rrdset_create("ipv4", "inerrors", NULL, "errors", NULL, "IPv4 Input Errors", "packets/s", 4000, update_every, RRDSET_TYPE_LINE);
254 st->isdetail = 1;
255
256 - rrddim_add(st, "InNoRoutes", "noroutes", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
257 - rrddim_add(st, "InTruncatedPkts", "truncated", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
258 - rrddim_add(st, "InCsumErrors", "checksum", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
256 + rrddim_add(st, "InNoRoutes", "noroutes", 1, 1, RRD_ALGORITHM_INCREMENTAL);
257 + rrddim_add(st, "InTruncatedPkts", "truncated", 1, 1, RRD_ALGORITHM_INCREMENTAL);
258 + rrddim_add(st, "InCsumErrors", "checksum", 1, 1, RRD_ALGORITHM_INCREMENTAL);
259 }
260 else rrdset_next(st);
261
@@ -274,8 +274,8 @@ int do_proc_net_netstat(int update_every, usec_t dt) {
274 st = rrdset_create("ipv4", "mcast", NULL, "multicast", NULL, "IPv4 Multicast Bandwidth", "kilobits/s", 9000, update_every, RRDSET_TYPE_AREA);
275 st->isdetail = 1;
276
277 - rrddim_add(st, "InMcastOctets", "received", 8, 1024, RRDDIM_ALGORITHM_INCREMENTAL);
278 - rrddim_add(st, "OutMcastOctets", "sent", -8, 1024, RRDDIM_ALGORITHM_INCREMENTAL);
277 + rrddim_add(st, "InMcastOctets", "received", 8, 1024, RRD_ALGORITHM_INCREMENTAL);
278 + rrddim_add(st, "OutMcastOctets", "sent", -8, 1024, RRD_ALGORITHM_INCREMENTAL);
279 }
280 else rrdset_next(st);
281
@@ -293,8 +293,8 @@ int do_proc_net_netstat(int update_every, usec_t dt) {
293 st = rrdset_create("ipv4", "bcast", NULL, "broadcast", NULL, "IPv4 Broadcast Bandwidth", "kilobits/s", 8000, update_every, RRDSET_TYPE_AREA);
294 st->isdetail = 1;
295
296 - rrddim_add(st, "InBcastOctets", "received", 8, 1024, RRDDIM_ALGORITHM_INCREMENTAL);
297 - rrddim_add(st, "OutBcastOctets", "sent", -8, 1024, RRDDIM_ALGORITHM_INCREMENTAL);
296 + rrddim_add(st, "InBcastOctets", "received", 8, 1024, RRD_ALGORITHM_INCREMENTAL);
297 + rrddim_add(st, "OutBcastOctets", "sent", -8, 1024, RRD_ALGORITHM_INCREMENTAL);
298 }
299 else rrdset_next(st);
300
@@ -312,8 +312,8 @@ int do_proc_net_netstat(int update_every, usec_t dt) {
312 st = rrdset_create("ipv4", "mcastpkts", NULL, "multicast", NULL, "IPv4 Multicast Packets", "packets/s", 8600, update_every, RRDSET_TYPE_LINE);
313 st->isdetail = 1;
314
315 - rrddim_add(st, "InMcastPkts", "received", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
316 - rrddim_add(st, "OutMcastPkts", "sent", -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
315 + rrddim_add(st, "InMcastPkts", "received", 1, 1, RRD_ALGORITHM_INCREMENTAL);
316 + rrddim_add(st, "OutMcastPkts", "sent", -1, 1, RRD_ALGORITHM_INCREMENTAL);
317 }
318 else rrdset_next(st);
319
@@ -331,8 +331,8 @@ int do_proc_net_netstat(int update_every, usec_t dt) {
331 st = rrdset_create("ipv4", "bcastpkts", NULL, "broadcast", NULL, "IPv4 Broadcast Packets", "packets/s", 8500, update_every, RRDSET_TYPE_LINE);
332 st->isdetail = 1;
333
334 - rrddim_add(st, "InBcastPkts", "received", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
335 - rrddim_add(st, "OutBcastPkts", "sent", -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
334 + rrddim_add(st, "InBcastPkts", "received", 1, 1, RRD_ALGORITHM_INCREMENTAL);
335 + rrddim_add(st, "OutBcastPkts", "sent", -1, 1, RRD_ALGORITHM_INCREMENTAL);
336 }
337 else rrdset_next(st);
338
@@ -350,10 +350,10 @@ int do_proc_net_netstat(int update_every, usec_t dt) {
350 st = rrdset_create("ipv4", "ecnpkts", NULL, "ecn", NULL, "IPv4 ECN Statistics", "packets/s", 8700, update_every, RRDSET_TYPE_LINE);
351 st->isdetail = 1;
352
353 - rrddim_add(st, "InCEPkts", "CEP", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
354 - rrddim_add(st, "InNoECTPkts", "NoECTP", -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
355 - rrddim_add(st, "InECT0Pkts", "ECTP0", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
356 - rrddim_add(st, "InECT1Pkts", "ECTP1", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
353 + rrddim_add(st, "InCEPkts", "CEP", 1, 1, RRD_ALGORITHM_INCREMENTAL);
354 + rrddim_add(st, "InNoECTPkts", "NoECTP", -1, 1, RRD_ALGORITHM_INCREMENTAL);
355 + rrddim_add(st, "InECT0Pkts", "ECTP0", 1, 1, RRD_ALGORITHM_INCREMENTAL);
356 + rrddim_add(st, "InECT1Pkts", "ECTP1", 1, 1, RRD_ALGORITHM_INCREMENTAL);
357 }
358 else rrdset_next(st);
359
@@ -385,7 +385,7 @@ int do_proc_net_netstat(int update_every, usec_t dt) {
385 if(unlikely(!st)) {
386 st = rrdset_create("ipv4", "tcpmemorypressures", NULL, "tcp", NULL, "TCP Memory Pressures", "events/s", 3000, update_every, RRDSET_TYPE_LINE);
387
388 - rrddim_add(st, "TCPMemoryPressures", "pressures", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
388 + rrddim_add(st, "TCPMemoryPressures", "pressures", 1, 1, RRD_ALGORITHM_INCREMENTAL);
389 }
390 else rrdset_next(st);
391
@@ -401,12 +401,12 @@ int do_proc_net_netstat(int update_every, usec_t dt) {
401 if(unlikely(!st)) {
402 st = rrdset_create("ipv4", "tcpconnaborts", NULL, "tcp", NULL, "TCP Connection Aborts", "connections/s", 3010, update_every, RRDSET_TYPE_LINE);
403
404 - rrddim_add(st, "TCPAbortOnData", "baddata", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
405 - rrddim_add(st, "TCPAbortOnClose", "userclosed", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
406 - rrddim_add(st, "TCPAbortOnMemory", "nomemory", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
407 - rrddim_add(st, "TCPAbortOnTimeout", "timeout", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
408 - rrddim_add(st, "TCPAbortOnLinger", "linger", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
409 - rrddim_add(st, "TCPAbortFailed", "failed", -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
404 + rrddim_add(st, "TCPAbortOnData", "baddata", 1, 1, RRD_ALGORITHM_INCREMENTAL);
405 + rrddim_add(st, "TCPAbortOnClose", "userclosed", 1, 1, RRD_ALGORITHM_INCREMENTAL);
406 + rrddim_add(st, "TCPAbortOnMemory", "nomemory", 1, 1, RRD_ALGORITHM_INCREMENTAL);
407 + rrddim_add(st, "TCPAbortOnTimeout", "timeout", 1, 1, RRD_ALGORITHM_INCREMENTAL);
408 + rrddim_add(st, "TCPAbortOnLinger", "linger", 1, 1, RRD_ALGORITHM_INCREMENTAL);
409 + rrddim_add(st, "TCPAbortFailed", "failed", -1, 1, RRD_ALGORITHM_INCREMENTAL);
410 }
411 else rrdset_next(st);
412
@@ -426,10 +426,10 @@ int do_proc_net_netstat(int update_every, usec_t dt) {
426 if(unlikely(!st)) {
427 st = rrdset_create("ipv4", "tcpreorders", NULL, "tcp", NULL, "TCP Reordered Packets by Detection Method", "packets/s", 3020, update_every, RRDSET_TYPE_LINE);
428
429 - rrddim_add(st, "TCPTSReorder", "timestamp", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
430 - rrddim_add(st, "TCPSACKReorder", "sack", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
431 - rrddim_add(st, "TCPFACKReorder", "fack", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
432 - rrddim_add(st, "TCPRenoReorder", "reno", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
429 + rrddim_add(st, "TCPTSReorder", "timestamp", 1, 1, RRD_ALGORITHM_INCREMENTAL);
430 + rrddim_add(st, "TCPSACKReorder", "sack", 1, 1, RRD_ALGORITHM_INCREMENTAL);
431 + rrddim_add(st, "TCPFACKReorder", "fack", 1, 1, RRD_ALGORITHM_INCREMENTAL);
432 + rrddim_add(st, "TCPRenoReorder", "reno", 1, 1, RRD_ALGORITHM_INCREMENTAL);
433 }
434 else rrdset_next(st);
435
@@ -448,10 +448,10 @@ int do_proc_net_netstat(int update_every, usec_t dt) {
448 if(unlikely(!st)) {
449 st = rrdset_create("ipv4", "tcpofo", NULL, "tcp", NULL, "TCP Out-Of-Order Queue", "packets/s", 3050, update_every, RRDSET_TYPE_LINE);
450
451 - rrddim_add(st, "TCPOFOQueue", "inqueue", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
452 - rrddim_add(st, "TCPOFODrop", "dropped", -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
453 - rrddim_add(st, "TCPOFOMerge", "merged", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
454 - rrddim_add(st, "OfoPruned", "pruned", -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
451 + rrddim_add(st, "TCPOFOQueue", "inqueue", 1, 1, RRD_ALGORITHM_INCREMENTAL);
452 + rrddim_add(st, "TCPOFODrop", "dropped", -1, 1, RRD_ALGORITHM_INCREMENTAL);
453 + rrddim_add(st, "TCPOFOMerge", "merged", 1, 1, RRD_ALGORITHM_INCREMENTAL);
454 + rrddim_add(st, "OfoPruned", "pruned", -1, 1, RRD_ALGORITHM_INCREMENTAL);
455 }
456 else rrdset_next(st);
457
@@ -470,9 +470,9 @@ int do_proc_net_netstat(int update_every, usec_t dt) {
470 if(unlikely(!st)) {
471 st = rrdset_create("ipv4", "tcpsyncookies", NULL, "tcp", NULL, "TCP SYN Cookies", "packets/s", 3100, update_every, RRDSET_TYPE_LINE);
472
473 - rrddim_add(st, "SyncookiesRecv", "received", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
474 - rrddim_add(st, "SyncookiesSent", "sent", -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
475 - rrddim_add(st, "SyncookiesFailed", "failed", -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
473 + rrddim_add(st, "SyncookiesRecv", "received", 1, 1, RRD_ALGORITHM_INCREMENTAL);
474 + rrddim_add(st, "SyncookiesSent", "sent", -1, 1, RRD_ALGORITHM_INCREMENTAL);
475 + rrddim_add(st, "SyncookiesFailed", "failed", -1, 1, RRD_ALGORITHM_INCREMENTAL);
476 }
477 else rrdset_next(st);
478
src/proc_net_rpc_nfs.c
+8 -8
@@ -274,8 +274,8 @@ int do_proc_net_rpc_nfs(int update_every, usec_t dt) {
274 st = rrdset_create("nfs", "net", NULL, "network", NULL, "NFS Client Network", "operations/s", 5007, update_every, RRDSET_TYPE_STACKED);
275 st->isdetail = 1;
276
277 - rrddim_add(st, "udp", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
278 - rrddim_add(st, "tcp", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
277 + rrddim_add(st, "udp", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
278 + rrddim_add(st, "tcp", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
279 }
280 else rrdset_next(st);
281
@@ -296,9 +296,9 @@ int do_proc_net_rpc_nfs(int update_every, usec_t dt) {
296 st = rrdset_create("nfs", "rpc", NULL, "rpc", NULL, "NFS Client Remote Procedure Calls Statistics", "calls/s", 5008, update_every, RRDSET_TYPE_LINE);
297 st->isdetail = 1;
298
299 - rrddim_add(st, "calls", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
300 - rrddim_add(st, "retransmits", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
301 - rrddim_add(st, "auth_refresh", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
299 + rrddim_add(st, "calls", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
300 + rrddim_add(st, "retransmits", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
301 + rrddim_add(st, "auth_refresh", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
302 }
303 else rrdset_next(st);
304
@@ -317,7 +317,7 @@ int do_proc_net_rpc_nfs(int update_every, usec_t dt) {
317 st = rrdset_create("nfs", "proc2", NULL, "nfsv2rpc", NULL, "NFS v2 Client Remote Procedure Calls", "calls/s", 5009, update_every, RRDSET_TYPE_STACKED);
318
319 for(i = 0; nfs_proc2_values[i].present ; i++)
320 - rrddim_add(st, nfs_proc2_values[i].name, NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
320 + rrddim_add(st, nfs_proc2_values[i].name, NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
321 }
322 else rrdset_next(st);
323
@@ -336,7 +336,7 @@ int do_proc_net_rpc_nfs(int update_every, usec_t dt) {
336 st = rrdset_create("nfs", "proc3", NULL, "nfsv3rpc", NULL, "NFS v3 Client Remote Procedure Calls", "calls/s", 5010, update_every, RRDSET_TYPE_STACKED);
337
338 for(i = 0; nfs_proc3_values[i].present ; i++)
339 - rrddim_add(st, nfs_proc3_values[i].name, NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
339 + rrddim_add(st, nfs_proc3_values[i].name, NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
340 }
341 else rrdset_next(st);
342
@@ -355,7 +355,7 @@ int do_proc_net_rpc_nfs(int update_every, usec_t dt) {
355 st = rrdset_create("nfs", "proc4", NULL, "nfsv4rpc", NULL, "NFS v4 Client Remote Procedure Calls", "calls/s", 5011, update_every, RRDSET_TYPE_STACKED);
356
357 for(i = 0; nfs_proc4_values[i].present ; i++)
358 - rrddim_add(st, nfs_proc4_values[i].name, NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
358 + rrddim_add(st, nfs_proc4_values[i].name, NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
359 }
360 else rrdset_next(st);
361
src/proc_net_rpc_nfsd.c
+42 -42
@@ -496,9 +496,9 @@ int do_proc_net_rpc_nfsd(int update_every, usec_t dt) {
496 if(!st) {
497 st = rrdset_create("nfsd", "readcache", NULL, "cache", NULL, "NFS Server Read Cache", "reads/s", 5000, update_every, RRDSET_TYPE_STACKED);
498
499 - rrddim_add(st, "hits", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
500 - rrddim_add(st, "misses", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
501 - rrddim_add(st, "nocache", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
499 + rrddim_add(st, "hits", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
500 + rrddim_add(st, "misses", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
501 + rrddim_add(st, "nocache", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
502 }
503 else rrdset_next(st);
504
@@ -516,11 +516,11 @@ int do_proc_net_rpc_nfsd(int update_every, usec_t dt) {
516 st = rrdset_create("nfsd", "filehandles", NULL, "filehandles", NULL, "NFS Server File Handles", "handles/s", 5001, update_every, RRDSET_TYPE_LINE);
517 st->isdetail = 1;
518
519 - rrddim_add(st, "stale", NULL, 1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
520 - rrddim_add(st, "total_lookups", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
521 - rrddim_add(st, "anonymous_lookups", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
522 - rrddim_add(st, "dir_not_in_dcache", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
523 - rrddim_add(st, "non_dir_not_in_dcache", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
519 + rrddim_add(st, "stale", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
520 + rrddim_add(st, "total_lookups", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
521 + rrddim_add(st, "anonymous_lookups", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
522 + rrddim_add(st, "dir_not_in_dcache", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
523 + rrddim_add(st, "non_dir_not_in_dcache", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
524 }
525 else rrdset_next(st);
526
@@ -539,8 +539,8 @@ int do_proc_net_rpc_nfsd(int update_every, usec_t dt) {
539 if(!st) {
540 st = rrdset_create("nfsd", "io", NULL, "io", NULL, "NFS Server I/O", "kilobytes/s", 5002, update_every, RRDSET_TYPE_AREA);
541
542 - rrddim_add(st, "read", NULL, 1, 1000, RRDDIM_ALGORITHM_INCREMENTAL);
543 - rrddim_add(st, "write", NULL, -1, 1000, RRDDIM_ALGORITHM_INCREMENTAL);
542 + rrddim_add(st, "read", NULL, 1, 1000, RRD_ALGORITHM_INCREMENTAL);
543 + rrddim_add(st, "write", NULL, -1, 1000, RRD_ALGORITHM_INCREMENTAL);
544 }
545 else rrdset_next(st);
546
@@ -556,7 +556,7 @@ int do_proc_net_rpc_nfsd(int update_every, usec_t dt) {
556 if(!st) {
557 st = rrdset_create("nfsd", "threads", NULL, "threads", NULL, "NFS Server Threads", "threads", 5003, update_every, RRDSET_TYPE_LINE);
558
559 - rrddim_add(st, "threads", NULL, 1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
559 + rrddim_add(st, "threads", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
560 }
561 else rrdset_next(st);
562
@@ -567,7 +567,7 @@ int do_proc_net_rpc_nfsd(int update_every, usec_t dt) {
567 if(!st) {
568 st = rrdset_create("nfsd", "threads_fullcnt", NULL, "threads", NULL, "NFS Server Threads Full Count", "ops/s", 5004, update_every, RRDSET_TYPE_LINE);
569
570 - rrddim_add(st, "full_count", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
570 + rrddim_add(st, "full_count", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
571 }
572 else rrdset_next(st);
573
@@ -578,16 +578,16 @@ int do_proc_net_rpc_nfsd(int update_every, usec_t dt) {
578 if(!st) {
579 st = rrdset_create("nfsd", "threads_histogram", NULL, "threads", NULL, "NFS Server Threads Usage Histogram", "percentage", 5005, update_every, RRDSET_TYPE_LINE);
580
581 - rrddim_add(st, "0%-10%", NULL, 1, 1000, RRDDIM_ALGORITHM_ABSOLUTE);
582 - rrddim_add(st, "10%-20%", NULL, 1, 1000, RRDDIM_ALGORITHM_ABSOLUTE);
583 - rrddim_add(st, "20%-30%", NULL, 1, 1000, RRDDIM_ALGORITHM_ABSOLUTE);
584 - rrddim_add(st, "30%-40%", NULL, 1, 1000, RRDDIM_ALGORITHM_ABSOLUTE);
585 - rrddim_add(st, "40%-50%", NULL, 1, 1000, RRDDIM_ALGORITHM_ABSOLUTE);
586 - rrddim_add(st, "50%-60%", NULL, 1, 1000, RRDDIM_ALGORITHM_ABSOLUTE);
587 - rrddim_add(st, "60%-70%", NULL, 1, 1000, RRDDIM_ALGORITHM_ABSOLUTE);
588 - rrddim_add(st, "70%-80%", NULL, 1, 1000, RRDDIM_ALGORITHM_ABSOLUTE);
589 - rrddim_add(st, "80%-90%", NULL, 1, 1000, RRDDIM_ALGORITHM_ABSOLUTE);
590 - rrddim_add(st, "90%-100%", NULL, 1, 1000, RRDDIM_ALGORITHM_ABSOLUTE);
581 + rrddim_add(st, "0%-10%", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
582 + rrddim_add(st, "10%-20%", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
583 + rrddim_add(st, "20%-30%", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
584 + rrddim_add(st, "30%-40%", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
585 + rrddim_add(st, "40%-50%", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
586 + rrddim_add(st, "50%-60%", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
587 + rrddim_add(st, "60%-70%", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
588 + rrddim_add(st, "70%-80%", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
589 + rrddim_add(st, "80%-90%", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
590 + rrddim_add(st, "90%-100%", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
591 }
592 else rrdset_next(st);
593
@@ -611,17 +611,17 @@ int do_proc_net_rpc_nfsd(int update_every, usec_t dt) {
611 if(!st) {
612 st = rrdset_create("nfsd", "readahead", NULL, "readahead", NULL, "NFS Server Read Ahead Depth", "percentage", 5005, update_every, RRDSET_TYPE_STACKED);
613
614 - rrddim_add(st, "10%", NULL, 1, 1, RRDDIM_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
615 - rrddim_add(st, "20%", NULL, 1, 1, RRDDIM_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
616 - rrddim_add(st, "30%", NULL, 1, 1, RRDDIM_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
617 - rrddim_add(st, "40%", NULL, 1, 1, RRDDIM_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
618 - rrddim_add(st, "50%", NULL, 1, 1, RRDDIM_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
619 - rrddim_add(st, "60%", NULL, 1, 1, RRDDIM_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
620 - rrddim_add(st, "70%", NULL, 1, 1, RRDDIM_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
621 - rrddim_add(st, "80%", NULL, 1, 1, RRDDIM_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
622 - rrddim_add(st, "90%", NULL, 1, 1, RRDDIM_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
623 - rrddim_add(st, "100%", NULL, 1, 1, RRDDIM_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
624 - rrddim_add(st, "misses", NULL, 1, 1, RRDDIM_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
614 + rrddim_add(st, "10%", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
615 + rrddim_add(st, "20%", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
616 + rrddim_add(st, "30%", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
617 + rrddim_add(st, "40%", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
618 + rrddim_add(st, "50%", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
619 + rrddim_add(st, "60%", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
620 + rrddim_add(st, "70%", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
621 + rrddim_add(st, "80%", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
622 + rrddim_add(st, "90%", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
623 + rrddim_add(st, "100%", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
624 + rrddim_add(st, "misses", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
625 }
626 else rrdset_next(st);
627
@@ -650,8 +650,8 @@ int do_proc_net_rpc_nfsd(int update_every, usec_t dt) {
650 st = rrdset_create("nfsd", "net", NULL, "network", NULL, "NFS Server Network Statistics", "packets/s", 5007, update_every, RRDSET_TYPE_STACKED);
651 st->isdetail = 1;
652
653 - rrddim_add(st, "udp", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
654 - rrddim_add(st, "tcp", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
653 + rrddim_add(st, "udp", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
654 + rrddim_add(st, "tcp", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
655 }
656 else rrdset_next(st);
657
@@ -672,9 +672,9 @@ int do_proc_net_rpc_nfsd(int update_every, usec_t dt) {
672 st = rrdset_create("nfsd", "rpc", NULL, "rpc", NULL, "NFS Server Remote Procedure Calls Statistics", "calls/s", 5008, update_every, RRDSET_TYPE_LINE);
673 st->isdetail = 1;
674
675 - rrddim_add(st, "calls", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
676 - rrddim_add(st, "bad_format", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
677 - rrddim_add(st, "bad_auth", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
675 + rrddim_add(st, "calls", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
676 + rrddim_add(st, "bad_format", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
677 + rrddim_add(st, "bad_auth", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
678 }
679 else rrdset_next(st);
680
@@ -696,7 +696,7 @@ int do_proc_net_rpc_nfsd(int update_every, usec_t dt) {
696 st = rrdset_create("nfsd", "proc2", NULL, "nfsv2rpc", NULL, "NFS v2 Server Remote Procedure Calls", "calls/s", 5009, update_every, RRDSET_TYPE_STACKED);
697
698 for(i = 0; nfsd_proc2_values[i].present ; i++)
699 - rrddim_add(st, nfsd_proc2_values[i].name, NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
699 + rrddim_add(st, nfsd_proc2_values[i].name, NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
700 }
701 else rrdset_next(st);
702
@@ -715,7 +715,7 @@ int do_proc_net_rpc_nfsd(int update_every, usec_t dt) {
715 st = rrdset_create("nfsd", "proc3", NULL, "nfsv3rpc", NULL, "NFS v3 Server Remote Procedure Calls", "calls/s", 5010, update_every, RRDSET_TYPE_STACKED);
716
717 for(i = 0; nfsd_proc3_values[i].present ; i++)
718 - rrddim_add(st, nfsd_proc3_values[i].name, NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
718 + rrddim_add(st, nfsd_proc3_values[i].name, NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
719 }
720 else rrdset_next(st);
721
@@ -734,7 +734,7 @@ int do_proc_net_rpc_nfsd(int update_every, usec_t dt) {
734 st = rrdset_create("nfsd", "proc4", NULL, "nfsv4rpc", NULL, "NFS v4 Server Remote Procedure Calls", "calls/s", 5011, update_every, RRDSET_TYPE_STACKED);
735
736 for(i = 0; nfsd_proc4_values[i].present ; i++)
737 - rrddim_add(st, nfsd_proc4_values[i].name, NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
737 + rrddim_add(st, nfsd_proc4_values[i].name, NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
738 }
739 else rrdset_next(st);
740
@@ -753,7 +753,7 @@ int do_proc_net_rpc_nfsd(int update_every, usec_t dt) {
753 st = rrdset_create("nfsd", "proc4ops", NULL, "nfsv2ops", NULL, "NFS v4 Server Operations", "operations/s", 5012, update_every, RRDSET_TYPE_STACKED);
754
755 for(i = 0; nfsd4_ops_values[i].present ; i++)
756 - rrddim_add(st, nfsd4_ops_values[i].name, NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
756 + rrddim_add(st, nfsd4_ops_values[i].name, NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
757 }
758 else rrdset_next(st);
759
src/proc_net_snmp.c
+49 -49
@@ -396,10 +396,10 @@ int do_proc_net_snmp(int update_every, usec_t dt) {
396 if(!st) {
397 st = rrdset_create(RRD_TYPE_NET_SNMP, "packets", NULL, "packets", NULL, "IPv4 Packets", "packets/s", 3000, update_every, RRDSET_TYPE_LINE);
398
399 - rrddim_add(st, "InReceives", "received", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
400 - rrddim_add(st, "OutRequests", "sent", -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
401 - rrddim_add(st, "ForwDatagrams", "forwarded", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
402 - rrddim_add(st, "InDelivers", "delivered", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
399 + rrddim_add(st, "InReceives", "received", 1, 1, RRD_ALGORITHM_INCREMENTAL);
400 + rrddim_add(st, "OutRequests", "sent", -1, 1, RRD_ALGORITHM_INCREMENTAL);
401 + rrddim_add(st, "ForwDatagrams", "forwarded", 1, 1, RRD_ALGORITHM_INCREMENTAL);
402 + rrddim_add(st, "InDelivers", "delivered", 1, 1, RRD_ALGORITHM_INCREMENTAL);
403 }
404 else rrdset_next(st);
405
@@ -418,9 +418,9 @@ int do_proc_net_snmp(int update_every, usec_t dt) {
418 st = rrdset_create(RRD_TYPE_NET_SNMP, "fragsout", NULL, "fragments", NULL, "IPv4 Fragments Sent", "packets/s", 3010, update_every, RRDSET_TYPE_LINE);
419 st->isdetail = 1;
420
421 - rrddim_add(st, "FragOKs", "ok", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
422 - rrddim_add(st, "FragFails", "failed", -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
423 - rrddim_add(st, "FragCreates", "created", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
421 + rrddim_add(st, "FragOKs", "ok", 1, 1, RRD_ALGORITHM_INCREMENTAL);
422 + rrddim_add(st, "FragFails", "failed", -1, 1, RRD_ALGORITHM_INCREMENTAL);
423 + rrddim_add(st, "FragCreates", "created", 1, 1, RRD_ALGORITHM_INCREMENTAL);
424 }
425 else rrdset_next(st);
426
@@ -438,9 +438,9 @@ int do_proc_net_snmp(int update_every, usec_t dt) {
438 st = rrdset_create(RRD_TYPE_NET_SNMP, "fragsin", NULL, "fragments", NULL, "IPv4 Fragments Reassembly", "packets/s", 3011, update_every, RRDSET_TYPE_LINE);
439 st->isdetail = 1;
440
441 - rrddim_add(st, "ReasmOKs", "ok", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
442 - rrddim_add(st, "ReasmFails", "failed", -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
443 - rrddim_add(st, "ReasmReqds", "all", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
441 + rrddim_add(st, "ReasmOKs", "ok", 1, 1, RRD_ALGORITHM_INCREMENTAL);
442 + rrddim_add(st, "ReasmFails", "failed", -1, 1, RRD_ALGORITHM_INCREMENTAL);
443 + rrddim_add(st, "ReasmReqds", "all", 1, 1, RRD_ALGORITHM_INCREMENTAL);
444 }
445 else rrdset_next(st);
446
@@ -458,14 +458,14 @@ int do_proc_net_snmp(int update_every, usec_t dt) {
458 st = rrdset_create(RRD_TYPE_NET_SNMP, "errors", NULL, "errors", NULL, "IPv4 Errors", "packets/s", 3002, update_every, RRDSET_TYPE_LINE);
459 st->isdetail = 1;
460
461 - rrddim_add(st, "InDiscards", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
462 - rrddim_add(st, "OutDiscards", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
461 + rrddim_add(st, "InDiscards", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
462 + rrddim_add(st, "OutDiscards", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
463
464 - rrddim_add(st, "InHdrErrors", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
465 - rrddim_add(st, "OutNoRoutes", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
464 + rrddim_add(st, "InHdrErrors", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
465 + rrddim_add(st, "OutNoRoutes", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
466
467 - rrddim_add(st, "InAddrErrors", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
468 - rrddim_add(st, "InUnknownProtos", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
467 + rrddim_add(st, "InAddrErrors", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
468 + rrddim_add(st, "InUnknownProtos", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
469 }
470 else rrdset_next(st);
471
@@ -501,8 +501,8 @@ int do_proc_net_snmp(int update_every, usec_t dt) {
501 if(!st) {
502 st = rrdset_create(RRD_TYPE_NET_SNMP, "icmp", NULL, "icmp", NULL, "IPv4 ICMP Packets", "packets/s", 2602, update_every, RRDSET_TYPE_LINE);
503
504 - rrddim_add(st, "InMsgs", "received", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
505 - rrddim_add(st, "OutMsgs", "sent", -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
504 + rrddim_add(st, "InMsgs", "received", 1, 1, RRD_ALGORITHM_INCREMENTAL);
505 + rrddim_add(st, "OutMsgs", "sent", -1, 1, RRD_ALGORITHM_INCREMENTAL);
506 }
507 else rrdset_next(st);
508
@@ -515,9 +515,9 @@ int do_proc_net_snmp(int update_every, usec_t dt) {
515 if(!st) {
516 st = rrdset_create(RRD_TYPE_NET_SNMP, "icmp_errors", NULL, "icmp", NULL, "IPv4 ICMP Errors", "packets/s", 2603, update_every, RRDSET_TYPE_LINE);
517
518 - rrddim_add(st, "InErrors", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
519 - rrddim_add(st, "OutErrors", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
520 - rrddim_add(st, "InCsumErrors", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
518 + rrddim_add(st, "InErrors", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
519 + rrddim_add(st, "OutErrors", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
520 + rrddim_add(st, "InCsumErrors", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
521 }
522 else rrdset_next(st);
523
@@ -548,7 +548,7 @@ int do_proc_net_snmp(int update_every, usec_t dt) {
548 st = rrdset_create(RRD_TYPE_NET_SNMP, "icmpmsg", NULL, "icmp", NULL, "IPv4 ICMP Messsages", "packets/s", 2604, update_every, RRDSET_TYPE_LINE);
549
550 for(i = 0; icmpmsg_data[i].name ;i++)
551 - rrddim_add(st, icmpmsg_data[i].name, icmpmsg_data[i].label, icmpmsg_data[i].multiplier, 1, RRDDIM_ALGORITHM_INCREMENTAL);
551 + rrddim_add(st, icmpmsg_data[i].name, icmpmsg_data[i].label, icmpmsg_data[i].multiplier, 1, RRD_ALGORITHM_INCREMENTAL);
552 }
553 else rrdset_next(st);
554
@@ -582,7 +582,7 @@ int do_proc_net_snmp(int update_every, usec_t dt) {
582 if(!st) {
583 st = rrdset_create(RRD_TYPE_NET_SNMP, "tcpsock", NULL, "tcp", NULL, "IPv4 TCP Connections", "active connections", 2500, update_every, RRDSET_TYPE_LINE);
584
585 - rrddim_add(st, "CurrEstab", "connections", 1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
585 + rrddim_add(st, "CurrEstab", "connections", 1, 1, RRD_ALGORITHM_ABSOLUTE);
586 }
587 else rrdset_next(st);
588
@@ -597,8 +597,8 @@ int do_proc_net_snmp(int update_every, usec_t dt) {
597 if(!st) {
598 st = rrdset_create(RRD_TYPE_NET_SNMP, "tcppackets", NULL, "tcp", NULL, "IPv4 TCP Packets", "packets/s", 2600, update_every, RRDSET_TYPE_LINE);
599
600 - rrddim_add(st, "InSegs", "received", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
601 - rrddim_add(st, "OutSegs", "sent", -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
600 + rrddim_add(st, "InSegs", "received", 1, 1, RRD_ALGORITHM_INCREMENTAL);
601 + rrddim_add(st, "OutSegs", "sent", -1, 1, RRD_ALGORITHM_INCREMENTAL);
602 }
603 else rrdset_next(st);
604
@@ -615,9 +615,9 @@ int do_proc_net_snmp(int update_every, usec_t dt) {
615 st = rrdset_create(RRD_TYPE_NET_SNMP, "tcperrors", NULL, "tcp", NULL, "IPv4 TCP Errors", "packets/s", 2700, update_every, RRDSET_TYPE_LINE);
616 st->isdetail = 1;
617
618 - rrddim_add(st, "InErrs", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
619 - rrddim_add(st, "InCsumErrors", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
620 - rrddim_add(st, "RetransSegs", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
618 + rrddim_add(st, "InErrs", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
619 + rrddim_add(st, "InCsumErrors", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
620 + rrddim_add(st, "RetransSegs", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
621 }
622 else rrdset_next(st);
623
@@ -635,11 +635,11 @@ int do_proc_net_snmp(int update_every, usec_t dt) {
635 st = rrdset_create(RRD_TYPE_NET_SNMP, "tcphandshake", NULL, "tcp", NULL, "IPv4 TCP Handshake Issues", "events/s", 2900, update_every, RRDSET_TYPE_LINE);
636 st->isdetail = 1;
637
638 - rrddim_add(st, "EstabResets", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
639 - rrddim_add(st, "OutRsts", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
640 - rrddim_add(st, "ActiveOpens", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
641 - rrddim_add(st, "PassiveOpens", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
642 - rrddim_add(st, "AttemptFails", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
638 + rrddim_add(st, "EstabResets", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
639 + rrddim_add(st, "OutRsts", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
640 + rrddim_add(st, "ActiveOpens", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
641 + rrddim_add(st, "PassiveOpens", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
642 + rrddim_add(st, "AttemptFails", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
643 }
644 else rrdset_next(st);
645
@@ -675,8 +675,8 @@ int do_proc_net_snmp(int update_every, usec_t dt) {
675 if(!st) {
676 st = rrdset_create(RRD_TYPE_NET_SNMP, "udppackets", NULL, "udp", NULL, "IPv4 UDP Packets", "packets/s", 2601, update_every, RRDSET_TYPE_LINE);
677
678 - rrddim_add(st, "InDatagrams", "received", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
679 - rrddim_add(st, "OutDatagrams", "sent", -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
678 + rrddim_add(st, "InDatagrams", "received", 1, 1, RRD_ALGORITHM_INCREMENTAL);
679 + rrddim_add(st, "OutDatagrams", "sent", -1, 1, RRD_ALGORITHM_INCREMENTAL);
680 }
681 else rrdset_next(st);
682
@@ -693,12 +693,12 @@ int do_proc_net_snmp(int update_every, usec_t dt) {
693 st = rrdset_create(RRD_TYPE_NET_SNMP, "udperrors", NULL, "udp", NULL, "IPv4 UDP Errors", "events/s", 2701, update_every, RRDSET_TYPE_LINE);
694 st->isdetail = 1;
695
696 - rrddim_add(st, "RcvbufErrors", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
697 - rrddim_add(st, "SndbufErrors", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
698 - rrddim_add(st, "InErrors", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
699 - rrddim_add(st, "NoPorts", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
700 - rrddim_add(st, "InCsumErrors", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
701 - rrddim_add(st, "IgnoredMulti", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
696 + rrddim_add(st, "RcvbufErrors", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
697 + rrddim_add(st, "SndbufErrors", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
698 + rrddim_add(st, "InErrors", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
699 + rrddim_add(st, "NoPorts", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
700 + rrddim_add(st, "InCsumErrors", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
701 + rrddim_add(st, "IgnoredMulti", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
702 }
703 else rrdset_next(st);
704
@@ -734,8 +734,8 @@ int do_proc_net_snmp(int update_every, usec_t dt) {
734 if(!st) {
735 st = rrdset_create(RRD_TYPE_NET_SNMP, "udplite", NULL, "udplite", NULL, "IPv4 UDPLite Packets", "packets/s", 2603, update_every, RRDSET_TYPE_LINE);
736
737 - rrddim_add(st, "InDatagrams", "received", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
738 - rrddim_add(st, "OutDatagrams", "sent", -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
737 + rrddim_add(st, "InDatagrams", "received", 1, 1, RRD_ALGORITHM_INCREMENTAL);
738 + rrddim_add(st, "OutDatagrams", "sent", -1, 1, RRD_ALGORITHM_INCREMENTAL);
739 }
740 else rrdset_next(st);
741
@@ -747,12 +747,12 @@ int do_proc_net_snmp(int update_every, usec_t dt) {
747 if(!st) {
748 st = rrdset_create(RRD_TYPE_NET_SNMP, "udplite_errors", NULL, "udplite", NULL, "IPv4 UDPLite Errors", "packets/s", 2604, update_every, RRDSET_TYPE_LINE);
749
750 - rrddim_add(st, "RcvbufErrors", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
751 - rrddim_add(st, "SndbufErrors", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
752 - rrddim_add(st, "NoPorts", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
753 - rrddim_add(st, "IgnoredMulti", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
754 - rrddim_add(st, "InErrors", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
755 - rrddim_add(st, "InCsumErrors", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
750 + rrddim_add(st, "RcvbufErrors", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
751 + rrddim_add(st, "SndbufErrors", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
752 + rrddim_add(st, "NoPorts", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
753 + rrddim_add(st, "IgnoredMulti", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
754 + rrddim_add(st, "InErrors", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
755 + rrddim_add(st, "InCsumErrors", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
756 }
757 else rrdset_next(st);
758
src/proc_net_snmp6.c
+93 -93
@@ -282,8 +282,8 @@ int do_proc_net_snmp6(int update_every, usec_t dt) {
282 if(unlikely(!st)) {
283 st = rrdset_create("system", "ipv6", NULL, "network", NULL, "IPv6 Bandwidth", "kilobits/s", 500, update_every, RRDSET_TYPE_AREA);
284
285 - rrddim_add(st, "received", NULL, 8, 1024, RRDDIM_ALGORITHM_INCREMENTAL);
286 - rrddim_add(st, "sent", NULL, -8, 1024, RRDDIM_ALGORITHM_INCREMENTAL);
285 + rrddim_add(st, "received", NULL, 8, 1024, RRD_ALGORITHM_INCREMENTAL);
286 + rrddim_add(st, "sent", NULL, -8, 1024, RRD_ALGORITHM_INCREMENTAL);
287 }
288 else rrdset_next(st);
289
@@ -300,10 +300,10 @@ int do_proc_net_snmp6(int update_every, usec_t dt) {
300 if(unlikely(!st)) {
301 st = rrdset_create(RRD_TYPE_NET_SNMP6, "packets", NULL, "packets", NULL, "IPv6 Packets", "packets/s", 3000, update_every, RRDSET_TYPE_LINE);
302
303 - rrddim_add(st, "received", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
304 - rrddim_add(st, "sent", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
305 - rrddim_add(st, "forwarded", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
306 - rrddim_add(st, "delivers", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
303 + rrddim_add(st, "received", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
304 + rrddim_add(st, "sent", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
305 + rrddim_add(st, "forwarded", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
306 + rrddim_add(st, "delivers", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
307 }
308 else rrdset_next(st);
309
@@ -323,9 +323,9 @@ int do_proc_net_snmp6(int update_every, usec_t dt) {
323 st = rrdset_create(RRD_TYPE_NET_SNMP6, "fragsout", NULL, "fragments", NULL, "IPv6 Fragments Sent", "packets/s", 3010, update_every, RRDSET_TYPE_LINE);
324 st->isdetail = 1;
325
326 - rrddim_add(st, "ok", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
327 - rrddim_add(st, "failed", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
328 - rrddim_add(st, "all", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
326 + rrddim_add(st, "ok", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
327 + rrddim_add(st, "failed", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
328 + rrddim_add(st, "all", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
329 }
330 else rrdset_next(st);
331
@@ -350,10 +350,10 @@ int do_proc_net_snmp6(int update_every, usec_t dt) {
350 st = rrdset_create(RRD_TYPE_NET_SNMP6, "fragsin", NULL, "fragments", NULL, "IPv6 Fragments Reassembly", "packets/s", 3011, update_every, RRDSET_TYPE_LINE);
351 st->isdetail = 1;
352
353 - rrddim_add(st, "ok", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
354 - rrddim_add(st, "failed", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
355 - rrddim_add(st, "timeout", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
356 - rrddim_add(st, "all", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
353 + rrddim_add(st, "ok", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
354 + rrddim_add(st, "failed", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
355 + rrddim_add(st, "timeout", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
356 + rrddim_add(st, "all", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
357 }
358 else rrdset_next(st);
359
@@ -383,17 +383,17 @@ int do_proc_net_snmp6(int update_every, usec_t dt) {
383 st = rrdset_create(RRD_TYPE_NET_SNMP6, "errors", NULL, "errors", NULL, "IPv6 Errors", "packets/s", 3002, update_every, RRDSET_TYPE_LINE);
384 st->isdetail = 1;
385
386 - rrddim_add(st, "InDiscards", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
387 - rrddim_add(st, "OutDiscards", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
386 + rrddim_add(st, "InDiscards", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
387 + rrddim_add(st, "OutDiscards", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
388
389 - rrddim_add(st, "InHdrErrors", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
390 - rrddim_add(st, "InAddrErrors", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
391 - rrddim_add(st, "InUnknownProtos", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
392 - rrddim_add(st, "InTooBigErrors", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
393 - rrddim_add(st, "InTruncatedPkts", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
394 - rrddim_add(st, "InNoRoutes", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
389 + rrddim_add(st, "InHdrErrors", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
390 + rrddim_add(st, "InAddrErrors", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
391 + rrddim_add(st, "InUnknownProtos", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
392 + rrddim_add(st, "InTooBigErrors", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
393 + rrddim_add(st, "InTruncatedPkts", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
394 + rrddim_add(st, "InNoRoutes", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
395
396 - rrddim_add(st, "OutNoRoutes", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
396 + rrddim_add(st, "OutNoRoutes", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
397 }
398 else rrdset_next(st);
399
@@ -419,8 +419,8 @@ int do_proc_net_snmp6(int update_every, usec_t dt) {
419 if(unlikely(!st)) {
420 st = rrdset_create(RRD_TYPE_NET_SNMP6, "udppackets", NULL, "udp", NULL, "IPv6 UDP Packets", "packets/s", 3601, update_every, RRDSET_TYPE_LINE);
421
422 - rrddim_add(st, "received", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
423 - rrddim_add(st, "sent", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
422 + rrddim_add(st, "received", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
423 + rrddim_add(st, "sent", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
424 }
425 else rrdset_next(st);
426
@@ -446,12 +446,12 @@ int do_proc_net_snmp6(int update_every, usec_t dt) {
446 st = rrdset_create(RRD_TYPE_NET_SNMP6, "udperrors", NULL, "udp", NULL, "IPv6 UDP Errors", "events/s", 3701, update_every, RRDSET_TYPE_LINE);
447 st->isdetail = 1;
448
449 - rrddim_add(st, "RcvbufErrors", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
450 - rrddim_add(st, "SndbufErrors", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
451 - rrddim_add(st, "InErrors", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
452 - rrddim_add(st, "NoPorts", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
453 - rrddim_add(st, "InCsumErrors", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
454 - rrddim_add(st, "IgnoredMulti", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
449 + rrddim_add(st, "RcvbufErrors", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
450 + rrddim_add(st, "SndbufErrors", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
451 + rrddim_add(st, "InErrors", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
452 + rrddim_add(st, "NoPorts", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
453 + rrddim_add(st, "InCsumErrors", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
454 + rrddim_add(st, "IgnoredMulti", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
455 }
456 else rrdset_next(st);
457
@@ -472,8 +472,8 @@ int do_proc_net_snmp6(int update_every, usec_t dt) {
472 if(unlikely(!st)) {
473 st = rrdset_create(RRD_TYPE_NET_SNMP6, "udplitepackets", NULL, "udplite", NULL, "IPv6 UDPlite Packets", "packets/s", 3601, update_every, RRDSET_TYPE_LINE);
474
475 - rrddim_add(st, "received", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
476 - rrddim_add(st, "sent", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
475 + rrddim_add(st, "received", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
476 + rrddim_add(st, "sent", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
477 }
478 else rrdset_next(st);
479
@@ -499,11 +499,11 @@ int do_proc_net_snmp6(int update_every, usec_t dt) {
499 st = rrdset_create(RRD_TYPE_NET_SNMP6, "udpliteerrors", NULL, "udplite", NULL, "IPv6 UDP Lite Errors", "events/s", 3701, update_every, RRDSET_TYPE_LINE);
500 st->isdetail = 1;
501
502 - rrddim_add(st, "RcvbufErrors", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
503 - rrddim_add(st, "SndbufErrors", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
504 - rrddim_add(st, "InErrors", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
505 - rrddim_add(st, "NoPorts", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
506 - rrddim_add(st, "InCsumErrors", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
502 + rrddim_add(st, "RcvbufErrors", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
503 + rrddim_add(st, "SndbufErrors", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
504 + rrddim_add(st, "InErrors", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
505 + rrddim_add(st, "NoPorts", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
506 + rrddim_add(st, "InCsumErrors", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
507 }
508 else rrdset_next(st);
509
@@ -524,8 +524,8 @@ int do_proc_net_snmp6(int update_every, usec_t dt) {
524 st = rrdset_create(RRD_TYPE_NET_SNMP6, "mcast", NULL, "multicast", NULL, "IPv6 Multicast Bandwidth", "kilobits/s", 9000, update_every, RRDSET_TYPE_AREA);
525 st->isdetail = 1;
526
527 - rrddim_add(st, "received", NULL, 8, 1024, RRDDIM_ALGORITHM_INCREMENTAL);
528 - rrddim_add(st, "sent", NULL, -8, 1024, RRDDIM_ALGORITHM_INCREMENTAL);
527 + rrddim_add(st, "received", NULL, 8, 1024, RRD_ALGORITHM_INCREMENTAL);
528 + rrddim_add(st, "sent", NULL, -8, 1024, RRD_ALGORITHM_INCREMENTAL);
529 }
530 else rrdset_next(st);
531
@@ -543,8 +543,8 @@ int do_proc_net_snmp6(int update_every, usec_t dt) {
543 st = rrdset_create(RRD_TYPE_NET_SNMP6, "bcast", NULL, "broadcast", NULL, "IPv6 Broadcast Bandwidth", "kilobits/s", 8000, update_every, RRDSET_TYPE_AREA);
544 st->isdetail = 1;
545
546 - rrddim_add(st, "received", NULL, 8, 1024, RRDDIM_ALGORITHM_INCREMENTAL);
547 - rrddim_add(st, "sent", NULL, -8, 1024, RRDDIM_ALGORITHM_INCREMENTAL);
546 + rrddim_add(st, "received", NULL, 8, 1024, RRD_ALGORITHM_INCREMENTAL);
547 + rrddim_add(st, "sent", NULL, -8, 1024, RRD_ALGORITHM_INCREMENTAL);
548 }
549 else rrdset_next(st);
550
@@ -562,8 +562,8 @@ int do_proc_net_snmp6(int update_every, usec_t dt) {
562 st = rrdset_create(RRD_TYPE_NET_SNMP6, "mcastpkts", NULL, "multicast", NULL, "IPv6 Multicast Packets", "packets/s", 9500, update_every, RRDSET_TYPE_LINE);
563 st->isdetail = 1;
564
565 - rrddim_add(st, "received", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
566 - rrddim_add(st, "sent", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
565 + rrddim_add(st, "received", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
566 + rrddim_add(st, "sent", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
567 }
568 else rrdset_next(st);
569
@@ -580,8 +580,8 @@ int do_proc_net_snmp6(int update_every, usec_t dt) {
580 if(unlikely(!st)) {
581 st = rrdset_create(RRD_TYPE_NET_SNMP6, "icmp", NULL, "icmp", NULL, "IPv6 ICMP Messages", "messages/s", 10000, update_every, RRDSET_TYPE_LINE);
582
583 - rrddim_add(st, "received", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
584 - rrddim_add(st, "sent", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
583 + rrddim_add(st, "received", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
584 + rrddim_add(st, "sent", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
585 }
586 else rrdset_next(st);
587
@@ -598,8 +598,8 @@ int do_proc_net_snmp6(int update_every, usec_t dt) {
598 if(unlikely(!st)) {
599 st = rrdset_create(RRD_TYPE_NET_SNMP6, "icmpredir", NULL, "icmp", NULL, "IPv6 ICMP Redirects", "redirects/s", 10050, update_every, RRDSET_TYPE_LINE);
600
601 - rrddim_add(st, "received", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
602 - rrddim_add(st, "sent", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
601 + rrddim_add(st, "received", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
602 + rrddim_add(st, "sent", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
603 }
604 else rrdset_next(st);
605
@@ -629,18 +629,18 @@ int do_proc_net_snmp6(int update_every, usec_t dt) {
629 if(unlikely(!st)) {
630 st = rrdset_create(RRD_TYPE_NET_SNMP6, "icmperrors", NULL, "icmp", NULL, "IPv6 ICMP Errors", "errors/s", 10100, update_every, RRDSET_TYPE_LINE);
631
632 - rrddim_add(st, "InErrors", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
633 - rrddim_add(st, "OutErrors", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
634 -
635 - rrddim_add(st, "InCsumErrors", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
636 - rrddim_add(st, "InDestUnreachs", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
637 - rrddim_add(st, "InPktTooBigs", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
638 - rrddim_add(st, "InTimeExcds", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
639 - rrddim_add(st, "InParmProblems", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
640 - rrddim_add(st, "OutDestUnreachs", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
641 - rrddim_add(st, "OutPktTooBigs", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
642 - rrddim_add(st, "OutTimeExcds", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
643 - rrddim_add(st, "OutParmProblems", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
632 + rrddim_add(st, "InErrors", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
633 + rrddim_add(st, "OutErrors", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
634 +
635 + rrddim_add(st, "InCsumErrors", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
636 + rrddim_add(st, "InDestUnreachs", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
637 + rrddim_add(st, "InPktTooBigs", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
638 + rrddim_add(st, "InTimeExcds", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
639 + rrddim_add(st, "InParmProblems", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
640 + rrddim_add(st, "OutDestUnreachs", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
641 + rrddim_add(st, "OutPktTooBigs", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
642 + rrddim_add(st, "OutTimeExcds", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
643 + rrddim_add(st, "OutParmProblems", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
644 }
645 else rrdset_next(st);
646
@@ -672,10 +672,10 @@ int do_proc_net_snmp6(int update_every, usec_t dt) {
672 if(unlikely(!st)) {
673 st = rrdset_create(RRD_TYPE_NET_SNMP6, "icmpechos", NULL, "icmp", NULL, "IPv6 ICMP Echo", "messages/s", 10200, update_every, RRDSET_TYPE_LINE);
674
675 - rrddim_add(st, "InEchos", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
676 - rrddim_add(st, "OutEchos", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
677 - rrddim_add(st, "InEchoReplies", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
678 - rrddim_add(st, "OutEchoReplies", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
675 + rrddim_add(st, "InEchos", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
676 + rrddim_add(st, "OutEchos", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
677 + rrddim_add(st, "InEchoReplies", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
678 + rrddim_add(st, "OutEchoReplies", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
679 }
680 else rrdset_next(st);
681
@@ -702,12 +702,12 @@ int do_proc_net_snmp6(int update_every, usec_t dt) {
702 if(unlikely(!st)) {
703 st = rrdset_create(RRD_TYPE_NET_SNMP6, "groupmemb", NULL, "icmp", NULL, "IPv6 ICMP Group Membership", "messages/s", 10300, update_every, RRDSET_TYPE_LINE);
704
705 - rrddim_add(st, "InQueries", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
706 - rrddim_add(st, "OutQueries", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
707 - rrddim_add(st, "InResponses", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
708 - rrddim_add(st, "OutResponses", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
709 - rrddim_add(st, "InReductions", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
710 - rrddim_add(st, "OutReductions", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
705 + rrddim_add(st, "InQueries", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
706 + rrddim_add(st, "OutQueries", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
707 + rrddim_add(st, "InResponses", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
708 + rrddim_add(st, "OutResponses", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
709 + rrddim_add(st, "InReductions", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
710 + rrddim_add(st, "OutReductions", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
711 }
712 else rrdset_next(st);
713
@@ -734,10 +734,10 @@ int do_proc_net_snmp6(int update_every, usec_t dt) {
734 if(unlikely(!st)) {
735 st = rrdset_create(RRD_TYPE_NET_SNMP6, "icmprouter", NULL, "icmp", NULL, "IPv6 Router Messages", "messages/s", 10400, update_every, RRDSET_TYPE_LINE);
736
737 - rrddim_add(st, "InSolicits", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
738 - rrddim_add(st, "OutSolicits", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
739 - rrddim_add(st, "InAdvertisements", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
740 - rrddim_add(st, "OutAdvertisements", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
737 + rrddim_add(st, "InSolicits", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
738 + rrddim_add(st, "OutSolicits", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
739 + rrddim_add(st, "InAdvertisements", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
740 + rrddim_add(st, "OutAdvertisements", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
741 }
742 else rrdset_next(st);
743
@@ -762,10 +762,10 @@ int do_proc_net_snmp6(int update_every, usec_t dt) {
762 if(unlikely(!st)) {
763 st = rrdset_create(RRD_TYPE_NET_SNMP6, "icmpneighbor", NULL, "icmp", NULL, "IPv6 Neighbor Messages", "messages/s", 10500, update_every, RRDSET_TYPE_LINE);
764
765 - rrddim_add(st, "InSolicits", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
766 - rrddim_add(st, "OutSolicits", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
767 - rrddim_add(st, "InAdvertisements", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
768 - rrddim_add(st, "OutAdvertisements", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
765 + rrddim_add(st, "InSolicits", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
766 + rrddim_add(st, "OutSolicits", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
767 + rrddim_add(st, "InAdvertisements", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
768 + rrddim_add(st, "OutAdvertisements", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
769 }
770 else rrdset_next(st);
771
@@ -784,8 +784,8 @@ int do_proc_net_snmp6(int update_every, usec_t dt) {
784 if(unlikely(!st)) {
785 st = rrdset_create(RRD_TYPE_NET_SNMP6, "icmpmldv2", NULL, "icmp", NULL, "IPv6 ICMP MLDv2 Reports", "reports/s", 10600, update_every, RRDSET_TYPE_LINE);
786
787 - rrddim_add(st, "received", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
788 - rrddim_add(st, "sent", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
787 + rrddim_add(st, "received", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
788 + rrddim_add(st, "sent", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
789 }
790 else rrdset_next(st);
791
@@ -814,16 +814,16 @@ int do_proc_net_snmp6(int update_every, usec_t dt) {
814 if(unlikely(!st)) {
815 st = rrdset_create(RRD_TYPE_NET_SNMP6, "icmptypes", NULL, "icmp", NULL, "IPv6 ICMP Types", "messages/s", 10700, update_every, RRDSET_TYPE_LINE);
816
817 - rrddim_add(st, "InType1", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
818 - rrddim_add(st, "InType128", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
819 - rrddim_add(st, "InType129", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
820 - rrddim_add(st, "InType136", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
821 - rrddim_add(st, "OutType1", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
822 - rrddim_add(st, "OutType128", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
823 - rrddim_add(st, "OutType129", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
824 - rrddim_add(st, "OutType133", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
825 - rrddim_add(st, "OutType135", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
826 - rrddim_add(st, "OutType143", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
817 + rrddim_add(st, "InType1", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
818 + rrddim_add(st, "InType128", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
819 + rrddim_add(st, "InType129", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
820 + rrddim_add(st, "InType136", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
821 + rrddim_add(st, "OutType1", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
822 + rrddim_add(st, "OutType128", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
823 + rrddim_add(st, "OutType129", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
824 + rrddim_add(st, "OutType133", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
825 + rrddim_add(st, "OutType135", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
826 + rrddim_add(st, "OutType143", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
827 }
828 else rrdset_next(st);
829
@@ -854,10 +854,10 @@ int do_proc_net_snmp6(int update_every, usec_t dt) {
854 if(unlikely(!st)) {
855 st = rrdset_create(RRD_TYPE_NET_SNMP6, "ect", NULL, "packets", NULL, "IPv6 ECT Packets", "packets/s", 10800, update_every, RRDSET_TYPE_LINE);
856
857 - rrddim_add(st, "InNoECTPkts", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
858 - rrddim_add(st, "InECT1Pkts", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
859 - rrddim_add(st, "InECT0Pkts", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
860 - rrddim_add(st, "InCEPkts", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
857 + rrddim_add(st, "InNoECTPkts", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
858 + rrddim_add(st, "InECT1Pkts", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
859 + rrddim_add(st, "InECT0Pkts", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
860 + rrddim_add(st, "InCEPkts", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
861 }
862 else rrdset_next(st);
863
src/proc_net_softnet_stat.c
+2 -2
@@ -82,7 +82,7 @@ int do_proc_net_softnet_stat(int update_every, usec_t dt) {
82 st = rrdset_create("system", "softnet_stat", NULL, "softnet_stat", NULL, "System softnet_stat", "events/s", 955, update_every, RRDSET_TYPE_LINE);
83 for(w = 0; w < allocated_columns ;w++)
84 if(unlikely(softnet_column_name(w)))
85 - rrddim_add(st, softnet_column_name(w), NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
85 + rrddim_add(st, softnet_column_name(w), NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
86 }
87 else rrdset_next(st);
88
@@ -105,7 +105,7 @@ int do_proc_net_softnet_stat(int update_every, usec_t dt) {
105 st = rrdset_create("cpu", id, NULL, "softnet_stat", NULL, title, "events/s", 4101 + l, update_every, RRDSET_TYPE_LINE);
106 for(w = 0; w < allocated_columns ;w++)
107 if(unlikely(softnet_column_name(w)))
108 - rrddim_add(st, softnet_column_name(w), NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
108 + rrddim_add(st, softnet_column_name(w), NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
109 }
110 else rrdset_next(st);
111
src/proc_net_stat_conntrack.c
+17 -17
@@ -134,7 +134,7 @@ int do_proc_net_stat_conntrack(int update_every, usec_t dt) {
134 if(unlikely(!st)) {
135 st = rrdset_create(RRD_TYPE_NET_STAT_NETFILTER, RRD_TYPE_NET_STAT_CONNTRACK "_sockets", NULL, RRD_TYPE_NET_STAT_CONNTRACK, NULL, "Connection Tracker Connections", "active connections", 3000, update_every, RRDSET_TYPE_LINE);
136
137 - rrddim_add(st, "connections", NULL, 1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
137 + rrddim_add(st, "connections", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
138 }
139 else rrdset_next(st);
140
@@ -149,9 +149,9 @@ int do_proc_net_stat_conntrack(int update_every, usec_t dt) {
149 if(unlikely(!st)) {
150 st = rrdset_create(RRD_TYPE_NET_STAT_NETFILTER, RRD_TYPE_NET_STAT_CONNTRACK "_new", NULL, RRD_TYPE_NET_STAT_CONNTRACK, NULL, "Connection Tracker New Connections", "connections/s", 3001, update_every, RRDSET_TYPE_LINE);
151
152 - rrddim_add(st, "new", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
153 - rrddim_add(st, "ignore", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
154 - rrddim_add(st, "invalid", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
152 + rrddim_add(st, "new", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
153 + rrddim_add(st, "ignore", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
154 + rrddim_add(st, "invalid", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
155 }
156 else rrdset_next(st);
157
@@ -169,9 +169,9 @@ int do_proc_net_stat_conntrack(int update_every, usec_t dt) {
169 st = rrdset_create(RRD_TYPE_NET_STAT_NETFILTER, RRD_TYPE_NET_STAT_CONNTRACK "_changes", NULL, RRD_TYPE_NET_STAT_CONNTRACK, NULL, "Connection Tracker Changes", "changes/s", 3002, update_every, RRDSET_TYPE_LINE);
170 st->isdetail = 1;
171
172 - rrddim_add(st, "inserted", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
173 - rrddim_add(st, "deleted", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
174 - rrddim_add(st, "delete_list", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
172 + rrddim_add(st, "inserted", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
173 + rrddim_add(st, "deleted", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
174 + rrddim_add(st, "delete_list", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
175 }
176 else rrdset_next(st);
177
@@ -189,9 +189,9 @@ int do_proc_net_stat_conntrack(int update_every, usec_t dt) {
189 st = rrdset_create(RRD_TYPE_NET_STAT_NETFILTER, RRD_TYPE_NET_STAT_CONNTRACK "_expect", NULL, RRD_TYPE_NET_STAT_CONNTRACK, NULL, "Connection Tracker Expectations", "expectations/s", 3003, update_every, RRDSET_TYPE_LINE);
190 st->isdetail = 1;
191
192 - rrddim_add(st, "created", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
193 - rrddim_add(st, "deleted", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
194 - rrddim_add(st, "new", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
192 + rrddim_add(st, "created", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
193 + rrddim_add(st, "deleted", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
194 + rrddim_add(st, "new", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
195 }
196 else rrdset_next(st);
197
@@ -209,9 +209,9 @@ int do_proc_net_stat_conntrack(int update_every, usec_t dt) {
209 st = rrdset_create(RRD_TYPE_NET_STAT_NETFILTER, RRD_TYPE_NET_STAT_CONNTRACK "_search", NULL, RRD_TYPE_NET_STAT_CONNTRACK, NULL, "Connection Tracker Searches", "searches/s", 3010, update_every, RRDSET_TYPE_LINE);
210 st->isdetail = 1;
211
212 - rrddim_add(st, "searched", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
213 - rrddim_add(st, "restarted", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
214 - rrddim_add(st, "found", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
212 + rrddim_add(st, "searched", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
213 + rrddim_add(st, "restarted", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
214 + rrddim_add(st, "found", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
215 }
216 else rrdset_next(st);
217
@@ -229,10 +229,10 @@ int do_proc_net_stat_conntrack(int update_every, usec_t dt) {
229 st = rrdset_create(RRD_TYPE_NET_STAT_NETFILTER, RRD_TYPE_NET_STAT_CONNTRACK "_errors", NULL, RRD_TYPE_NET_STAT_CONNTRACK, NULL, "Connection Tracker Errors", "events/s", 3005, update_every, RRDSET_TYPE_LINE);
230 st->isdetail = 1;
231
232 - rrddim_add(st, "icmp_error", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
233 - rrddim_add(st, "insert_failed", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
234 - rrddim_add(st, "drop", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
235 - rrddim_add(st, "early_drop", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
232 + rrddim_add(st, "icmp_error", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
233 + rrddim_add(st, "insert_failed", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
234 + rrddim_add(st, "drop", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
235 + rrddim_add(st, "early_drop", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
236 }
237 else rrdset_next(st);
238
src/proc_net_stat_synproxy.c
+6 -6
@@ -64,7 +64,7 @@ int do_proc_net_stat_synproxy(int update_every, usec_t dt) {
64 if(unlikely(!st)) {
65 st = rrdset_create(RRD_TYPE_NET_STAT_NETFILTER, RRD_TYPE_NET_STAT_SYNPROXY "_entries", NULL, RRD_TYPE_NET_STAT_SYNPROXY, NULL, "SYNPROXY Entries Used", "entries", 3304, update_every, RRDSET_TYPE_LINE);
66
67 - rrddim_add(st, "entries", NULL, 1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
67 + rrddim_add(st, "entries", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
68 }
69 else rrdset_next(st);
70
@@ -81,7 +81,7 @@ int do_proc_net_stat_synproxy(int update_every, usec_t dt) {
81 if(unlikely(!st)) {
82 st = rrdset_create(RRD_TYPE_NET_STAT_NETFILTER, RRD_TYPE_NET_STAT_SYNPROXY "_syn_received", NULL, RRD_TYPE_NET_STAT_SYNPROXY, NULL, "SYNPROXY SYN Packets received", "SYN/s", 3301, update_every, RRDSET_TYPE_LINE);
83
84 - rrddim_add(st, "received", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
84 + rrddim_add(st, "received", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
85 }
86 else rrdset_next(st);
87
@@ -98,7 +98,7 @@ int do_proc_net_stat_synproxy(int update_every, usec_t dt) {
98 if(unlikely(!st)) {
99 st = rrdset_create(RRD_TYPE_NET_STAT_NETFILTER, RRD_TYPE_NET_STAT_SYNPROXY "_conn_reopened", NULL, RRD_TYPE_NET_STAT_SYNPROXY, NULL, "SYNPROXY Connections Reopened", "connections/s", 3303, update_every, RRDSET_TYPE_LINE);
100
101 - rrddim_add(st, "reopened", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
101 + rrddim_add(st, "reopened", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
102 }
103 else rrdset_next(st);
104
@@ -115,9 +115,9 @@ int do_proc_net_stat_synproxy(int update_every, usec_t dt) {
115 if(unlikely(!st)) {
116 st = rrdset_create(RRD_TYPE_NET_STAT_NETFILTER, RRD_TYPE_NET_STAT_SYNPROXY "_cookies", NULL, RRD_TYPE_NET_STAT_SYNPROXY, NULL, "SYNPROXY TCP Cookies", "cookies/s", 3302, update_every, RRDSET_TYPE_LINE);
117
118 - rrddim_add(st, "valid", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
119 - rrddim_add(st, "invalid", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
120 - rrddim_add(st, "retransmits", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
118 + rrddim_add(st, "valid", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
119 + rrddim_add(st, "invalid", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
120 + rrddim_add(st, "retransmits", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
121 }
122 else rrdset_next(st);
123
src/proc_softirqs.c
+2 -2
@@ -141,7 +141,7 @@ int do_proc_softirqs(int update_every, usec_t dt) {
141 if(unlikely(!irr->rd || strncmp(irr->name, irr->rd->name, MAX_INTERRUPT_NAME) != 0)) {
142 irr->rd = rrddim_find(st, irr->id);
143 if(unlikely(!irr->rd))
144 - irr->rd = rrddim_add(st, irr->id, irr->name, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
144 + irr->rd = rrddim_add(st, irr->id, irr->name, 1, 1, RRD_ALGORITHM_INCREMENTAL);
145 else
146 rrddim_set_name(st, irr->rd, irr->name);
147
@@ -186,7 +186,7 @@ int do_proc_softirqs(int update_every, usec_t dt) {
186 if(unlikely(!irr->cpu[c].rd)) {
187 irr->cpu[c].rd = rrddim_find(st, irr->id);
188 if(unlikely(!irr->cpu[c].rd))
189 - irr->cpu[c].rd = rrddim_add(st, irr->id, irr->name, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
189 + irr->cpu[c].rd = rrddim_add(st, irr->id, irr->name, 1, 1, RRD_ALGORITHM_INCREMENTAL);
190 else
191 rrddim_set_name(st, irr->cpu[c].rd, irr->name);
192 }
src/proc_stat.c
+16 -16
@@ -98,17 +98,17 @@ int do_proc_stat(int update_every, usec_t dt) {
98 long multiplier = 1;
99 long divisor = 1; // sysconf(_SC_CLK_TCK);
100
101 - rrddim_add(st, "guest_nice", NULL, multiplier, divisor, RRDDIM_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
102 - rrddim_add(st, "guest", NULL, multiplier, divisor, RRDDIM_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
103 - rrddim_add(st, "steal", NULL, multiplier, divisor, RRDDIM_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
104 - rrddim_add(st, "softirq", NULL, multiplier, divisor, RRDDIM_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
105 - rrddim_add(st, "irq", NULL, multiplier, divisor, RRDDIM_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
106 - rrddim_add(st, "user", NULL, multiplier, divisor, RRDDIM_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
107 - rrddim_add(st, "system", NULL, multiplier, divisor, RRDDIM_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
108 - rrddim_add(st, "nice", NULL, multiplier, divisor, RRDDIM_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
109 - rrddim_add(st, "iowait", NULL, multiplier, divisor, RRDDIM_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
110 -
111 - rrddim_add(st, "idle", NULL, multiplier, divisor, RRDDIM_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
101 + rrddim_add(st, "guest_nice", NULL, multiplier, divisor, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
102 + rrddim_add(st, "guest", NULL, multiplier, divisor, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
103 + rrddim_add(st, "steal", NULL, multiplier, divisor, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
104 + rrddim_add(st, "softirq", NULL, multiplier, divisor, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
105 + rrddim_add(st, "irq", NULL, multiplier, divisor, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
106 + rrddim_add(st, "user", NULL, multiplier, divisor, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
107 + rrddim_add(st, "system", NULL, multiplier, divisor, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
108 + rrddim_add(st, "nice", NULL, multiplier, divisor, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
109 + rrddim_add(st, "iowait", NULL, multiplier, divisor, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
110 +
111 + rrddim_add(st, "idle", NULL, multiplier, divisor, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
112 rrddim_hide(st, "idle");
113 }
114 else rrdset_next(st);
@@ -137,7 +137,7 @@ int do_proc_stat(int update_every, usec_t dt) {
137 st = rrdset_create("system", "intr", NULL, "interrupts", NULL, "CPU Interrupts", "interrupts/s", 900, update_every, RRDSET_TYPE_LINE);
138 st->isdetail = 1;
139
140 - rrddim_add(st, "interrupts", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
140 + rrddim_add(st, "interrupts", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
141 }
142 else rrdset_next(st);
143
@@ -155,7 +155,7 @@ int do_proc_stat(int update_every, usec_t dt) {
155 if(unlikely(!st)) {
156 st = rrdset_create("system", "ctxt", NULL, "processes", NULL, "CPU Context Switches", "context switches/s", 800, update_every, RRDSET_TYPE_LINE);
157
158 - rrddim_add(st, "switches", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
158 + rrddim_add(st, "switches", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
159 }
160 else rrdset_next(st);
161
@@ -182,7 +182,7 @@ int do_proc_stat(int update_every, usec_t dt) {
182 st = rrdset_create("system", "forks", NULL, "processes", NULL, "Started Processes", "processes/s", 700, update_every, RRDSET_TYPE_LINE);
183 st->isdetail = 1;
184
185 - rrddim_add(st, "started", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
185 + rrddim_add(st, "started", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
186 }
187 else rrdset_next(st);
188
@@ -197,8 +197,8 @@ int do_proc_stat(int update_every, usec_t dt) {
197 if(unlikely(!st)) {
198 st = rrdset_create("system", "processes", NULL, "processes", NULL, "System Processes", "processes", 600, update_every, RRDSET_TYPE_LINE);
199
200 - rrddim_add(st, "running", NULL, 1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
201 - rrddim_add(st, "blocked", NULL, -1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
200 + rrddim_add(st, "running", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
201 + rrddim_add(st, "blocked", NULL, -1, 1, RRD_ALGORITHM_ABSOLUTE);
202 }
203 else rrdset_next(st);
204
src/proc_sys_kernel_random_entropy_avail.c
+1 -1
@@ -20,7 +20,7 @@ int do_proc_sys_kernel_random_entropy_avail(int update_every, usec_t dt) {
20 RRDSET *st = rrdset_find_bytype_localhost("system", "entropy");
21 if(unlikely(!st)) {
22 st = rrdset_create("system", "entropy", NULL, "entropy", NULL, "Available Entropy", "entropy", 1000, update_every, RRDSET_TYPE_LINE);
23 - rrddim_add(st, "entropy", NULL, 1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
23 + rrddim_add(st, "entropy", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
24 }
25 else rrdset_next(st);
26
src/proc_uptime.c
+1 -1
@@ -43,7 +43,7 @@ int do_proc_uptime(int update_every, usec_t dt) {
43
44 if(unlikely(!st)) {
45 st = rrdset_create("system", "uptime", NULL, "uptime", NULL, "System Uptime", "seconds", 1000, update_every, RRDSET_TYPE_LINE);
46 - rrddim_add(st, "uptime", NULL, 1, 1000, RRDDIM_ALGORITHM_ABSOLUTE);
46 + rrddim_add(st, "uptime", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
47 }
48 else rrdset_next(st);
49
src/proc_vmstat.c
+15 -15
@@ -94,8 +94,8 @@ int do_proc_vmstat(int update_every, usec_t dt) {
94 if(unlikely(!st_swapio)) {
95 st_swapio = rrdset_create("system", "swapio", NULL, "swap", NULL, "Swap I/O", "kilobytes/s", 250, update_every, RRDSET_TYPE_AREA);
96
97 - rrddim_add(st_swapio, "in", NULL, sysconf(_SC_PAGESIZE), 1024, RRDDIM_ALGORITHM_INCREMENTAL);
98 - rrddim_add(st_swapio, "out", NULL, -sysconf(_SC_PAGESIZE), 1024, RRDDIM_ALGORITHM_INCREMENTAL);
97 + rrddim_add(st_swapio, "in", NULL, sysconf(_SC_PAGESIZE), 1024, RRD_ALGORITHM_INCREMENTAL);
98 + rrddim_add(st_swapio, "out", NULL, -sysconf(_SC_PAGESIZE), 1024, RRD_ALGORITHM_INCREMENTAL);
99 }
100 else rrdset_next(st_swapio);
101
@@ -111,8 +111,8 @@ int do_proc_vmstat(int update_every, usec_t dt) {
111 if(unlikely(!st_io)) {
112 st_io = rrdset_create("system", "io", NULL, "disk", NULL, "Disk I/O", "kilobytes/s", 150, update_every, RRDSET_TYPE_AREA);
113
114 - rrddim_add(st_io, "in", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
115 - rrddim_add(st_io, "out", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
114 + rrddim_add(st_io, "in", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
115 + rrddim_add(st_io, "out", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
116 }
117 else rrdset_next(st_io);
118
@@ -129,8 +129,8 @@ int do_proc_vmstat(int update_every, usec_t dt) {
129 st_pgfaults = rrdset_create("mem", "pgfaults", NULL, "system", NULL, "Memory Page Faults", "page faults/s", 500, update_every, RRDSET_TYPE_LINE);
130 st_pgfaults->isdetail = 1;
131
132 - rrddim_add(st_pgfaults, "minor", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
133 - rrddim_add(st_pgfaults, "major", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
132 + rrddim_add(st_pgfaults, "minor", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
133 + rrddim_add(st_pgfaults, "major", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
134 }
135 else rrdset_next(st_pgfaults);
136
@@ -158,18 +158,18 @@ int do_proc_vmstat(int update_every, usec_t dt) {
158 st_numa->isdetail = 1;
159
160 // These depend on CONFIG_NUMA in the kernel.
161 - rrddim_add(st_numa, "local", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
162 - rrddim_add(st_numa, "foreign", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
163 - rrddim_add(st_numa, "interleave", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
164 - rrddim_add(st_numa, "other", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
161 + rrddim_add(st_numa, "local", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
162 + rrddim_add(st_numa, "foreign", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
163 + rrddim_add(st_numa, "interleave", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
164 + rrddim_add(st_numa, "other", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
165
166 // The following stats depend on CONFIG_NUMA_BALANCING in the
167 // kernel.
168 - rrddim_add(st_numa, "pte updates", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
169 - rrddim_add(st_numa, "huge pte updates", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
170 - rrddim_add(st_numa, "hint faults", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
171 - rrddim_add(st_numa, "hint faults local", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
172 - rrddim_add(st_numa, "pages migrated", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
168 + rrddim_add(st_numa, "pte updates", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
169 + rrddim_add(st_numa, "huge pte updates", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
170 + rrddim_add(st_numa, "hint faults", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
171 + rrddim_add(st_numa, "hint faults local", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
172 + rrddim_add(st_numa, "pages migrated", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
173 }
174 else rrdset_next(st_numa);
175
src/registry.c
+11 -11
@@ -327,7 +327,7 @@ void registry_statistics(void) {
327 if(!sts) {
328 sts = rrdset_create("netdata", "registry_sessions", NULL, "registry", NULL, "NetData Registry Sessions", "session", 131000, rrd_update_every, RRDSET_TYPE_LINE);
329
330 - rrddim_add(sts, "sessions", NULL, 1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
330 + rrddim_add(sts, "sessions", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
331 }
332 else rrdset_next(sts);
333
@@ -340,11 +340,11 @@ void registry_statistics(void) {
340 if(!stc) {
341 stc = rrdset_create("netdata", "registry_entries", NULL, "registry", NULL, "NetData Registry Entries", "entries", 131100, rrd_update_every, RRDSET_TYPE_LINE);
342
343 - rrddim_add(stc, "persons", NULL, 1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
344 - rrddim_add(stc, "machines", NULL, 1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
345 - rrddim_add(stc, "urls", NULL, 1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
346 - rrddim_add(stc, "persons_urls", NULL, 1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
347 - rrddim_add(stc, "machines_urls", NULL, 1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
343 + rrddim_add(stc, "persons", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
344 + rrddim_add(stc, "machines", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
345 + rrddim_add(stc, "urls", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
346 + rrddim_add(stc, "persons_urls", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
347 + rrddim_add(stc, "machines_urls", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
348 }
349 else rrdset_next(stc);
350
@@ -361,11 +361,11 @@ void registry_statistics(void) {
361 if(!stm) {
362 stm = rrdset_create("netdata", "registry_mem", NULL, "registry", NULL, "NetData Registry Memory", "KB", 131300, rrd_update_every, RRDSET_TYPE_STACKED);
363
364 - rrddim_add(stm, "persons", NULL, 1, 1024, RRDDIM_ALGORITHM_ABSOLUTE);
365 - rrddim_add(stm, "machines", NULL, 1, 1024, RRDDIM_ALGORITHM_ABSOLUTE);
366 - rrddim_add(stm, "urls", NULL, 1, 1024, RRDDIM_ALGORITHM_ABSOLUTE);
367 - rrddim_add(stm, "persons_urls", NULL, 1, 1024, RRDDIM_ALGORITHM_ABSOLUTE);
368 - rrddim_add(stm, "machines_urls", NULL, 1, 1024, RRDDIM_ALGORITHM_ABSOLUTE);
364 + rrddim_add(stm, "persons", NULL, 1, 1024, RRD_ALGORITHM_ABSOLUTE);
365 + rrddim_add(stm, "machines", NULL, 1, 1024, RRD_ALGORITHM_ABSOLUTE);
366 + rrddim_add(stm, "urls", NULL, 1, 1024, RRD_ALGORITHM_ABSOLUTE);
367 + rrddim_add(stm, "persons_urls", NULL, 1, 1024, RRD_ALGORITHM_ABSOLUTE);
368 + rrddim_add(stm, "machines_urls", NULL, 1, 1024, RRD_ALGORITHM_ABSOLUTE);
369 }
370 else rrdset_next(stm);
371
src/rrd.c
+43 -1557
@@ -1,7 +1,6 @@
1 +#define NETDATA_RRD_INTERNALS 1
2 #include "common.h"
3
3 -#define RRD_DEFAULT_GAP_INTERPOLATIONS 1
4 -
4 // ----------------------------------------------------------------------------
5 // globals
6
@@ -16,225 +15,74 @@ int rrd_update_every = UPDATE_EVERY;
15 int rrd_default_history_entries = RRD_DEFAULT_HISTORY_ENTRIES;
16 RRD_MEMORY_MODE rrd_memory_mode = RRD_MEMORY_MODE_SAVE;
17
19 -static int rrdset_compare(void* a, void* b);
20 -static int rrdset_compare_name(void* a, void* b);
21 -static int rrdfamily_compare(void *a, void *b);
22 -
23 -// ----------------------------------------------------------------------------
24 -// RRDHOST
25 -
26 -RRDHOST localhost = {
27 - .hostname = "localhost",
28 - .rrdset_root = NULL,
29 - .rrdset_root_rwlock = PTHREAD_RWLOCK_INITIALIZER,
30 - .rrdset_root_index = {
31 - { NULL, rrdset_compare },
32 - AVL_LOCK_INITIALIZER
33 - },
34 - .rrdset_root_index_name = {
35 - { NULL, rrdset_compare_name },
36 - AVL_LOCK_INITIALIZER
37 - },
38 - .rrdfamily_root_index = {
39 - { NULL, rrdfamily_compare },
40 - AVL_LOCK_INITIALIZER
41 - },
42 - .variables_root_index = {
43 - { NULL, rrdvar_compare },
44 - AVL_LOCK_INITIALIZER
45 - },
46 - .health_log = {
47 - .next_log_id = 1,
48 - .next_alarm_id = 1,
49 - .count = 0,
50 - .max = 1000,
51 - .alarms = NULL,
52 - .alarm_log_rwlock = PTHREAD_RWLOCK_INITIALIZER
53 - }
54 -};
55 -
56 -void rrdhost_init(char *hostname) {
57 - localhost.hostname = hostname;
58 - localhost.health_log.next_log_id =
59 - localhost.health_log.next_alarm_id = now_realtime_sec();
60 -}
61 -
62 -void rrdhost_rwlock(RRDHOST *host) {
63 - pthread_rwlock_wrlock(&host->rrdset_root_rwlock);
64 -}
65 -
66 -void rrdhost_rdlock(RRDHOST *host) {
67 - pthread_rwlock_rdlock(&host->rrdset_root_rwlock);
68 -}
69 -
70 -void rrdhost_unlock(RRDHOST *host) {
71 - pthread_rwlock_unlock(&host->rrdset_root_rwlock);
72 -}
73 -
74 -void rrdhost_check_rdlock_int(RRDHOST *host, const char *file, const char *function, const unsigned long line) {
75 - int ret = pthread_rwlock_trywrlock(&host->rrdset_root_rwlock);
76 -
77 - if(ret == 0)
78 - fatal("RRDHOST '%s' should be read-locked, but it is not, at function %s() at line %lu of file '%s'", host->hostname, function, line, file);
79 -}
80 -
81 -void rrdhost_check_wrlock_int(RRDHOST *host, const char *file, const char *function, const unsigned long line) {
82 - int ret = pthread_rwlock_tryrdlock(&host->rrdset_root_rwlock);
83 -
84 - if(ret == 0)
85 - fatal("RRDHOST '%s' should be write-locked, but it is not, at function %s() at line %lu of file '%s'", host->hostname, function, line, file);
86 -}
18
19 // ----------------------------------------------------------------------------
89 -// RRDFAMILY index
90 -
91 -static int rrdfamily_compare(void *a, void *b) {
92 - if(((RRDFAMILY *)a)->hash_family < ((RRDFAMILY *)b)->hash_family) return -1;
93 - else if(((RRDFAMILY *)a)->hash_family > ((RRDFAMILY *)b)->hash_family) return 1;
94 - else return strcmp(((RRDFAMILY *)a)->family, ((RRDFAMILY *)b)->family);
95 -}
96 -
97 -#define rrdfamily_index_add(host, rc) (RRDFAMILY *)avl_insert_lock(&((host)->rrdfamily_root_index), (avl *)(rc))
98 -#define rrdfamily_index_del(host, rc) (RRDFAMILY *)avl_remove_lock(&((host)->rrdfamily_root_index), (avl *)(rc))
99 -
100 -static RRDFAMILY *rrdfamily_index_find(RRDHOST *host, const char *id, uint32_t hash) {
101 - RRDFAMILY tmp;
102 - tmp.family = id;
103 - tmp.hash_family = (hash)?hash:simple_hash(tmp.family);
104 -
105 - return (RRDFAMILY *)avl_search_lock(&(host->rrdfamily_root_index), (avl *) &tmp);
106 -}
107 -
108 -RRDFAMILY *rrdfamily_create(RRDHOST *host, const char *id) {
109 - RRDFAMILY *rc = rrdfamily_index_find(host, id, 0);
110 - if(!rc) {
111 - rc = callocz(1, sizeof(RRDFAMILY));
112 -
113 - rc->family = strdupz(id);
114 - rc->hash_family = simple_hash(rc->family);
20 +// RRD - memory modes
21
116 - // initialize the variables index
117 - avl_init_lock(&rc->variables_root_index, rrdvar_compare);
118 -
119 - RRDFAMILY *ret = rrdfamily_index_add(host, rc);
120 - if(ret != rc)
121 - fatal("RRDFAMILY: INTERNAL ERROR: Expected to INSERT RRDFAMILY '%s' into index, but inserted '%s'.", rc->family, (ret)?ret->family:"NONE");
122 - }
123 -
124 - rc->use_count++;
125 - return rc;
126 -}
127 -
128 -void rrdfamily_free(RRDHOST *host, RRDFAMILY *rc) {
129 - rc->use_count--;
130 - if(!rc->use_count) {
131 - RRDFAMILY *ret = rrdfamily_index_del(host, rc);
132 - if(ret != rc)
133 - fatal("RRDFAMILY: INTERNAL ERROR: Expected to DELETE RRDFAMILY '%s' from index, but deleted '%s'.", rc->family, (ret)?ret->family:"NONE");
22 +inline const char *rrd_memory_mode_name(RRD_MEMORY_MODE id) {
23 + switch(id) {
24 + case RRD_MEMORY_MODE_RAM:
25 + return RRD_MEMORY_MODE_RAM_NAME;
26
135 - if(rc->variables_root_index.avl_tree.root != NULL)
136 - fatal("RRDFAMILY: INTERNAL ERROR: Variables index of RRDFAMILY '%s' that is freed, is not empty.", rc->family);
27 + case RRD_MEMORY_MODE_MAP:
28 + return RRD_MEMORY_MODE_MAP_NAME;
29
138 - freez((void *)rc->family);
139 - freez(rc);
30 + case RRD_MEMORY_MODE_SAVE:
31 + default:
32 + return RRD_MEMORY_MODE_SAVE_NAME;
33 }
34 }
35
143 -// ----------------------------------------------------------------------------
144 -// RRDSET index
36 +int rrd_memory_mode_id(const char *name) {
37 + if(unlikely(!strcmp(name, RRD_MEMORY_MODE_RAM_NAME)))
38 + return RRD_MEMORY_MODE_RAM;
39 + else if(unlikely(!strcmp(name, RRD_MEMORY_MODE_MAP_NAME)))
40 + return RRD_MEMORY_MODE_MAP;
41
146 -static int rrdset_compare(void* a, void* b) {
147 - if(((RRDSET *)a)->hash < ((RRDSET *)b)->hash) return -1;
148 - else if(((RRDSET *)a)->hash > ((RRDSET *)b)->hash) return 1;
149 - else return strcmp(((RRDSET *)a)->id, ((RRDSET *)b)->id);
42 + return RRD_MEMORY_MODE_SAVE;
43 }
44
152 -#define rrdset_index_add(host, st) (RRDSET *)avl_insert_lock(&((host)->rrdset_root_index), (avl *)(st))
153 -#define rrdset_index_del(host, st) (RRDSET *)avl_remove_lock(&((host)->rrdset_root_index), (avl *)(st))
154 -
155 -static RRDSET *rrdset_index_find(RRDHOST *host, const char *id, uint32_t hash) {
156 - RRDSET tmp;
157 - strncpyz(tmp.id, id, RRD_ID_LENGTH_MAX);
158 - tmp.hash = (hash)?hash:simple_hash(tmp.id);
159 -
160 - return (RRDSET *)avl_search_lock(&(host->rrdset_root_index), (avl *) &tmp);
161 -}
45
46 // ----------------------------------------------------------------------------
164 -// RRDSET name index
47 +// RRD - algorithms types
48
166 -#define rrdset_from_avlname(avlname_ptr) ((RRDSET *)((avlname_ptr) - offsetof(RRDSET, avlname)))
49 +RRD_ALGORITHM rrd_algorithm_id(const char *name) {
50 + if(strcmp(name, RRD_ALGORITHM_INCREMENTAL_NAME) == 0)
51 + return RRD_ALGORITHM_INCREMENTAL;
52
168 -static int rrdset_compare_name(void* a, void* b) {
169 - RRDSET *A = rrdset_from_avlname(a);
170 - RRDSET *B = rrdset_from_avlname(b);
53 + else if(strcmp(name, RRD_ALGORITHM_ABSOLUTE_NAME) == 0)
54 + return RRD_ALGORITHM_ABSOLUTE;
55
172 - // fprintf(stderr, "COMPARING: %s with %s\n", A->name, B->name);
56 + else if(strcmp(name, RRD_ALGORITHM_PCENT_OVER_ROW_TOTAL_NAME) == 0)
57 + return RRD_ALGORITHM_PCENT_OVER_ROW_TOTAL;
58
174 - if(A->hash_name < B->hash_name) return -1;
175 - else if(A->hash_name > B->hash_name) return 1;
176 - else return strcmp(A->name, B->name);
177 -}
59 + else if(strcmp(name, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL_NAME) == 0)
60 + return RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL;
61
179 -RRDSET *rrdset_index_add_name(RRDHOST *host, RRDSET *st) {
180 - void *result;
181 - // fprintf(stderr, "ADDING: %s (name: %s)\n", st->id, st->name);
182 - result = avl_insert_lock(&host->rrdset_root_index_name, (avl *) (&st->avlname));
183 - if(result) return rrdset_from_avlname(result);
184 - return NULL;
62 + else
63 + return RRD_ALGORITHM_ABSOLUTE;
64 }
65
187 -RRDSET *rrdset_index_del_name(RRDHOST *host, RRDSET *st) {
188 - void *result;
189 - // fprintf(stderr, "DELETING: %s (name: %s)\n", st->id, st->name);
190 - result = (RRDSET *)avl_remove_lock(&((host)->rrdset_root_index_name), (avl *)(&st->avlname));
191 - if(result) return rrdset_from_avlname(result);
192 - return NULL;
193 -}
66 +const char *rrd_algorithm_name(RRD_ALGORITHM algorithm) {
67 + switch(algorithm) {
68 + case RRD_ALGORITHM_ABSOLUTE:
69 + default:
70 + return RRD_ALGORITHM_ABSOLUTE_NAME;
71
195 -static RRDSET *rrdset_index_find_name(RRDHOST *host, const char *name, uint32_t hash) {
196 - void *result = NULL;
197 - RRDSET tmp;
198 - tmp.name = name;
199 - tmp.hash_name = (hash)?hash:simple_hash(tmp.name);
72 + case RRD_ALGORITHM_INCREMENTAL:
73 + return RRD_ALGORITHM_INCREMENTAL_NAME;
74
201 - // fprintf(stderr, "SEARCHING: %s\n", name);
202 - result = avl_search_lock(&host->rrdset_root_index_name, (avl *) (&(tmp.avlname)));
203 - if(result) {
204 - RRDSET *st = rrdset_from_avlname(result);
205 - if(strcmp(st->magic, RRDSET_MAGIC))
206 - error("Search for RRDSET %s returned an invalid RRDSET %s (name %s)", name, st->id, st->name);
75 + case RRD_ALGORITHM_PCENT_OVER_ROW_TOTAL:
76 + return RRD_ALGORITHM_PCENT_OVER_ROW_TOTAL_NAME;
77
208 - // fprintf(stderr, "FOUND: %s\n", name);
209 - return rrdset_from_avlname(result);
78 + case RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL:
79 + return RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL_NAME;
80 }
211 - // fprintf(stderr, "NOT FOUND: %s\n", name);
212 - return NULL;
81 }
82
83
84 // ----------------------------------------------------------------------------
217 -// RRDDIM index
218 -
219 -static int rrddim_compare(void* a, void* b) {
220 - if(((RRDDIM *)a)->hash < ((RRDDIM *)b)->hash) return -1;
221 - else if(((RRDDIM *)a)->hash > ((RRDDIM *)b)->hash) return 1;
222 - else return strcmp(((RRDDIM *)a)->id, ((RRDDIM *)b)->id);
223 -}
224 -
225 -#define rrddim_index_add(st, rd) (RRDDIM *)avl_insert_lock(&((st)->dimensions_index), (avl *)(rd))
226 -#define rrddim_index_del(st,rd ) (RRDDIM *)avl_remove_lock(&((st)->dimensions_index), (avl *)(rd))
227 -
228 -static RRDDIM *rrddim_index_find(RRDSET *st, const char *id, uint32_t hash) {
229 - RRDDIM tmp = {
230 - .id = id,
231 - .hash = (hash)?hash:simple_hash(id)
232 - };
233 - return (RRDDIM *)avl_search_lock(&(st->dimensions_index), (avl *) &tmp);
234 -}
235 -
236 -// ----------------------------------------------------------------------------
237 -// chart types
85 +// RRD - chart types
86
87 inline RRDSET_TYPE rrdset_type_id(const char *name) {
88 if(unlikely(strcmp(name, RRDSET_TYPE_AREA_NAME) == 0))
@@ -261,130 +109,11 @@ const char *rrdset_type_name(RRDSET_TYPE chart_type) {
109 }
110 }
111
264 -// ----------------------------------------------------------------------------
265 -// load / save
266 -
267 -inline const char *rrd_memory_mode_name(RRD_MEMORY_MODE id) {
268 - switch(id) {
269 - case RRD_MEMORY_MODE_RAM:
270 - return RRD_MEMORY_MODE_RAM_NAME;
271 -
272 - case RRD_MEMORY_MODE_MAP:
273 - return RRD_MEMORY_MODE_MAP_NAME;
274 -
275 - case RRD_MEMORY_MODE_SAVE:
276 - default:
277 - return RRD_MEMORY_MODE_SAVE_NAME;
278 - }
279 -}
280 -
281 -int rrd_memory_mode_id(const char *name)
282 -{
283 - if(unlikely(!strcmp(name, RRD_MEMORY_MODE_RAM_NAME)))
284 - return RRD_MEMORY_MODE_RAM;
285 - else if(unlikely(!strcmp(name, RRD_MEMORY_MODE_MAP_NAME)))
286 - return RRD_MEMORY_MODE_MAP;
287 -
288 - return RRD_MEMORY_MODE_SAVE;
289 -}
290 -
291 -// ----------------------------------------------------------------------------
292 -// algorithms types
293 -
294 -RRDDIM_ALGORITHM rrddim_algorithm_id(const char *name)
295 -{
296 - if(strcmp(name, RRDDIM_ALGORITHM_INCREMENTAL_NAME) == 0)
297 - return RRDDIM_ALGORITHM_INCREMENTAL;
298 -
299 - else if(strcmp(name, RRDDIM_ALGORITHM_ABSOLUTE_NAME) == 0)
300 - return RRDDIM_ALGORITHM_ABSOLUTE;
301 -
302 - else if(strcmp(name, RRDDIM_ALGORITHM_PCENT_OVER_ROW_TOTAL_NAME) == 0)
303 - return RRDDIM_ALGORITHM_PCENT_OVER_ROW_TOTAL;
304 -
305 - else if(strcmp(name, RRDDIM_ALGORITHM_PCENT_OVER_DIFF_TOTAL_NAME) == 0)
306 - return RRDDIM_ALGORITHM_PCENT_OVER_DIFF_TOTAL;
307 -
308 - else
309 - return RRDDIM_ALGORITHM_ABSOLUTE;
310 -}
311 -
312 -const char *rrddim_algorithm_name(RRDDIM_ALGORITHM algorithm)
313 -{
314 - switch(algorithm) {
315 - case RRDDIM_ALGORITHM_ABSOLUTE:
316 - default:
317 - return RRDDIM_ALGORITHM_ABSOLUTE_NAME;
318 -
319 - case RRDDIM_ALGORITHM_INCREMENTAL:
320 - return RRDDIM_ALGORITHM_INCREMENTAL_NAME;
321 -
322 - case RRDDIM_ALGORITHM_PCENT_OVER_ROW_TOTAL:
323 - return RRDDIM_ALGORITHM_PCENT_OVER_ROW_TOTAL_NAME;
324 -
325 - case RRDDIM_ALGORITHM_PCENT_OVER_DIFF_TOTAL:
326 - return RRDDIM_ALGORITHM_PCENT_OVER_DIFF_TOTAL_NAME;
327 - }
328 -}
112
113 // ----------------------------------------------------------------------------
331 -// chart names
114 +// RRD - cache directory
115
333 -char *rrdset_strncpyz_name(char *to, const char *from, size_t length)
334 -{
335 - char c, *p = to;
336 -
337 - while (length-- && (c = *from++)) {
338 - if(c != '.' && !isalnum(c))
339 - c = '_';
340 -
341 - *p++ = c;
342 - }
343 -
344 - *p = '\0';
345 -
346 - return to;
347 -}
348 -
349 -void rrdset_set_name(RRDSET *st, const char *name)
350 -{
351 - if(unlikely(st->name && !strcmp(st->name, name)))
352 - return;
353 -
354 - debug(D_RRD_CALLS, "rrdset_set_name() old: %s, new: %s", st->name, name);
355 -
356 - char b[CONFIG_MAX_VALUE + 1];
357 - char n[RRD_ID_LENGTH_MAX + 1];
358 -
359 - snprintfz(n, RRD_ID_LENGTH_MAX, "%s.%s", st->type, name);
360 - rrdset_strncpyz_name(b, n, CONFIG_MAX_VALUE);
361 -
362 - if(st->name) {
363 - rrdset_index_del_name(st->rrdhost, st);
364 - st->name = config_set_default(st->id, "name", b);
365 - st->hash_name = simple_hash(st->name);
366 - rrdsetvar_rename_all(st);
367 - }
368 - else {
369 - st->name = config_get(st->id, "name", b);
370 - st->hash_name = simple_hash(st->name);
371 - }
372 -
373 - pthread_rwlock_wrlock(&st->rwlock);
374 - RRDDIM *rd;
375 - for(rd = st->dimensions; rd ;rd = rd->next)
376 - rrddimvar_rename_all(rd);
377 - pthread_rwlock_unlock(&st->rwlock);
378 -
379 - if(unlikely(rrdset_index_add_name(st->rrdhost, st) != st))
380 - error("RRDSET: INTERNAL ERROR: attempted to index duplicate chart name '%s'", st->name);
381 -}
382 -
383 -// ----------------------------------------------------------------------------
384 -// cache directory
385 -
386 -char *rrdset_cache_dir(const char *id)
387 -{
116 +char *rrdset_cache_dir(const char *id) {
117 char *ret = NULL;
118
119 char b[FILENAME_MAX + 1];
@@ -403,1246 +132,3 @@ char *rrdset_cache_dir(const char *id)
132 return ret;
133 }
134
406 -// ----------------------------------------------------------------------------
407 -// core functions
408 -
409 -void rrdset_reset(RRDSET *st)
410 -{
411 - debug(D_RRD_CALLS, "rrdset_reset() %s", st->name);
412 -
413 - st->last_collected_time.tv_sec = 0;
414 - st->last_collected_time.tv_usec = 0;
415 - st->last_updated.tv_sec = 0;
416 - st->last_updated.tv_usec = 0;
417 - st->current_entry = 0;
418 - st->counter = 0;
419 - st->counter_done = 0;
420 -
421 - RRDDIM *rd;
422 - for(rd = st->dimensions; rd ; rd = rd->next) {
423 - rd->last_collected_time.tv_sec = 0;
424 - rd->last_collected_time.tv_usec = 0;
425 - rd->counter = 0;
426 - memset(rd->values, 0, rd->entries * sizeof(storage_number));
427 - }
428 -}
429 -static inline long align_entries_to_pagesize(long entries) {
430 - if(entries < 5) entries = 5;
431 - if(entries > RRD_HISTORY_ENTRIES_MAX) entries = RRD_HISTORY_ENTRIES_MAX;
432 -
433 -#ifdef NETDATA_LOG_ALLOCATIONS
434 - long page = (size_t)sysconf(_SC_PAGESIZE);
435 -
436 - long size = sizeof(RRDDIM) + entries * sizeof(storage_number);
437 - if(size % page) {
438 - size -= (size % page);
439 - size += page;
440 -
441 - long n = (size - sizeof(RRDDIM)) / sizeof(storage_number);
442 - return n;
443 - }
444 -
445 - return entries;
446 -#else
447 - return entries;
448 -#endif
449 -}
450 -
451 -static inline void timeval_align(struct timeval *tv, int update_every) {
452 - tv->tv_sec -= tv->tv_sec % update_every;
453 - tv->tv_usec = 500000;
454 -}
455 -
456 -RRDSET *rrdset_create(const char *type, const char *id, const char *name, const char *family, const char *context, const char *title, const char *units, long priority, int update_every, int chart_type) {
457 - RRDHOST *host = &localhost;
458 -
459 - if(!type || !type[0]) {
460 - fatal("Cannot create rrd stats without a type.");
461 - return NULL;
462 - }
463 -
464 - if(!id || !id[0]) {
465 - fatal("Cannot create rrd stats without an id.");
466 - return NULL;
467 - }
468 -
469 - char fullid[RRD_ID_LENGTH_MAX + 1];
470 - char fullfilename[FILENAME_MAX + 1];
471 -
472 - snprintfz(fullid, RRD_ID_LENGTH_MAX, "%s.%s", type, id);
473 -
474 - RRDSET *st = rrdset_find(host, fullid);
475 - if(st) {
476 - debug(D_RRD_CALLS, "RRDSET '%s', already exists.", fullid);
477 - return st;
478 - }
479 -
480 - long rentries = config_get_number(fullid, "history", rrd_default_history_entries);
481 - long entries = align_entries_to_pagesize(rentries);
482 - if(entries != rentries) entries = config_set_number(fullid, "history", entries);
483 -
484 - int enabled = config_get_boolean(fullid, "enabled", 1);
485 - if(!enabled) entries = 5;
486 -
487 - unsigned long size = sizeof(RRDSET);
488 - char *cache_dir = rrdset_cache_dir(fullid);
489 -
490 - debug(D_RRD_CALLS, "Creating RRD_STATS for '%s.%s'.", type, id);
491 -
492 - snprintfz(fullfilename, FILENAME_MAX, "%s/main.db", cache_dir);
493 - if(rrd_memory_mode != RRD_MEMORY_MODE_RAM) st = (RRDSET *)mymmap(fullfilename, size, ((rrd_memory_mode == RRD_MEMORY_MODE_MAP)?MAP_SHARED:MAP_PRIVATE), 0);
494 - if(st) {
495 - if(strcmp(st->magic, RRDSET_MAGIC) != 0) {
496 - errno = 0;
497 - info("Initializing file %s.", fullfilename);
498 - memset(st, 0, size);
499 - }
500 - else if(strcmp(st->id, fullid) != 0) {
501 - errno = 0;
502 - error("File %s contents are not for chart %s. Clearing it.", fullfilename, fullid);
503 - // munmap(st, size);
504 - // st = NULL;
505 - memset(st, 0, size);
506 - }
507 - else if(st->memsize != size || st->entries != entries) {
508 - errno = 0;
509 - error("File %s does not have the desired size. Clearing it.", fullfilename);
510 - memset(st, 0, size);
511 - }
512 - else if(st->update_every != update_every) {
513 - errno = 0;
514 - error("File %s does not have the desired update frequency. Clearing it.", fullfilename);
515 - memset(st, 0, size);
516 - }
517 - else if((now_realtime_sec() - st->last_updated.tv_sec) > update_every * entries) {
518 - errno = 0;
519 - error("File %s is too old. Clearing it.", fullfilename);
520 - memset(st, 0, size);
521 - }
522 -
523 - // make sure the database is aligned
524 - if(st->last_updated.tv_sec)
525 - timeval_align(&st->last_updated, update_every);
526 - }
527 -
528 - if(st) {
529 - st->name = NULL;
530 - st->type = NULL;
531 - st->family = NULL;
532 - st->context = NULL;
533 - st->title = NULL;
534 - st->units = NULL;
535 - st->dimensions = NULL;
536 - st->next = NULL;
537 - st->mapped = rrd_memory_mode;
538 - st->variables = NULL;
539 - st->alarms = NULL;
540 - memset(&st->rwlock, 0, sizeof(pthread_rwlock_t));
541 - memset(&st->avl, 0, sizeof(avl));
542 - memset(&st->avlname, 0, sizeof(avl));
543 - memset(&st->variables_root_index, 0, sizeof(avl_tree_lock));
544 - memset(&st->dimensions_index, 0, sizeof(avl_tree_lock));
545 - }
546 - else {
547 - st = callocz(1, size);
548 - st->mapped = RRD_MEMORY_MODE_RAM;
549 - }
550 -
551 - st->rrdhost = host;
552 - st->memsize = size;
553 - st->entries = entries;
554 - st->update_every = update_every;
555 -
556 - if(st->current_entry >= st->entries) st->current_entry = 0;
557 -
558 - strcpy(st->cache_filename, fullfilename);
559 - strcpy(st->magic, RRDSET_MAGIC);
560 -
561 - strcpy(st->id, fullid);
562 - st->hash = simple_hash(st->id);
563 -
564 - st->cache_dir = cache_dir;
565 -
566 - st->chart_type = rrdset_type_id(config_get(st->id, "chart type", rrdset_type_name(chart_type)));
567 - st->type = config_get(st->id, "type", type);
568 - st->family = config_get(st->id, "family", family?family:st->type);
569 - st->units = config_get(st->id, "units", units?units:"");
570 -
571 - st->context = config_get(st->id, "context", context?context:st->id);
572 - st->hash_context = simple_hash(st->context);
573 -
574 - st->priority = config_get_number(st->id, "priority", priority);
575 - st->enabled = enabled;
576 -
577 - st->isdetail = 0;
578 - st->debug = 0;
579 -
580 - // if(!strcmp(st->id, "disk_util.dm-0")) {
581 - // st->debug = 1;
582 - // error("enabled debugging for '%s'", st->id);
583 - // }
584 - // else error("not enabled debugging for '%s'", st->id);
585 -
586 - st->green = NAN;
587 - st->red = NAN;
588 -
589 - st->last_collected_time.tv_sec = 0;
590 - st->last_collected_time.tv_usec = 0;
591 - st->counter_done = 0;
592 -
593 - st->gap_when_lost_iterations_above = (int) (
594 - config_get_number(st->id, "gap when lost iterations above", RRD_DEFAULT_GAP_INTERPOLATIONS) + 2);
595 -
596 - avl_init_lock(&st->dimensions_index, rrddim_compare);
597 - avl_init_lock(&st->variables_root_index, rrdvar_compare);
598 -
599 - pthread_rwlock_init(&st->rwlock, NULL);
600 - rrdhost_rwlock(host);
601 -
602 - if(name && *name) rrdset_set_name(st, name);
603 - else rrdset_set_name(st, id);
604 -
605 - {
606 - char varvalue[CONFIG_MAX_VALUE + 1];
607 - char varvalue2[CONFIG_MAX_VALUE + 1];
608 - snprintfz(varvalue, CONFIG_MAX_VALUE, "%s (%s)", title?title:"", st->name);
609 - json_escape_string(varvalue2, varvalue, sizeof(varvalue2));
610 - st->title = config_get(st->id, "title", varvalue2);
611 - }
612 -
613 - st->rrdfamily = rrdfamily_create(host, st->family);
614 -
615 - st->next = host->rrdset_root;
616 - host->rrdset_root = st;
617 -
618 - if(health_enabled) {
619 - rrdsetvar_create(st, "last_collected_t", RRDVAR_TYPE_TIME_T, &st->last_collected_time.tv_sec, 0);
620 - rrdsetvar_create(st, "collected_total_raw", RRDVAR_TYPE_TOTAL, &st->last_collected_total, 0);
621 - rrdsetvar_create(st, "green", RRDVAR_TYPE_CALCULATED, &st->green, 0);
622 - rrdsetvar_create(st, "red", RRDVAR_TYPE_CALCULATED, &st->red, 0);
623 - rrdsetvar_create(st, "update_every", RRDVAR_TYPE_INT, &st->update_every, 0);
624 - }
625 -
626 - if(unlikely(rrdset_index_add(host, st) != st))
627 - error("RRDSET: INTERNAL ERROR: attempt to index duplicate chart '%s'", st->id);
628 -
629 - rrdsetcalc_link_matching(st);
630 - rrdcalctemplate_link_matching(st);
631 -
632 - rrdhost_unlock(host);
633 -
634 - return(st);
635 -}
636 -
637 -RRDDIM *rrddim_add(RRDSET *st, const char *id, const char *name, collected_number multiplier, collected_number divisor, RRDDIM_ALGORITHM algorithm)
638 -{
639 - RRDDIM *rd = rrddim_find(st, id);
640 - if(rd) {
641 - debug(D_RRD_CALLS, "Cannot create rrd dimension '%s/%s', it already exists.", st->id, name?name:"<NONAME>");
642 - return rd;
643 - }
644 -
645 - char filename[FILENAME_MAX + 1];
646 - char fullfilename[FILENAME_MAX + 1];
647 -
648 - char varname[CONFIG_MAX_NAME + 1];
649 - unsigned long size = sizeof(RRDDIM) + (st->entries * sizeof(storage_number));
650 -
651 - debug(D_RRD_CALLS, "Adding dimension '%s/%s'.", st->id, id);
652 -
653 - rrdset_strncpyz_name(filename, id, FILENAME_MAX);
654 - snprintfz(fullfilename, FILENAME_MAX, "%s/%s.db", st->cache_dir, filename);
655 -
656 - if(rrd_memory_mode != RRD_MEMORY_MODE_RAM) {
657 - rd = (RRDDIM *) mymmap(fullfilename, size, ((rrd_memory_mode == RRD_MEMORY_MODE_MAP) ? MAP_SHARED : MAP_PRIVATE), 1);
658 - if(rd) {
659 - // we have a file mapped for rd
660 -
661 - rd->id = NULL;
662 - rd->name = NULL;
663 - rd->cache_filename = NULL;
664 - rd->memory_mode = rrd_memory_mode;
665 - rd->flags = 0x00000000;
666 - rd->variables = NULL;
667 - rd->next = NULL;
668 - rd->rrdset = NULL;
669 - memset(&rd->avl, 0, sizeof(avl));
670 -
671 - struct timeval now;
672 - now_realtime_timeval(&now);
673 -
674 - if(strcmp(rd->magic, RRDDIMENSION_MAGIC) != 0) {
675 - errno = 0;
676 - info("Initializing file %s.", fullfilename);
677 - memset(rd, 0, size);
678 - }
679 - else if(rd->memsize != size) {
680 - errno = 0;
681 - error("File %s does not have the desired size. Clearing it.", fullfilename);
682 - memset(rd, 0, size);
683 - }
684 - else if(rd->multiplier != multiplier) {
685 - errno = 0;
686 - error("File %s does not have the same multiplier. Clearing it.", fullfilename);
687 - memset(rd, 0, size);
688 - }
689 - else if(rd->divisor != divisor) {
690 - errno = 0;
691 - error("File %s does not have the same divisor. Clearing it.", fullfilename);
692 - memset(rd, 0, size);
693 - }
694 - else if(rd->update_every != st->update_every) {
695 - errno = 0;
696 - error("File %s does not have the same refresh frequency. Clearing it.", fullfilename);
697 - memset(rd, 0, size);
698 - }
699 - else if(dt_usec(&now, &rd->last_collected_time) > (rd->entries * rd->update_every * USEC_PER_SEC)) {
700 - errno = 0;
701 - error("File %s is too old. Clearing it.", fullfilename);
702 - memset(rd, 0, size);
703 - }
704 -
705 - if(rd->algorithm && rd->algorithm != algorithm)
706 - error("File %s does not have the expected algorithm (expected %u '%s', found %u '%s'). Previous values may be wrong."
707 - , fullfilename, algorithm, rrddim_algorithm_name(algorithm), rd->algorithm,
708 - rrddim_algorithm_name(rd->algorithm));
709 - }
710 - }
711 -
712 - if(unlikely(!rd)) {
713 - // if we didn't manage to get a mmap'd dimension, just create one
714 - rd = callocz(1, size);
715 - rd->memory_mode = RRD_MEMORY_MODE_RAM;
716 - }
717 -
718 - rd->memsize = size;
719 -
720 - strcpy(rd->magic, RRDDIMENSION_MAGIC);
721 -
722 - rd->id = strdupz(id);
723 - rd->hash = simple_hash(rd->id);
724 -
725 - rd->cache_filename = strdupz(fullfilename);
726 -
727 - snprintfz(varname, CONFIG_MAX_NAME, "dim %s name", rd->id);
728 - rd->name = config_get(st->id, varname, (name && *name)?name:rd->id);
729 - rd->hash_name = simple_hash(rd->name);
730 -
731 - snprintfz(varname, CONFIG_MAX_NAME, "dim %s algorithm", rd->id);
732 - rd->algorithm = rrddim_algorithm_id(config_get(st->id, varname, rrddim_algorithm_name(algorithm)));
733 -
734 - snprintfz(varname, CONFIG_MAX_NAME, "dim %s multiplier", rd->id);
735 - rd->multiplier = config_get_number(st->id, varname, multiplier);
736 -
737 - snprintfz(varname, CONFIG_MAX_NAME, "dim %s divisor", rd->id);
738 - rd->divisor = config_get_number(st->id, varname, divisor);
739 - if(!rd->divisor) rd->divisor = 1;
740 -
741 - rd->entries = st->entries;
742 - rd->update_every = st->update_every;
743 -
744 - // prevent incremental calculation spikes
745 - rd->counter = 0;
746 - rrddim_flag_clear(rd, RRDDIM_FLAG_UPDATED);
747 - rd->calculated_value = 0;
748 - rd->last_calculated_value = 0;
749 - rd->collected_value = 0;
750 - rd->last_collected_value = 0;
751 - rd->collected_volume = 0;
752 - rd->stored_volume = 0;
753 - rd->last_stored_value = 0;
754 - rd->values[st->current_entry] = pack_storage_number(0, SN_NOT_EXISTS);
755 - rd->last_collected_time.tv_sec = 0;
756 - rd->last_collected_time.tv_usec = 0;
757 - rd->rrdset = st;
758 -
759 - // append this dimension
760 - pthread_rwlock_wrlock(&st->rwlock);
761 - if(!st->dimensions)
762 - st->dimensions = rd;
763 - else {
764 - RRDDIM *td = st->dimensions;
765 - for(; td->next; td = td->next) ;
766 - td->next = rd;
767 - }
768 -
769 - if(health_enabled) {
770 - rrddimvar_create(rd, RRDVAR_TYPE_CALCULATED, NULL, NULL, &rd->last_stored_value, 0);
771 - rrddimvar_create(rd, RRDVAR_TYPE_COLLECTED, NULL, "_raw", &rd->last_collected_value, 0);
772 - rrddimvar_create(rd, RRDVAR_TYPE_TIME_T, NULL, "_last_collected_t", &rd->last_collected_time.tv_sec, 0);
773 - }
774 -
775 - pthread_rwlock_unlock(&st->rwlock);
776 -
777 - if(unlikely(rrddim_index_add(st, rd) != rd))
778 - error("RRDDIM: INTERNAL ERROR: attempt to index duplicate dimension '%s' on chart '%s'", rd->id, st->id);
779 -
780 - return(rd);
781 -}
782 -
783 -void rrddim_set_name(RRDSET *st, RRDDIM *rd, const char *name)
784 -{
785 - if(unlikely(!strcmp(rd->name, name)))
786 - return;
787 -
788 - debug(D_RRD_CALLS, "rrddim_set_name() from %s.%s to %s.%s", st->name, rd->name, st->name, name);
789 -
790 - char varname[CONFIG_MAX_NAME + 1];
791 - snprintfz(varname, CONFIG_MAX_NAME, "dim %s name", rd->id);
792 - rd->name = config_set_default(st->id, varname, name);
793 - rd->hash_name = simple_hash(rd->name);
794 -
795 - rrddimvar_rename_all(rd);
796 -}
797 -
798 -void rrddim_free(RRDSET *st, RRDDIM *rd)
799 -{
800 - debug(D_RRD_CALLS, "rrddim_free() %s.%s", st->name, rd->name);
801 -
802 - if(rd == st->dimensions)
803 - st->dimensions = rd->next;
804 - else {
805 - RRDDIM *i;
806 - for (i = st->dimensions; i && i->next != rd; i = i->next) ;
807 -
808 - if (i && i->next == rd)
809 - i->next = rd->next;
810 - else
811 - error("Request to free dimension '%s.%s' but it is not linked.", st->id, rd->name);
812 - }
813 - rd->next = NULL;
814 -
815 - while(rd->variables)
816 - rrddimvar_free(rd->variables);
817 -
818 - if(unlikely(rrddim_index_del(st, rd) != rd))
819 - error("RRDDIM: INTERNAL ERROR: attempt to remove from index dimension '%s' on chart '%s', removed a different dimension.", rd->id, st->id);
820 -
821 - // free(rd->annotations);
822 -
823 - switch(rd->memory_mode) {
824 - case RRD_MEMORY_MODE_SAVE:
825 - debug(D_RRD_CALLS, "Saving dimension '%s' to '%s'.", rd->name, rd->cache_filename);
826 - savememory(rd->cache_filename, rd, rd->memsize);
827 - // continue to map mode - no break;
828 -
829 - case RRD_MEMORY_MODE_MAP:
830 - debug(D_RRD_CALLS, "Unmapping dimension '%s'.", rd->name);
831 - freez((void *)rd->id);
832 - freez(rd->cache_filename);
833 - munmap(rd, rd->memsize);
834 - break;
835 -
836 - case RRD_MEMORY_MODE_RAM:
837 - debug(D_RRD_CALLS, "Removing dimension '%s'.", rd->name);
838 - freez((void *)rd->id);
839 - freez(rd->cache_filename);
840 - freez(rd);
841 - break;
842 - }
843 -}
844 -
845 -void rrdset_free_all(void)
846 -{
847 - info("Freeing all memory...");
848 -
849 - rrdhost_rwlock(&localhost);
850 -
851 - RRDSET *st;
852 - for(st = localhost.rrdset_root; st ;) {
853 - RRDSET *next = st->next;
854 -
855 - pthread_rwlock_wrlock(&st->rwlock);
856 -
857 - while(st->variables)
858 - rrdsetvar_free(st->variables);
859 -
860 - while(st->alarms)
861 - rrdsetcalc_unlink(st->alarms);
862 -
863 - while(st->dimensions)
864 - rrddim_free(st, st->dimensions);
865 -
866 - if(unlikely(rrdset_index_del(&localhost, st) != st))
867 - error("RRDSET: INTERNAL ERROR: attempt to remove from index chart '%s', removed a different chart.", st->id);
868 -
869 - rrdset_index_del_name(&localhost, st);
870 -
871 - st->rrdfamily->use_count--;
872 - if(!st->rrdfamily->use_count)
873 - rrdfamily_free(&localhost, st->rrdfamily);
874 -
875 - pthread_rwlock_unlock(&st->rwlock);
876 -
877 - if(st->mapped == RRD_MEMORY_MODE_SAVE || st->mapped == RRD_MEMORY_MODE_MAP) {
878 - debug(D_RRD_CALLS, "Unmapping stats '%s'.", st->name);
879 - munmap(st, st->memsize);
880 - }
881 - else
882 - freez(st);
883 -
884 - st = next;
885 - }
886 - localhost.rrdset_root = NULL;
887 -
888 - rrdhost_unlock(&localhost);
889 -
890 - info("Memory cleanup completed...");
891 -}
892 -
893 -void rrdset_save_all(void) {
894 - info("Saving database...");
895 -
896 - RRDSET *st;
897 - RRDDIM *rd;
898 -
899 - // we get an write lock
900 - // to ensure only one thread is saving the database
901 - rrdhost_rwlock(&localhost);
902 -
903 - for(st = localhost.rrdset_root; st ; st = st->next) {
904 - pthread_rwlock_rdlock(&st->rwlock);
905 -
906 - if(st->mapped == RRD_MEMORY_MODE_SAVE) {
907 - debug(D_RRD_CALLS, "Saving stats '%s' to '%s'.", st->name, st->cache_filename);
908 - savememory(st->cache_filename, st, st->memsize);
909 - }
910 -
911 - for(rd = st->dimensions; rd ; rd = rd->next) {
912 - if(likely(rd->memory_mode == RRD_MEMORY_MODE_SAVE)) {
913 - debug(D_RRD_CALLS, "Saving dimension '%s' to '%s'.", rd->name, rd->cache_filename);
914 - savememory(rd->cache_filename, rd, rd->memsize);
915 - }
916 - }
917 -
918 - pthread_rwlock_unlock(&st->rwlock);
919 - }
920 -
921 - rrdhost_unlock(&localhost);
922 -}
923 -
924 -
925 -RRDSET *rrdset_find(RRDHOST *host, const char *id) {
926 - debug(D_RRD_CALLS, "rrdset_find() for chart '%s' in host '%s'", id, host->hostname);
927 - RRDSET *st = rrdset_index_find(host, id, 0);
928 - return(st);
929 -}
930 -
931 -RRDSET *rrdset_find_bytype(RRDHOST *host, const char *type, const char *id)
932 -{
933 - debug(D_RRD_CALLS, "rrdset_find_bytype() for chart '%s.%s' in host '%s'", type, id, host->hostname);
934 -
935 - char buf[RRD_ID_LENGTH_MAX + 1];
936 - strncpyz(buf, type, RRD_ID_LENGTH_MAX - 1);
937 - strcat(buf, ".");
938 - int len = (int) strlen(buf);
939 - strncpyz(&buf[len], id, (size_t) (RRD_ID_LENGTH_MAX - len));
940 -
941 - return(rrdset_find(host, buf));
942 -}
943 -
944 -RRDSET *rrdset_find_byname(RRDHOST *host, const char *name) {
945 - debug(D_RRD_CALLS, "rrdset_find_byname() for chart '%s' in host '%s'", name, host->hostname);
946 - RRDSET *st = rrdset_index_find_name(host, name, 0);
947 - return(st);
948 -}
949 -
950 -RRDDIM *rrddim_find(RRDSET *st, const char *id)
951 -{
952 - debug(D_RRD_CALLS, "rrddim_find() for chart %s, dimension %s", st->name, id);
953 -
954 - return rrddim_index_find(st, id, 0);
955 -}
956 -
957 -int rrddim_hide(RRDSET *st, const char *id)
958 -{
959 - debug(D_RRD_CALLS, "rrddim_hide() for chart %s, dimension %s", st->name, id);
960 -
961 - RRDDIM *rd = rrddim_find(st, id);
962 - if(unlikely(!rd)) {
963 - error("Cannot find dimension with id '%s' on stats '%s' (%s).", id, st->name, st->id);
964 - return 1;
965 - }
966 -
967 - rrddim_flag_set(rd, RRDDIM_FLAG_HIDDEN);
968 - return 0;
969 -}
970 -
971 -int rrddim_unhide(RRDSET *st, const char *id) {
972 - debug(D_RRD_CALLS, "rrddim_unhide() for chart %s, dimension %s", st->name, id);
973 -
974 - RRDDIM *rd = rrddim_find(st, id);
975 - if(unlikely(!rd)) {
976 - error("Cannot find dimension with id '%s' on stats '%s' (%s).", id, st->name, st->id);
977 - return 1;
978 - }
979 -
980 - rrddim_flag_clear(rd, RRDDIM_FLAG_HIDDEN);
981 - return 0;
982 -}
983 -
984 -collected_number rrddim_set_by_pointer(RRDSET *st, RRDDIM *rd, collected_number value)
985 -{
986 - debug(D_RRD_CALLS, "rrddim_set_by_pointer() for chart %s, dimension %s, value " COLLECTED_NUMBER_FORMAT, st->name, rd->name, value);
987 -
988 - now_realtime_timeval(&rd->last_collected_time);
989 - rd->collected_value = value;
990 - rrddim_flag_set(rd, RRDDIM_FLAG_UPDATED);
991 - rd->counter++;
992 -
993 - // fprintf(stderr, "%s.%s %llu " COLLECTED_NUMBER_FORMAT " dt %0.6f" " rate " CALCULATED_NUMBER_FORMAT "\n", st->name, rd->name, st->usec_since_last_update, value, (float)((double)st->usec_since_last_update / (double)1000000), (calculated_number)((value - rd->last_collected_value) * (calculated_number)rd->multiplier / (calculated_number)rd->divisor * 1000000.0 / (calculated_number)st->usec_since_last_update));
994 -
995 - return rd->last_collected_value;
996 -}
997 -
998 -collected_number rrddim_set(RRDSET *st, const char *id, collected_number value)
999 -{
1000 - RRDDIM *rd = rrddim_find(st, id);
1001 - if(unlikely(!rd)) {
1002 - error("Cannot find dimension with id '%s' on stats '%s' (%s).", id, st->name, st->id);
1003 - return 0;
1004 - }
1005 -
1006 - return rrddim_set_by_pointer(st, rd, value);
1007 -}
1008 -
1009 -void rrdset_next_usec_unfiltered(RRDSET *st, usec_t microseconds)
1010 -{
1011 - if(unlikely(!st->last_collected_time.tv_sec || !microseconds)) {
1012 - // the first entry
1013 - microseconds = st->update_every * USEC_PER_SEC;
1014 - }
1015 - st->usec_since_last_update = microseconds;
1016 -}
1017 -
1018 -void rrdset_next_usec(RRDSET *st, usec_t microseconds)
1019 -{
1020 - struct timeval now;
1021 - now_realtime_timeval(&now);
1022 -
1023 - if(unlikely(!st->last_collected_time.tv_sec)) {
1024 - // the first entry
1025 - microseconds = st->update_every * USEC_PER_SEC;
1026 - }
1027 - else if(unlikely(!microseconds)) {
1028 - // no dt given by the plugin
1029 - microseconds = dt_usec(&now, &st->last_collected_time);
1030 - }
1031 - else {
1032 - // microseconds has the time since the last collection
1033 -#ifdef NETDATA_INTERNAL_CHECKS
1034 - usec_t now_usec = timeval_usec(&now);
1035 - usec_t last_usec = timeval_usec(&st->last_collected_time);
1036 -#endif
1037 - usec_t since_last_usec = dt_usec(&now, &st->last_collected_time);
1038 -
1039 - // verify the microseconds given is good
1040 - if(unlikely(microseconds > since_last_usec)) {
1041 - debug(D_RRD_CALLS, "dt %llu usec given is too big - it leads %llu usec to the future, for chart '%s' (%s).", microseconds, microseconds - since_last_usec, st->name, st->id);
1042 -
1043 -#ifdef NETDATA_INTERNAL_CHECKS
1044 - if(unlikely(last_usec + microseconds > now_usec + 1000))
1045 - error("dt %llu usec given is too big - it leads %llu usec to the future, for chart '%s' (%s).", microseconds, microseconds - since_last_usec, st->name, st->id);
1046 -#endif
1047 -
1048 - microseconds = since_last_usec;
1049 - }
1050 - else if(unlikely(microseconds < since_last_usec * 0.8)) {
1051 - debug(D_RRD_CALLS, "dt %llu usec given is too small - expected %llu usec up to -20%%, for chart '%s' (%s).", microseconds, since_last_usec, st->name, st->id);
1052 -
1053 -#ifdef NETDATA_INTERNAL_CHECKS
1054 - error("dt %llu usec given is too small - expected %llu usec up to -20%%, for chart '%s' (%s).", microseconds, since_last_usec, st->name, st->id);
1055 -#endif
1056 - microseconds = since_last_usec;
1057 - }
1058 - }
1059 - debug(D_RRD_CALLS, "rrdset_next_usec() for chart %s with microseconds %llu", st->name, microseconds);
1060 -
1061 - if(unlikely(st->debug)) debug(D_RRD_STATS, "%s: NEXT: %llu microseconds", st->name, microseconds);
1062 - st->usec_since_last_update = microseconds;
1063 -}
1064 -
1065 -usec_t rrdset_done(RRDSET *st)
1066 -{
1067 - if(unlikely(netdata_exit)) return 0;
1068 -
1069 - debug(D_RRD_CALLS, "rrdset_done() for chart %s", st->name);
1070 -
1071 - RRDDIM *rd;
1072 -
1073 - int
1074 - pthreadoldcancelstate; // store the old cancelable pthread state, to restore it at the end
1075 -
1076 - char
1077 - store_this_entry = 1, // boolean: 1 = store this entry, 0 = don't store this entry
1078 - first_entry = 0; // boolean: 1 = this is the first entry seen for this chart, 0 = all other entries
1079 -
1080 - unsigned int
1081 - stored_entries = 0; // the number of entries we have stored in the db, during this call to rrdset_done()
1082 -
1083 - usec_t
1084 - last_collect_ut, // the timestamp in microseconds, of the last collected value
1085 - now_collect_ut, // the timestamp in microseconds, of this collected value (this is NOW)
1086 - last_stored_ut, // the timestamp in microseconds, of the last stored entry in the db
1087 - next_store_ut, // the timestamp in microseconds, of the next entry to store in the db
1088 - update_every_ut = st->update_every * USEC_PER_SEC; // st->update_every in microseconds
1089 -
1090 - if(unlikely(pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &pthreadoldcancelstate) != 0))
1091 - error("Cannot set pthread cancel state to DISABLE.");
1092 -
1093 - // a read lock is OK here
1094 - pthread_rwlock_rdlock(&st->rwlock);
1095 -
1096 -/*
1097 - // enable the chart, if it was disabled
1098 - if(unlikely(rrd_delete_unupdated_dimensions) && !st->enabled)
1099 - st->enabled = 1;
1100 -*/
1101 -
1102 - // check if the chart has a long time to be updated
1103 - if(unlikely(st->usec_since_last_update > st->entries * update_every_ut)) {
1104 - info("%s: took too long to be updated (%0.3Lf secs). Resetting it.", st->name, (long double)(st->usec_since_last_update / 1000000.0));
1105 - rrdset_reset(st);
1106 - st->usec_since_last_update = update_every_ut;
1107 - first_entry = 1;
1108 - }
1109 - if(unlikely(st->debug)) debug(D_RRD_STATS, "%s: microseconds since last update: %llu", st->name, st->usec_since_last_update);
1110 -
1111 - // set last_collected_time
1112 - if(unlikely(!st->last_collected_time.tv_sec)) {
1113 - // it is the first entry
1114 - // set the last_collected_time to now
1115 - now_realtime_timeval(&st->last_collected_time);
1116 - timeval_align(&st->last_collected_time, st->update_every);
1117 -
1118 - last_collect_ut = st->last_collected_time.tv_sec * USEC_PER_SEC + st->last_collected_time.tv_usec - update_every_ut;
1119 -
1120 - // the first entry should not be stored
1121 - store_this_entry = 0;
1122 - first_entry = 1;
1123 -
1124 - if(unlikely(st->debug)) debug(D_RRD_STATS, "%s: has not set last_collected_time. Setting it now. Will not store the next entry.", st->name);
1125 - }
1126 - else {
1127 - // it is not the first entry
1128 - // calculate the proper last_collected_time, using usec_since_last_update
1129 - last_collect_ut = st->last_collected_time.tv_sec * USEC_PER_SEC + st->last_collected_time.tv_usec;
1130 - usec_t ut = last_collect_ut + st->usec_since_last_update;
1131 - st->last_collected_time.tv_sec = (time_t) (ut / USEC_PER_SEC);
1132 - st->last_collected_time.tv_usec = (suseconds_t) (ut % USEC_PER_SEC);
1133 - }
1134 -
1135 - // if this set has not been updated in the past
1136 - // we fake the last_update time to be = now - usec_since_last_update
1137 - if(unlikely(!st->last_updated.tv_sec)) {
1138 - // it has never been updated before
1139 - // set a fake last_updated, in the past using usec_since_last_update
1140 - usec_t ut = st->last_collected_time.tv_sec * USEC_PER_SEC + st->last_collected_time.tv_usec - st->usec_since_last_update;
1141 - st->last_updated.tv_sec = (time_t) (ut / USEC_PER_SEC);
1142 - st->last_updated.tv_usec = (suseconds_t) (ut % USEC_PER_SEC);
1143 -
1144 - // the first entry should not be stored
1145 - store_this_entry = 0;
1146 - first_entry = 1;
1147 -
1148 - if(unlikely(st->debug)) debug(D_RRD_STATS, "%s: initializing last_updated to now - %llu microseconds (%0.3Lf). Will not store the next entry.", st->name, st->usec_since_last_update, (long double)ut/1000000.0);
1149 - }
1150 -
1151 - // check if we will re-write the entire data set
1152 - if(unlikely(dt_usec(&st->last_collected_time, &st->last_updated) > st->entries * update_every_ut)) {
1153 - info("%s: too old data (last updated at %ld.%ld, last collected at %ld.%ld). Resetting it. Will not store the next entry.", st->name, st->last_updated.tv_sec, st->last_updated.tv_usec, st->last_collected_time.tv_sec, st->last_collected_time.tv_usec);
1154 - rrdset_reset(st);
1155 -
1156 - st->usec_since_last_update = update_every_ut;
1157 -
1158 - now_realtime_timeval(&st->last_collected_time);
1159 - timeval_align(&st->last_collected_time, st->update_every);
1160 -
1161 - usec_t ut = st->last_collected_time.tv_sec * USEC_PER_SEC + st->last_collected_time.tv_usec - st->usec_since_last_update;
1162 - st->last_updated.tv_sec = (time_t) (ut / USEC_PER_SEC);
1163 - st->last_updated.tv_usec = (suseconds_t) (ut % USEC_PER_SEC);
1164 -
1165 - // the first entry should not be stored
1166 - store_this_entry = 0;
1167 - first_entry = 1;
1168 - }
1169 -
1170 - // these are the 3 variables that will help us in interpolation
1171 - // last_stored_ut = the last time we added a value to the storage
1172 - // now_collect_ut = the time the current value has been collected
1173 - // next_store_ut = the time of the next interpolation point
1174 - last_stored_ut = st->last_updated.tv_sec * USEC_PER_SEC + st->last_updated.tv_usec;
1175 - now_collect_ut = st->last_collected_time.tv_sec * USEC_PER_SEC + st->last_collected_time.tv_usec;
1176 - next_store_ut = (st->last_updated.tv_sec + st->update_every) * USEC_PER_SEC;
1177 -
1178 - if(unlikely(st->debug)) {
1179 - debug(D_RRD_STATS, "%s: last_collect_ut = %0.3Lf (last collection time)", st->name, (long double)last_collect_ut/1000000.0);
1180 - debug(D_RRD_STATS, "%s: now_collect_ut = %0.3Lf (current collection time)", st->name, (long double)now_collect_ut/1000000.0);
1181 - debug(D_RRD_STATS, "%s: last_stored_ut = %0.3Lf (last updated time)", st->name, (long double)last_stored_ut/1000000.0);
1182 - debug(D_RRD_STATS, "%s: next_store_ut = %0.3Lf (next interpolation point)", st->name, (long double)next_store_ut/1000000.0);
1183 - }
1184 -
1185 - if(unlikely(!st->counter_done)) {
1186 - store_this_entry = 0;
1187 - if(unlikely(st->debug)) debug(D_RRD_STATS, "%s: Will not store the next entry.", st->name);
1188 - }
1189 - st->counter_done++;
1190 -
1191 - // calculate totals and count the dimensions
1192 - int dimensions;
1193 - st->collected_total = 0;
1194 - for( rd = st->dimensions, dimensions = 0 ; rd ; rd = rd->next, dimensions++ )
1195 - if(likely(rrddim_flag_check(rd, RRDDIM_FLAG_UPDATED)))
1196 - st->collected_total += rd->collected_value;
1197 -
1198 - uint32_t storage_flags = SN_EXISTS;
1199 -
1200 - // process all dimensions to calculate their values
1201 - // based on the collected figures only
1202 - // at this stage we do not interpolate anything
1203 - for( rd = st->dimensions ; rd ; rd = rd->next ) {
1204 -
1205 - if(unlikely(!rrddim_flag_check(rd, RRDDIM_FLAG_UPDATED))) {
1206 - rd->calculated_value = 0;
1207 - continue;
1208 - }
1209 -
1210 - if(unlikely(st->debug)) debug(D_RRD_STATS, "%s/%s: START "
1211 - " last_collected_value = " COLLECTED_NUMBER_FORMAT
1212 - " collected_value = " COLLECTED_NUMBER_FORMAT
1213 - " last_calculated_value = " CALCULATED_NUMBER_FORMAT
1214 - " calculated_value = " CALCULATED_NUMBER_FORMAT
1215 - , st->id, rd->name
1216 - , rd->last_collected_value
1217 - , rd->collected_value
1218 - , rd->last_calculated_value
1219 - , rd->calculated_value
1220 - );
1221 -
1222 - switch(rd->algorithm) {
1223 - case RRDDIM_ALGORITHM_ABSOLUTE:
1224 - rd->calculated_value = (calculated_number)rd->collected_value
1225 - * (calculated_number)rd->multiplier
1226 - / (calculated_number)rd->divisor;
1227 -
1228 - if(unlikely(st->debug))
1229 - debug(D_RRD_STATS, "%s/%s: CALC ABS/ABS-NO-IN "
1230 - CALCULATED_NUMBER_FORMAT " = "
1231 - COLLECTED_NUMBER_FORMAT
1232 - " * " CALCULATED_NUMBER_FORMAT
1233 - " / " CALCULATED_NUMBER_FORMAT
1234 - , st->id, rd->name
1235 - , rd->calculated_value
1236 - , rd->collected_value
1237 - , (calculated_number)rd->multiplier
1238 - , (calculated_number)rd->divisor
1239 - );
1240 - break;
1241 -
1242 - case RRDDIM_ALGORITHM_PCENT_OVER_ROW_TOTAL:
1243 - if(unlikely(!st->collected_total))
1244 - rd->calculated_value = 0;
1245 - else
1246 - // the percentage of the current value
1247 - // over the total of all dimensions
1248 - rd->calculated_value =
1249 - (calculated_number)100
1250 - * (calculated_number)rd->collected_value
1251 - / (calculated_number)st->collected_total;
1252 -
1253 - if(unlikely(st->debug))
1254 - debug(D_RRD_STATS, "%s/%s: CALC PCENT-ROW "
1255 - CALCULATED_NUMBER_FORMAT " = 100"
1256 - " * " COLLECTED_NUMBER_FORMAT
1257 - " / " COLLECTED_NUMBER_FORMAT
1258 - , st->id, rd->name
1259 - , rd->calculated_value
1260 - , rd->collected_value
1261 - , st->collected_total
1262 - );
1263 - break;
1264 -
1265 - case RRDDIM_ALGORITHM_INCREMENTAL:
1266 - if(unlikely(rd->counter <= 1)) {
1267 - rd->calculated_value = 0;
1268 - continue;
1269 - }
1270 -
1271 - // if the new is smaller than the old (an overflow, or reset), set the old equal to the new
1272 - // to reset the calculation (it will give zero as the calculation for this second)
1273 - if(unlikely(rd->last_collected_value > rd->collected_value)) {
1274 - debug(D_RRD_STATS, "%s.%s: RESET or OVERFLOW. Last collected value = " COLLECTED_NUMBER_FORMAT ", current = " COLLECTED_NUMBER_FORMAT
1275 - , st->name, rd->name
1276 - , rd->last_collected_value
1277 - , rd->collected_value);
1278 -
1279 - if(!(rrddim_flag_check(rd, RRDDIM_FLAG_DONT_DETECT_RESETS_OR_OVERFLOWS)))
1280 - storage_flags = SN_EXISTS_RESET;
1281 -
1282 - rd->last_collected_value = rd->collected_value;
1283 - }
1284 -
1285 - rd->calculated_value +=
1286 - (calculated_number)(rd->collected_value - rd->last_collected_value)
1287 - * (calculated_number)rd->multiplier
1288 - / (calculated_number)rd->divisor;
1289 -
1290 - if(unlikely(st->debug))
1291 - debug(D_RRD_STATS, "%s/%s: CALC INC PRE "
1292 - CALCULATED_NUMBER_FORMAT " = ("
1293 - COLLECTED_NUMBER_FORMAT " - " COLLECTED_NUMBER_FORMAT
1294 - ")"
1295 - " * " CALCULATED_NUMBER_FORMAT
1296 - " / " CALCULATED_NUMBER_FORMAT
1297 - , st->id, rd->name
1298 - , rd->calculated_value
1299 - , rd->collected_value, rd->last_collected_value
1300 - , (calculated_number)rd->multiplier
1301 - , (calculated_number)rd->divisor
1302 - );
1303 - break;
1304 -
1305 - case RRDDIM_ALGORITHM_PCENT_OVER_DIFF_TOTAL:
1306 - if(unlikely(rd->counter <= 1)) {
1307 - rd->calculated_value = 0;
1308 - continue;
1309 - }
1310 -
1311 - // if the new is smaller than the old (an overflow, or reset), set the old equal to the new
1312 - // to reset the calculation (it will give zero as the calculation for this second)
1313 - if(unlikely(rd->last_collected_value > rd->collected_value)) {
1314 - debug(D_RRD_STATS, "%s.%s: RESET or OVERFLOW. Last collected value = " COLLECTED_NUMBER_FORMAT ", current = " COLLECTED_NUMBER_FORMAT
1315 - , st->name, rd->name
1316 - , rd->last_collected_value
1317 - , rd->collected_value);
1318 -
1319 - if(!(rrddim_flag_check(rd, RRDDIM_FLAG_DONT_DETECT_RESETS_OR_OVERFLOWS)))
1320 - storage_flags = SN_EXISTS_RESET;
1321 -
1322 - rd->last_collected_value = rd->collected_value;
1323 - }
1324 -
1325 - // the percentage of the current increment
1326 - // over the increment of all dimensions together
1327 - if(unlikely(st->collected_total == st->last_collected_total))
1328 - rd->calculated_value = 0;
1329 - else
1330 - rd->calculated_value =
1331 - (calculated_number)100
1332 - * (calculated_number)(rd->collected_value - rd->last_collected_value)
1333 - / (calculated_number)(st->collected_total - st->last_collected_total);
1334 -
1335 - if(unlikely(st->debug))
1336 - debug(D_RRD_STATS, "%s/%s: CALC PCENT-DIFF "
1337 - CALCULATED_NUMBER_FORMAT " = 100"
1338 - " * (" COLLECTED_NUMBER_FORMAT " - " COLLECTED_NUMBER_FORMAT ")"
1339 - " / (" COLLECTED_NUMBER_FORMAT " - " COLLECTED_NUMBER_FORMAT ")"
1340 - , st->id, rd->name
1341 - , rd->calculated_value
1342 - , rd->collected_value, rd->last_collected_value
1343 - , st->collected_total, st->last_collected_total
1344 - );
1345 - break;
1346 -
1347 - default:
1348 - // make the default zero, to make sure
1349 - // it gets noticed when we add new types
1350 - rd->calculated_value = 0;
1351 -
1352 - if(unlikely(st->debug))
1353 - debug(D_RRD_STATS, "%s/%s: CALC "
1354 - CALCULATED_NUMBER_FORMAT " = 0"
1355 - , st->id, rd->name
1356 - , rd->calculated_value
1357 - );
1358 - break;
1359 - }
1360 -
1361 - if(unlikely(st->debug)) debug(D_RRD_STATS, "%s/%s: PHASE2 "
1362 - " last_collected_value = " COLLECTED_NUMBER_FORMAT
1363 - " collected_value = " COLLECTED_NUMBER_FORMAT
1364 - " last_calculated_value = " CALCULATED_NUMBER_FORMAT
1365 - " calculated_value = " CALCULATED_NUMBER_FORMAT
1366 - , st->id, rd->name
1367 - , rd->last_collected_value
1368 - , rd->collected_value
1369 - , rd->last_calculated_value
1370 - , rd->calculated_value
1371 - );
1372 -
1373 - }
1374 -
1375 - // at this point we have all the calculated values ready
1376 - // it is now time to interpolate values on a second boundary
1377 -
1378 - if(unlikely(now_collect_ut < next_store_ut)) {
1379 - // this is collected in the same interpolation point
1380 - if(unlikely(st->debug)) debug(D_RRD_STATS, "%s: THIS IS IN THE SAME INTERPOLATION POINT", st->name);
1381 -#ifdef NETDATA_INTERNAL_CHECKS
1382 - info("%s is collected in the same interpolation point: short by %llu microseconds", st->name, next_store_ut - now_collect_ut);
1383 -#endif
1384 - }
1385 -
1386 - usec_t first_ut = last_stored_ut;
1387 - long long iterations = (now_collect_ut - last_stored_ut) / (update_every_ut);
1388 - if((now_collect_ut % (update_every_ut)) == 0) iterations++;
1389 -
1390 - for( ; next_store_ut <= now_collect_ut ; last_collect_ut = next_store_ut, next_store_ut += update_every_ut, iterations-- ) {
1391 -#ifdef NETDATA_INTERNAL_CHECKS
1392 - if(iterations < 0) { error("%s: iterations calculation wrapped! first_ut = %llu, last_stored_ut = %llu, next_store_ut = %llu, now_collect_ut = %llu", st->name, first_ut, last_stored_ut, next_store_ut, now_collect_ut); }
1393 -#endif
1394 -
1395 - if(unlikely(st->debug)) {
1396 - debug(D_RRD_STATS, "%s: last_stored_ut = %0.3Lf (last updated time)", st->name, (long double)last_stored_ut/1000000.0);
1397 - debug(D_RRD_STATS, "%s: next_store_ut = %0.3Lf (next interpolation point)", st->name, (long double)next_store_ut/1000000.0);
1398 - }
1399 -
1400 - st->last_updated.tv_sec = (time_t) (next_store_ut / USEC_PER_SEC);
1401 - st->last_updated.tv_usec = 0;
1402 -
1403 - for( rd = st->dimensions ; likely(rd) ; rd = rd->next ) {
1404 - calculated_number new_value;
1405 -
1406 - switch(rd->algorithm) {
1407 - case RRDDIM_ALGORITHM_INCREMENTAL:
1408 - new_value = (calculated_number)
1409 - ( rd->calculated_value
1410 - * (calculated_number)(next_store_ut - last_collect_ut)
1411 - / (calculated_number)(now_collect_ut - last_collect_ut)
1412 - );
1413 -
1414 - if(unlikely(st->debug))
1415 - debug(D_RRD_STATS, "%s/%s: CALC2 INC "
1416 - CALCULATED_NUMBER_FORMAT " = "
1417 - CALCULATED_NUMBER_FORMAT
1418 - " * %llu"
1419 - " / %llu"
1420 - , st->id, rd->name
1421 - , new_value
1422 - , rd->calculated_value
1423 - , (next_store_ut - last_stored_ut)
1424 - , (now_collect_ut - last_stored_ut)
1425 - );
1426 -
1427 - rd->calculated_value -= new_value;
1428 - new_value += rd->last_calculated_value;
1429 - rd->last_calculated_value = 0;
1430 - new_value /= (calculated_number)st->update_every;
1431 -
1432 - if(unlikely(next_store_ut - last_stored_ut < update_every_ut)) {
1433 - if(unlikely(st->debug))
1434 - debug(D_RRD_STATS, "%s/%s: COLLECTION POINT IS SHORT " CALCULATED_NUMBER_FORMAT " - EXTRAPOLATING",
1435 - st->id, rd->name
1436 - , (calculated_number)(next_store_ut - last_stored_ut)
1437 - );
1438 - new_value = new_value * (calculated_number)(st->update_every * 1000000) / (calculated_number)(next_store_ut - last_stored_ut);
1439 - }
1440 - break;
1441 -
1442 - case RRDDIM_ALGORITHM_ABSOLUTE:
1443 - case RRDDIM_ALGORITHM_PCENT_OVER_ROW_TOTAL:
1444 - case RRDDIM_ALGORITHM_PCENT_OVER_DIFF_TOTAL:
1445 - default:
1446 - if(iterations == 1) {
1447 - // this is the last iteration
1448 - // do not interpolate
1449 - // just show the calculated value
1450 -
1451 - new_value = rd->calculated_value;
1452 - }
1453 - else {
1454 - // we have missed an update
1455 - // interpolate in the middle values
1456 -
1457 - new_value = (calculated_number)
1458 - ( ( (rd->calculated_value - rd->last_calculated_value)
1459 - * (calculated_number)(next_store_ut - last_collect_ut)
1460 - / (calculated_number)(now_collect_ut - last_collect_ut)
1461 - )
1462 - + rd->last_calculated_value
1463 - );
1464 -
1465 - if(unlikely(st->debug))
1466 - debug(D_RRD_STATS, "%s/%s: CALC2 DEF "
1467 - CALCULATED_NUMBER_FORMAT " = ((("
1468 - "(" CALCULATED_NUMBER_FORMAT " - " CALCULATED_NUMBER_FORMAT ")"
1469 - " * %llu"
1470 - " / %llu) + " CALCULATED_NUMBER_FORMAT
1471 - , st->id, rd->name
1472 - , new_value
1473 - , rd->calculated_value, rd->last_calculated_value
1474 - , (next_store_ut - first_ut)
1475 - , (now_collect_ut - first_ut), rd->last_calculated_value
1476 - );
1477 - }
1478 - break;
1479 - }
1480 -
1481 - if(unlikely(!store_this_entry)) {
1482 - rd->values[st->current_entry] = pack_storage_number(0, SN_NOT_EXISTS);
1483 - continue;
1484 - }
1485 -
1486 - if(likely(rrddim_flag_check(rd, RRDDIM_FLAG_UPDATED) && rd->counter > 1 && iterations < st->gap_when_lost_iterations_above)) {
1487 - rd->values[st->current_entry] = pack_storage_number(new_value, storage_flags );
1488 - rd->last_stored_value = new_value;
1489 -
1490 - if(unlikely(st->debug))
1491 - debug(D_RRD_STATS, "%s/%s: STORE[%ld] "
1492 - CALCULATED_NUMBER_FORMAT " = " CALCULATED_NUMBER_FORMAT
1493 - , st->id, rd->name
1494 - , st->current_entry
1495 - , unpack_storage_number(rd->values[st->current_entry]), new_value
1496 - );
1497 - }
1498 - else {
1499 - if(unlikely(st->debug)) debug(D_RRD_STATS, "%s/%s: STORE[%ld] = NON EXISTING "
1500 - , st->id, rd->name
1501 - , st->current_entry
1502 - );
1503 - rd->values[st->current_entry] = pack_storage_number(0, SN_NOT_EXISTS);
1504 - rd->last_stored_value = NAN;
1505 - }
1506 -
1507 - stored_entries++;
1508 -
1509 - if(unlikely(st->debug)) {
1510 - calculated_number t1 = new_value * (calculated_number)rd->multiplier / (calculated_number)rd->divisor;
1511 - calculated_number t2 = unpack_storage_number(rd->values[st->current_entry]);
1512 - calculated_number accuracy = accuracy_loss(t1, t2);
1513 - debug(D_RRD_STATS, "%s/%s: UNPACK[%ld] = " CALCULATED_NUMBER_FORMAT " FLAGS=0x%08x (original = " CALCULATED_NUMBER_FORMAT ", accuracy loss = " CALCULATED_NUMBER_FORMAT "%%%s)"
1514 - , st->id, rd->name
1515 - , st->current_entry
1516 - , t2
1517 - , get_storage_number_flags(rd->values[st->current_entry])
1518 - , t1
1519 - , accuracy
1520 - , (accuracy > ACCURACY_LOSS) ? " **TOO BIG** " : ""
1521 - );
1522 -
1523 - rd->collected_volume += t1;
1524 - rd->stored_volume += t2;
1525 - accuracy = accuracy_loss(rd->collected_volume, rd->stored_volume);
1526 - debug(D_RRD_STATS, "%s/%s: VOLUME[%ld] = " CALCULATED_NUMBER_FORMAT ", calculated = " CALCULATED_NUMBER_FORMAT ", accuracy loss = " CALCULATED_NUMBER_FORMAT "%%%s"
1527 - , st->id, rd->name
1528 - , st->current_entry
1529 - , rd->stored_volume
1530 - , rd->collected_volume
1531 - , accuracy
1532 - , (accuracy > ACCURACY_LOSS) ? " **TOO BIG** " : ""
1533 - );
1534 -
1535 - }
1536 - }
1537 - // reset the storage flags for the next point, if any;
1538 - storage_flags = SN_EXISTS;
1539 -
1540 - st->counter++;
1541 - st->current_entry = ((st->current_entry + 1) >= st->entries) ? 0 : st->current_entry + 1;
1542 - last_stored_ut = next_store_ut;
1543 - }
1544 -
1545 - st->last_collected_total = st->collected_total;
1546 -
1547 - for( rd = st->dimensions; rd ; rd = rd->next ) {
1548 - if(unlikely(!rrddim_flag_check(rd, RRDDIM_FLAG_UPDATED)))
1549 - continue;
1550 -
1551 - if(unlikely(st->debug)) debug(D_RRD_STATS, "%s/%s: setting last_collected_value (old: " COLLECTED_NUMBER_FORMAT ") to last_collected_value (new: " COLLECTED_NUMBER_FORMAT ")", st->id, rd->name, rd->last_collected_value, rd->collected_value);
1552 - rd->last_collected_value = rd->collected_value;
1553 -
1554 - switch(rd->algorithm) {
1555 - case RRDDIM_ALGORITHM_INCREMENTAL:
1556 - if(unlikely(!first_entry)) {
1557 - if(unlikely(st->debug)) debug(D_RRD_STATS, "%s/%s: setting last_calculated_value (old: " CALCULATED_NUMBER_FORMAT ") to last_calculated_value (new: " CALCULATED_NUMBER_FORMAT ")", st->id, rd->name, rd->last_calculated_value + rd->calculated_value, rd->calculated_value);
1558 - rd->last_calculated_value += rd->calculated_value;
1559 - }
1560 - else {
1561 - if(unlikely(st->debug)) debug(D_RRD_STATS, "%s: THIS IS THE FIRST POINT", st->name);
1562 - }
1563 - break;
1564 -
1565 - case RRDDIM_ALGORITHM_ABSOLUTE:
1566 - case RRDDIM_ALGORITHM_PCENT_OVER_ROW_TOTAL:
1567 - case RRDDIM_ALGORITHM_PCENT_OVER_DIFF_TOTAL:
1568 - if(unlikely(st->debug)) debug(D_RRD_STATS, "%s/%s: setting last_calculated_value (old: " CALCULATED_NUMBER_FORMAT ") to last_calculated_value (new: " CALCULATED_NUMBER_FORMAT ")", st->id, rd->name, rd->last_calculated_value, rd->calculated_value);
1569 - rd->last_calculated_value = rd->calculated_value;
1570 - break;
1571 - }
1572 -
1573 - rd->calculated_value = 0;
1574 - rd->collected_value = 0;
1575 - rrddim_flag_clear(rd, RRDDIM_FLAG_UPDATED);
1576 -
1577 - if(unlikely(st->debug)) debug(D_RRD_STATS, "%s/%s: END "
1578 - " last_collected_value = " COLLECTED_NUMBER_FORMAT
1579 - " collected_value = " COLLECTED_NUMBER_FORMAT
1580 - " last_calculated_value = " CALCULATED_NUMBER_FORMAT
1581 - " calculated_value = " CALCULATED_NUMBER_FORMAT
1582 - , st->id, rd->name
1583 - , rd->last_collected_value
1584 - , rd->collected_value
1585 - , rd->last_calculated_value
1586 - , rd->calculated_value
1587 - );
1588 - }
1589 -
1590 - // ALL DONE ABOUT THE DATA UPDATE
1591 - // --------------------------------------------------------------------
1592 -
1593 -/*
1594 - // find if there are any obsolete dimensions (not updated recently)
1595 - if(unlikely(rrd_delete_unupdated_dimensions)) {
1596 -
1597 - for( rd = st->dimensions; likely(rd) ; rd = rd->next )
1598 - if((rd->last_collected_time.tv_sec + (rrd_delete_unupdated_dimensions * st->update_every)) < st->last_collected_time.tv_sec)
1599 - break;
1600 -
1601 - if(unlikely(rd)) {
1602 - RRDDIM *last;
1603 - // there is dimension to free
1604 - // upgrade our read lock to a write lock
1605 - pthread_rwlock_unlock(&st->rwlock);
1606 - pthread_rwlock_wrlock(&st->rwlock);
1607 -
1608 - for( rd = st->dimensions, last = NULL ; likely(rd) ; ) {
1609 - // remove it only it is not updated in rrd_delete_unupdated_dimensions seconds
1610 -
1611 - if(unlikely((rd->last_collected_time.tv_sec + (rrd_delete_unupdated_dimensions * st->update_every)) < st->last_collected_time.tv_sec)) {
1612 - info("Removing obsolete dimension '%s' (%s) of '%s' (%s).", rd->name, rd->id, st->name, st->id);
1613 -
1614 - if(unlikely(!last)) {
1615 - st->dimensions = rd->next;
1616 - rd->next = NULL;
1617 - rrddim_free(st, rd);
1618 - rd = st->dimensions;
1619 - continue;
1620 - }
1621 - else {
1622 - last->next = rd->next;
1623 - rd->next = NULL;
1624 - rrddim_free(st, rd);
1625 - rd = last->next;
1626 - continue;
1627 - }
1628 - }
1629 -
1630 - last = rd;
1631 - rd = rd->next;
1632 - }
1633 -
1634 - if(unlikely(!st->dimensions)) {
1635 - info("Disabling chart %s (%s) since it does not have any dimensions", st->name, st->id);
1636 - st->enabled = 0;
1637 - }
1638 - }
1639 - }
1640 -*/
1641 -
1642 - pthread_rwlock_unlock(&st->rwlock);
1643 -
1644 - if(unlikely(pthread_setcancelstate(pthreadoldcancelstate, NULL) != 0))
1645 - error("Cannot set pthread cancel state to RESTORE (%d).", pthreadoldcancelstate);
1646 -
1647 - return(st->usec_since_last_update);
1648 -}
src/rrd.h
+52 -23
@@ -56,20 +56,20 @@ extern int rrd_memory_mode_id(const char *name);
56 // ----------------------------------------------------------------------------
57 // algorithms types
58
59 -typedef enum rrddim_algorithm {
60 - RRDDIM_ALGORITHM_ABSOLUTE = 0,
61 - RRDDIM_ALGORITHM_INCREMENTAL = 1,
62 - RRDDIM_ALGORITHM_PCENT_OVER_DIFF_TOTAL = 2,
63 - RRDDIM_ALGORITHM_PCENT_OVER_ROW_TOTAL = 3
64 -} RRDDIM_ALGORITHM;
59 +typedef enum rrd_algorithm {
60 + RRD_ALGORITHM_ABSOLUTE = 0,
61 + RRD_ALGORITHM_INCREMENTAL = 1,
62 + RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL = 2,
63 + RRD_ALGORITHM_PCENT_OVER_ROW_TOTAL = 3
64 +} RRD_ALGORITHM;
65
66 -#define RRDDIM_ALGORITHM_ABSOLUTE_NAME "absolute"
67 -#define RRDDIM_ALGORITHM_INCREMENTAL_NAME "incremental"
68 -#define RRDDIM_ALGORITHM_PCENT_OVER_DIFF_TOTAL_NAME "percentage-of-incremental-row"
69 -#define RRDDIM_ALGORITHM_PCENT_OVER_ROW_TOTAL_NAME "percentage-of-absolute-row"
66 +#define RRD_ALGORITHM_ABSOLUTE_NAME "absolute"
67 +#define RRD_ALGORITHM_INCREMENTAL_NAME "incremental"
68 +#define RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL_NAME "percentage-of-incremental-row"
69 +#define RRD_ALGORITHM_PCENT_OVER_ROW_TOTAL_NAME "percentage-of-absolute-row"
70
71 -extern RRDDIM_ALGORITHM rrddim_algorithm_id(const char *name);
72 -extern const char *rrddim_algorithm_name(RRDDIM_ALGORITHM algorithm);
71 +extern RRD_ALGORITHM rrd_algorithm_id(const char *name);
72 +extern const char *rrd_algorithm_name(RRD_ALGORITHM algorithm);
73
74 // ----------------------------------------------------------------------------
75 // flags
@@ -120,7 +120,7 @@ struct rrddim {
120 // (the user overwrites the name of the charts)
121 // DO NOT FREE THIS - IT IS ALLOCATED IN CONFIG
122
123 - RRDDIM_ALGORITHM algorithm; // the algorithm that is applied to add new collected values
123 + RRD_ALGORITHM algorithm; // the algorithm that is applied to add new collected values
124 RRD_MEMORY_MODE memory_mode; // the memory mode for this dimension
125
126 collected_number multiplier; // the multiplier of the collected values
@@ -312,8 +312,13 @@ struct rrdhost {
312 // RRDCALCs may be linked to charts at any point
313 // (charts may or may not exist when these are loaded)
314 RRDCALC *alarms;
315 +
316 + // alarms historical events
317 ALARM_LOG health_log;
318
319 + // templates of alarms
320 + // these are used to create alarms when charts
321 + // are created or renamed, that match them
322 RRDCALCTEMPLATE *templates;
323
324 uint32_t flags;
@@ -342,13 +347,8 @@ extern void rrdhost_unlock(RRDHOST *host);
347 // ----------------------------------------------------------------------------
348 // RRD SET functions
349
345 -extern char *rrdset_strncpyz_name(char *to, const char *from, size_t length);
350 extern void rrdset_set_name(RRDSET *st, const char *name);
351
348 -extern char *rrdset_cache_dir(const char *id);
349 -
350 -extern void rrdset_reset(RRDSET *st);
351 -
352 extern RRDSET *rrdset_create(const char *type
353 , const char *id
354 , const char *name
@@ -360,8 +360,11 @@ extern RRDSET *rrdset_create(const char *type
360 , int update_every
361 , int chart_type);
362
363 -extern void rrdset_free_all(void);
364 -extern void rrdset_save_all(void);
363 +extern void rrdhost_free_all(void);
364 +extern void rrdhost_save_all(void);
365 +
366 +extern void rrdhost_free(RRDHOST *host);
367 +extern void rrdhost_save(RRDHOST *host);
368
369 extern RRDSET *rrdset_find(RRDHOST *host, const char *id);
370 #define rrdset_find_localhost(id) rrdset_find(&localhost, id)
@@ -414,11 +417,9 @@ extern usec_t rrdset_done(RRDSET *st);
417 // ----------------------------------------------------------------------------
418 // RRD DIMENSION functions
419
417 -extern RRDDIM *rrddim_add(RRDSET *st, const char *id, const char *name, collected_number multiplier, collected_number divisor, RRDDIM_ALGORITHM algorithm);
420 +extern RRDDIM *rrddim_add(RRDSET *st, const char *id, const char *name, collected_number multiplier, collected_number divisor, RRD_ALGORITHM algorithm);
421
422 extern void rrddim_set_name(RRDSET *st, RRDDIM *rd, const char *name);
420 -extern void rrddim_free(RRDSET *st, RRDDIM *rd);
421 -
423 extern RRDDIM *rrddim_find(RRDSET *st, const char *id);
424
425 extern int rrddim_hide(RRDSET *st, const char *id);
@@ -427,4 +428,32 @@ extern int rrddim_unhide(RRDSET *st, const char *id);
428 extern collected_number rrddim_set_by_pointer(RRDSET *st, RRDDIM *rd, collected_number value);
429 extern collected_number rrddim_set(RRDSET *st, const char *id, collected_number value);
430
431 +
432 +// ----------------------------------------------------------------------------
433 +// RRD internal functions
434 +
435 +#ifdef NETDATA_RRD_INTERNALS
436 +
437 +extern char *rrdset_strncpyz_name(char *to, const char *from, size_t length);
438 +extern char *rrdset_cache_dir(const char *id);
439 +
440 +extern void rrdset_reset(RRDSET *st);
441 +
442 +extern void rrddim_free(RRDSET *st, RRDDIM *rd);
443 +
444 +extern int rrddim_compare(void* a, void* b);
445 +extern int rrdset_compare(void* a, void* b);
446 +extern int rrdset_compare_name(void* a, void* b);
447 +extern int rrdfamily_compare(void *a, void *b);
448 +
449 +extern RRDFAMILY *rrdfamily_create(RRDHOST *host, const char *id);
450 +extern void rrdfamily_free(RRDHOST *host, RRDFAMILY *rc);
451 +
452 +#define rrdset_index_add(host, st) (RRDSET *)avl_insert_lock(&((host)->rrdset_root_index), (avl *)(st))
453 +#define rrdset_index_del(host, st) (RRDSET *)avl_remove_lock(&((host)->rrdset_root_index), (avl *)(st))
454 +extern RRDSET *rrdset_index_del_name(RRDHOST *host, RRDSET *st);
455 +
456 +#endif /* NETDATA_RRD_INTERNALS */
457 +
458 +
459 #endif /* NETDATA_RRD_H */
src/rrd2json.c
+3 -3
@@ -176,8 +176,8 @@ void rrd_stats_api_v1_charts_allmetrics_prometheus(BUFFER *wb)
176 // buffer_sprintf(wb, "# HELP %s.%s %s\n", st->id, rd->id, st->units);
177
178 switch(rd->algorithm) {
179 - case RRDDIM_ALGORITHM_INCREMENTAL:
180 - case RRDDIM_ALGORITHM_PCENT_OVER_DIFF_TOTAL:
179 + case RRD_ALGORITHM_INCREMENTAL:
180 + case RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL:
181 buffer_sprintf(wb, "# TYPE %s_%s counter\n", chart, dimension);
182 break;
183
@@ -379,7 +379,7 @@ unsigned long rrd_stats_one_json(RRDSET *st, char *options, BUFFER *wb)
379 , rd->name
380 , rd->entries
381 , rrddim_flag_check(rd, RRDDIM_FLAG_HIDDEN)?1:0
382 - , rrddim_algorithm_name(rd->algorithm)
382 + , rrd_algorithm_name(rd->algorithm)
383 , rd->multiplier
384 , rd->divisor
385 , rd->last_collected_time.tv_sec
src/rrddim.c new
+307
@@ -0,0 +1,307 @@
1 +#define NETDATA_RRD_INTERNALS 1
2 +#include "common.h"
3 +
4 +// ----------------------------------------------------------------------------
5 +// RRDDIM index
6 +
7 +int rrddim_compare(void* a, void* b) {
8 + if(((RRDDIM *)a)->hash < ((RRDDIM *)b)->hash) return -1;
9 + else if(((RRDDIM *)a)->hash > ((RRDDIM *)b)->hash) return 1;
10 + else return strcmp(((RRDDIM *)a)->id, ((RRDDIM *)b)->id);
11 +}
12 +
13 +#define rrddim_index_add(st, rd) (RRDDIM *)avl_insert_lock(&((st)->dimensions_index), (avl *)(rd))
14 +#define rrddim_index_del(st,rd ) (RRDDIM *)avl_remove_lock(&((st)->dimensions_index), (avl *)(rd))
15 +
16 +static inline RRDDIM *rrddim_index_find(RRDSET *st, const char *id, uint32_t hash) {
17 + RRDDIM tmp = {
18 + .id = id,
19 + .hash = (hash)?hash:simple_hash(id)
20 + };
21 + return (RRDDIM *)avl_search_lock(&(st->dimensions_index), (avl *) &tmp);
22 +}
23 +
24 +
25 +// ----------------------------------------------------------------------------
26 +// RRDDIM - find a dimension
27 +
28 +inline RRDDIM *rrddim_find(RRDSET *st, const char *id) {
29 + debug(D_RRD_CALLS, "rrddim_find() for chart %s, dimension %s", st->name, id);
30 +
31 + return rrddim_index_find(st, id, 0);
32 +}
33 +
34 +
35 +// ----------------------------------------------------------------------------
36 +// RRDDIM rename a dimension
37 +
38 +inline void rrddim_set_name(RRDSET *st, RRDDIM *rd, const char *name) {
39 + if(unlikely(!strcmp(rd->name, name)))
40 + return;
41 +
42 + debug(D_RRD_CALLS, "rrddim_set_name() from %s.%s to %s.%s", st->name, rd->name, st->name, name);
43 +
44 + char varname[CONFIG_MAX_NAME + 1];
45 + snprintfz(varname, CONFIG_MAX_NAME, "dim %s name", rd->id);
46 + rd->name = config_set_default(st->id, varname, name);
47 + rd->hash_name = simple_hash(rd->name);
48 +
49 + rrddimvar_rename_all(rd);
50 +}
51 +
52 +
53 +// ----------------------------------------------------------------------------
54 +// RRDDIM create a dimension
55 +
56 +RRDDIM *rrddim_add(RRDSET *st, const char *id, const char *name, collected_number multiplier, collected_number divisor, RRD_ALGORITHM algorithm) {
57 + RRDDIM *rd = rrddim_find(st, id);
58 + if(rd) {
59 + debug(D_RRD_CALLS, "Cannot create rrd dimension '%s/%s', it already exists.", st->id, name?name:"<NONAME>");
60 + return rd;
61 + }
62 +
63 + char filename[FILENAME_MAX + 1];
64 + char fullfilename[FILENAME_MAX + 1];
65 +
66 + char varname[CONFIG_MAX_NAME + 1];
67 + unsigned long size = sizeof(RRDDIM) + (st->entries * sizeof(storage_number));
68 +
69 + debug(D_RRD_CALLS, "Adding dimension '%s/%s'.", st->id, id);
70 +
71 + rrdset_strncpyz_name(filename, id, FILENAME_MAX);
72 + snprintfz(fullfilename, FILENAME_MAX, "%s/%s.db", st->cache_dir, filename);
73 +
74 + if(rrd_memory_mode != RRD_MEMORY_MODE_RAM) {
75 + rd = (RRDDIM *)mymmap(fullfilename, size, ((rrd_memory_mode == RRD_MEMORY_MODE_MAP) ? MAP_SHARED : MAP_PRIVATE), 1);
76 + if(likely(rd)) {
77 + // we have a file mapped for rd
78 +
79 + rd->id = NULL;
80 + rd->name = NULL;
81 + rd->cache_filename = NULL;
82 + rd->memory_mode = rrd_memory_mode;
83 + rd->flags = 0x00000000;
84 + rd->variables = NULL;
85 + rd->next = NULL;
86 + rd->rrdset = NULL;
87 + memset(&rd->avl, 0, sizeof(avl));
88 +
89 + struct timeval now;
90 + now_realtime_timeval(&now);
91 +
92 + if(strcmp(rd->magic, RRDDIMENSION_MAGIC) != 0) {
93 + errno = 0;
94 + info("Initializing file %s.", fullfilename);
95 + memset(rd, 0, size);
96 + }
97 + else if(rd->memsize != size) {
98 + errno = 0;
99 + error("File %s does not have the desired size. Clearing it.", fullfilename);
100 + memset(rd, 0, size);
101 + }
102 + else if(rd->multiplier != multiplier) {
103 + errno = 0;
104 + error("File %s does not have the same multiplier. Clearing it.", fullfilename);
105 + memset(rd, 0, size);
106 + }
107 + else if(rd->divisor != divisor) {
108 + errno = 0;
109 + error("File %s does not have the same divisor. Clearing it.", fullfilename);
110 + memset(rd, 0, size);
111 + }
112 + else if(rd->update_every != st->update_every) {
113 + errno = 0;
114 + error("File %s does not have the same refresh frequency. Clearing it.", fullfilename);
115 + memset(rd, 0, size);
116 + }
117 + else if(dt_usec(&now, &rd->last_collected_time) > (rd->entries * rd->update_every * USEC_PER_SEC)) {
118 + errno = 0;
119 + error("File %s is too old. Clearing it.", fullfilename);
120 + memset(rd, 0, size);
121 + }
122 +
123 + if(rd->algorithm && rd->algorithm != algorithm)
124 + error("File %s does not have the expected algorithm (expected %u '%s', found %u '%s'). Previous values may be wrong."
125 + , fullfilename, algorithm, rrd_algorithm_name(algorithm), rd->algorithm,
126 + rrd_algorithm_name(rd->algorithm));
127 + }
128 + }
129 +
130 + if(unlikely(!rd)) {
131 + // if we didn't manage to get a mmap'd dimension, just create one
132 + rd = callocz(1, size);
133 + rd->memory_mode = RRD_MEMORY_MODE_RAM;
134 + }
135 +
136 + rd->memsize = size;
137 +
138 + strcpy(rd->magic, RRDDIMENSION_MAGIC);
139 +
140 + rd->id = strdupz(id);
141 + rd->hash = simple_hash(rd->id);
142 +
143 + rd->cache_filename = strdupz(fullfilename);
144 +
145 + snprintfz(varname, CONFIG_MAX_NAME, "dim %s name", rd->id);
146 + rd->name = config_get(st->id, varname, (name && *name)?name:rd->id);
147 + rd->hash_name = simple_hash(rd->name);
148 +
149 + snprintfz(varname, CONFIG_MAX_NAME, "dim %s algorithm", rd->id);
150 + rd->algorithm = rrd_algorithm_id(config_get(st->id, varname, rrd_algorithm_name(algorithm)));
151 +
152 + snprintfz(varname, CONFIG_MAX_NAME, "dim %s multiplier", rd->id);
153 + rd->multiplier = config_get_number(st->id, varname, multiplier);
154 +
155 + snprintfz(varname, CONFIG_MAX_NAME, "dim %s divisor", rd->id);
156 + rd->divisor = config_get_number(st->id, varname, divisor);
157 + if(!rd->divisor) rd->divisor = 1;
158 +
159 + rd->entries = st->entries;
160 + rd->update_every = st->update_every;
161 +
162 + // prevent incremental calculation spikes
163 + rd->counter = 0;
164 + rrddim_flag_clear(rd, RRDDIM_FLAG_UPDATED);
165 + rd->calculated_value = 0;
166 + rd->last_calculated_value = 0;
167 + rd->collected_value = 0;
168 + rd->last_collected_value = 0;
169 + rd->collected_volume = 0;
170 + rd->stored_volume = 0;
171 + rd->last_stored_value = 0;
172 + rd->values[st->current_entry] = pack_storage_number(0, SN_NOT_EXISTS);
173 + rd->last_collected_time.tv_sec = 0;
174 + rd->last_collected_time.tv_usec = 0;
175 + rd->rrdset = st;
176 +
177 + // append this dimension
178 + pthread_rwlock_wrlock(&st->rwlock);
179 + if(!st->dimensions)
180 + st->dimensions = rd;
181 + else {
182 + RRDDIM *td = st->dimensions;
183 + for(; td->next; td = td->next) ;
184 + td->next = rd;
185 + }
186 +
187 + if(health_enabled) {
188 + rrddimvar_create(rd, RRDVAR_TYPE_CALCULATED, NULL, NULL, &rd->last_stored_value, 0);
189 + rrddimvar_create(rd, RRDVAR_TYPE_COLLECTED, NULL, "_raw", &rd->last_collected_value, 0);
190 + rrddimvar_create(rd, RRDVAR_TYPE_TIME_T, NULL, "_last_collected_t", &rd->last_collected_time.tv_sec, 0);
191 + }
192 +
193 + pthread_rwlock_unlock(&st->rwlock);
194 +
195 + if(unlikely(rrddim_index_add(st, rd) != rd))
196 + error("RRDDIM: INTERNAL ERROR: attempt to index duplicate dimension '%s' on chart '%s'", rd->id, st->id);
197 +
198 + return(rd);
199 +}
200 +
201 +
202 +// ----------------------------------------------------------------------------
203 +// RRDDIM remove / free a dimension
204 +
205 +void rrddim_free(RRDSET *st, RRDDIM *rd)
206 +{
207 + debug(D_RRD_CALLS, "rrddim_free() %s.%s", st->name, rd->name);
208 +
209 + if(rd == st->dimensions)
210 + st->dimensions = rd->next;
211 + else {
212 + RRDDIM *i;
213 + for (i = st->dimensions; i && i->next != rd; i = i->next) ;
214 +
215 + if (i && i->next == rd)
216 + i->next = rd->next;
217 + else
218 + error("Request to free dimension '%s.%s' but it is not linked.", st->id, rd->name);
219 + }
220 + rd->next = NULL;
221 +
222 + while(rd->variables)
223 + rrddimvar_free(rd->variables);
224 +
225 + if(unlikely(rrddim_index_del(st, rd) != rd))
226 + error("RRDDIM: INTERNAL ERROR: attempt to remove from index dimension '%s' on chart '%s', removed a different dimension.", rd->id, st->id);
227 +
228 + // free(rd->annotations);
229 +
230 + switch(rd->memory_mode) {
231 + case RRD_MEMORY_MODE_SAVE:
232 + debug(D_RRD_CALLS, "Saving dimension '%s' to '%s'.", rd->name, rd->cache_filename);
233 + savememory(rd->cache_filename, rd, rd->memsize);
234 + // continue to map mode - no break;
235 +
236 + case RRD_MEMORY_MODE_MAP:
237 + debug(D_RRD_CALLS, "Unmapping dimension '%s'.", rd->name);
238 + freez((void *)rd->id);
239 + freez(rd->cache_filename);
240 + munmap(rd, rd->memsize);
241 + break;
242 +
243 + case RRD_MEMORY_MODE_RAM:
244 + debug(D_RRD_CALLS, "Removing dimension '%s'.", rd->name);
245 + freez((void *)rd->id);
246 + freez(rd->cache_filename);
247 + freez(rd);
248 + break;
249 + }
250 +}
251 +
252 +
253 +// ----------------------------------------------------------------------------
254 +// RRDDIM - set dimension options
255 +
256 +int rrddim_hide(RRDSET *st, const char *id) {
257 + debug(D_RRD_CALLS, "rrddim_hide() for chart %s, dimension %s", st->name, id);
258 +
259 + RRDDIM *rd = rrddim_find(st, id);
260 + if(unlikely(!rd)) {
261 + error("Cannot find dimension with id '%s' on stats '%s' (%s).", id, st->name, st->id);
262 + return 1;
263 + }
264 +
265 + rrddim_flag_set(rd, RRDDIM_FLAG_HIDDEN);
266 + return 0;
267 +}
268 +
269 +int rrddim_unhide(RRDSET *st, const char *id) {
270 + debug(D_RRD_CALLS, "rrddim_unhide() for chart %s, dimension %s", st->name, id);
271 +
272 + RRDDIM *rd = rrddim_find(st, id);
273 + if(unlikely(!rd)) {
274 + error("Cannot find dimension with id '%s' on stats '%s' (%s).", id, st->name, st->id);
275 + return 1;
276 + }
277 +
278 + rrddim_flag_clear(rd, RRDDIM_FLAG_HIDDEN);
279 + return 0;
280 +}
281 +
282 +
283 +// ----------------------------------------------------------------------------
284 +// RRDDIM - collect values for a dimension
285 +
286 +inline collected_number rrddim_set_by_pointer(RRDSET *st, RRDDIM *rd, collected_number value) {
287 + debug(D_RRD_CALLS, "rrddim_set_by_pointer() for chart %s, dimension %s, value " COLLECTED_NUMBER_FORMAT, st->name, rd->name, value);
288 +
289 + now_realtime_timeval(&rd->last_collected_time);
290 + rd->collected_value = value;
291 + rrddim_flag_set(rd, RRDDIM_FLAG_UPDATED);
292 + rd->counter++;
293 +
294 + // fprintf(stderr, "%s.%s %llu " COLLECTED_NUMBER_FORMAT " dt %0.6f" " rate " CALCULATED_NUMBER_FORMAT "\n", st->name, rd->name, st->usec_since_last_update, value, (float)((double)st->usec_since_last_update / (double)1000000), (calculated_number)((value - rd->last_collected_value) * (calculated_number)rd->multiplier / (calculated_number)rd->divisor * 1000000.0 / (calculated_number)st->usec_since_last_update));
295 +
296 + return rd->last_collected_value;
297 +}
298 +
299 +collected_number rrddim_set(RRDSET *st, const char *id, collected_number value) {
300 + RRDDIM *rd = rrddim_find(st, id);
301 + if(unlikely(!rd)) {
302 + error("Cannot find dimension with id '%s' on stats '%s' (%s).", id, st->name, st->id);
303 + return 0;
304 + }
305 +
306 + return rrddim_set_by_pointer(st, rd, value);
307 +}
src/rrdfamily.c new
+58
@@ -0,0 +1,58 @@
1 +#define NETDATA_RRD_INTERNALS 1
2 +#include "common.h"
3 +
4 +// ----------------------------------------------------------------------------
5 +// RRDFAMILY index
6 +
7 +int rrdfamily_compare(void *a, void *b) {
8 + if(((RRDFAMILY *)a)->hash_family < ((RRDFAMILY *)b)->hash_family) return -1;
9 + else if(((RRDFAMILY *)a)->hash_family > ((RRDFAMILY *)b)->hash_family) return 1;
10 + else return strcmp(((RRDFAMILY *)a)->family, ((RRDFAMILY *)b)->family);
11 +}
12 +
13 +#define rrdfamily_index_add(host, rc) (RRDFAMILY *)avl_insert_lock(&((host)->rrdfamily_root_index), (avl *)(rc))
14 +#define rrdfamily_index_del(host, rc) (RRDFAMILY *)avl_remove_lock(&((host)->rrdfamily_root_index), (avl *)(rc))
15 +
16 +static RRDFAMILY *rrdfamily_index_find(RRDHOST *host, const char *id, uint32_t hash) {
17 + RRDFAMILY tmp;
18 + tmp.family = id;
19 + tmp.hash_family = (hash)?hash:simple_hash(tmp.family);
20 +
21 + return (RRDFAMILY *)avl_search_lock(&(host->rrdfamily_root_index), (avl *) &tmp);
22 +}
23 +
24 +RRDFAMILY *rrdfamily_create(RRDHOST *host, const char *id) {
25 + RRDFAMILY *rc = rrdfamily_index_find(host, id, 0);
26 + if(!rc) {
27 + rc = callocz(1, sizeof(RRDFAMILY));
28 +
29 + rc->family = strdupz(id);
30 + rc->hash_family = simple_hash(rc->family);
31 +
32 + // initialize the variables index
33 + avl_init_lock(&rc->variables_root_index, rrdvar_compare);
34 +
35 + RRDFAMILY *ret = rrdfamily_index_add(host, rc);
36 + if(ret != rc)
37 + fatal("RRDFAMILY: INTERNAL ERROR: Expected to INSERT RRDFAMILY '%s' into index, but inserted '%s'.", rc->family, (ret)?ret->family:"NONE");
38 + }
39 +
40 + rc->use_count++;
41 + return rc;
42 +}
43 +
44 +void rrdfamily_free(RRDHOST *host, RRDFAMILY *rc) {
45 + rc->use_count--;
46 + if(!rc->use_count) {
47 + RRDFAMILY *ret = rrdfamily_index_del(host, rc);
48 + if(ret != rc)
49 + fatal("RRDFAMILY: INTERNAL ERROR: Expected to DELETE RRDFAMILY '%s' from index, but deleted '%s'.", rc->family, (ret)?ret->family:"NONE");
50 +
51 + if(rc->variables_root_index.avl_tree.root != NULL)
52 + fatal("RRDFAMILY: INTERNAL ERROR: Variables index of RRDFAMILY '%s' that is freed, is not empty.", rc->family);
53 +
54 + freez((void *)rc->family);
55 + freez(rc);
56 + }
57 +}
58 +
src/rrdhost.c new
+167
@@ -0,0 +1,167 @@
1 +#define NETDATA_RRD_INTERNALS 1
2 +#include "common.h"
3 +
4 +// ----------------------------------------------------------------------------
5 +// RRDHOST
6 +
7 +RRDHOST localhost = {
8 + .hostname = "localhost",
9 + .machine_guid = "",
10 + .rrdset_root = NULL,
11 + .rrdset_root_rwlock = PTHREAD_RWLOCK_INITIALIZER,
12 + .rrdset_root_index = {
13 + { NULL, rrdset_compare },
14 + AVL_LOCK_INITIALIZER
15 + },
16 + .rrdset_root_index_name = {
17 + { NULL, rrdset_compare_name },
18 + AVL_LOCK_INITIALIZER
19 + },
20 + .rrdfamily_root_index = {
21 + { NULL, rrdfamily_compare },
22 + AVL_LOCK_INITIALIZER
23 + },
24 + .variables_root_index = {
25 + { NULL, rrdvar_compare },
26 + AVL_LOCK_INITIALIZER
27 + },
28 + .health_log = {
29 + .next_log_id = 1,
30 + .next_alarm_id = 1,
31 + .count = 0,
32 + .max = 1000,
33 + .alarms = NULL,
34 + .alarm_log_rwlock = PTHREAD_RWLOCK_INITIALIZER
35 + },
36 + .next = NULL
37 +};
38 +
39 +void rrdhost_init(char *hostname) {
40 + localhost.hostname = hostname;
41 + localhost.health_log.next_log_id =
42 + localhost.health_log.next_alarm_id = (uint32_t)now_realtime_sec();
43 +}
44 +
45 +void rrdhost_rwlock(RRDHOST *host) {
46 + pthread_rwlock_wrlock(&host->rrdset_root_rwlock);
47 +}
48 +
49 +void rrdhost_rdlock(RRDHOST *host) {
50 + pthread_rwlock_rdlock(&host->rrdset_root_rwlock);
51 +}
52 +
53 +void rrdhost_unlock(RRDHOST *host) {
54 + pthread_rwlock_unlock(&host->rrdset_root_rwlock);
55 +}
56 +
57 +void rrdhost_check_rdlock_int(RRDHOST *host, const char *file, const char *function, const unsigned long line) {
58 + int ret = pthread_rwlock_trywrlock(&host->rrdset_root_rwlock);
59 +
60 + if(ret == 0)
61 + fatal("RRDHOST '%s' should be read-locked, but it is not, at function %s() at line %lu of file '%s'", host->hostname, function, line, file);
62 +}
63 +
64 +void rrdhost_check_wrlock_int(RRDHOST *host, const char *file, const char *function, const unsigned long line) {
65 + int ret = pthread_rwlock_tryrdlock(&host->rrdset_root_rwlock);
66 +
67 + if(ret == 0)
68 + fatal("RRDHOST '%s' should be write-locked, but it is not, at function %s() at line %lu of file '%s'", host->hostname, function, line, file);
69 +}
70 +
71 +void rrdhost_free(RRDHOST *host) {
72 + info("Freeing all memory...");
73 +
74 + rrdhost_rwlock(host);
75 +
76 + RRDSET *st;
77 + for(st = host->rrdset_root; st ;) {
78 + RRDSET *next = st->next;
79 +
80 + pthread_rwlock_wrlock(&st->rwlock);
81 +
82 + while(st->variables)
83 + rrdsetvar_free(st->variables);
84 +
85 + while(st->alarms)
86 + rrdsetcalc_unlink(st->alarms);
87 +
88 + while(st->dimensions)
89 + rrddim_free(st, st->dimensions);
90 +
91 + if(unlikely(rrdset_index_del(host, st) != st))
92 + error("RRDSET: INTERNAL ERROR: attempt to remove from index chart '%s', removed a different chart.", st->id);
93 +
94 + rrdset_index_del_name(host, st);
95 +
96 + st->rrdfamily->use_count--;
97 + if(!st->rrdfamily->use_count)
98 + rrdfamily_free(host, st->rrdfamily);
99 +
100 + pthread_rwlock_unlock(&st->rwlock);
101 +
102 + if(st->mapped == RRD_MEMORY_MODE_SAVE || st->mapped == RRD_MEMORY_MODE_MAP) {
103 + debug(D_RRD_CALLS, "Unmapping stats '%s'.", st->name);
104 + munmap(st, st->memsize);
105 + }
106 + else
107 + freez(st);
108 +
109 + st = next;
110 + }
111 + host->rrdset_root = NULL;
112 +
113 + rrdhost_unlock(host);
114 +
115 + info("Memory cleanup completed...");
116 +}
117 +
118 +void rrdhost_save(RRDHOST *host) {
119 + info("Saving database...");
120 +
121 + RRDSET *st;
122 + RRDDIM *rd;
123 +
124 + // we get an write lock
125 + // to ensure only one thread is saving the database
126 + rrdhost_rwlock(host);
127 +
128 + for(st = host->rrdset_root; st ; st = st->next) {
129 + pthread_rwlock_rdlock(&st->rwlock);
130 +
131 + if(st->mapped == RRD_MEMORY_MODE_SAVE) {
132 + debug(D_RRD_CALLS, "Saving stats '%s' to '%s'.", st->name, st->cache_filename);
133 + savememory(st->cache_filename, st, st->memsize);
134 + }
135 +
136 + for(rd = st->dimensions; rd ; rd = rd->next) {
137 + if(likely(rd->memory_mode == RRD_MEMORY_MODE_SAVE)) {
138 + debug(D_RRD_CALLS, "Saving dimension '%s' to '%s'.", rd->name, rd->cache_filename);
139 + savememory(rd->cache_filename, rd, rd->memsize);
140 + }
141 + }
142 +
143 + pthread_rwlock_unlock(&st->rwlock);
144 + }
145 +
146 + rrdhost_unlock(host);
147 +}
148 +
149 +void rrdhost_free_all(void) {
150 + RRDHOST *host;
151 +
152 + // FIXME: lock all hosts
153 +
154 + for(host = &localhost; host ;) {
155 + RRDHOST *next = host = host->next;
156 + rrdhost_free(host);
157 + host = next;
158 + }
159 +
160 + // FIXME: unlock all hosts
161 +}
162 +
163 +void rrdhost_save_all(void) {
164 + RRDHOST *host;
165 + for(host = &localhost; host ; host = host->next)
166 + rrdhost_save(host);
167 +}
src/rrdset.c new
+1039
@@ -0,0 +1,1039 @@
1 +#define NETDATA_RRD_INTERNALS 1
2 +#include "common.h"
3 +
4 +#define RRD_DEFAULT_GAP_INTERPOLATIONS 1
5 +
6 +// ----------------------------------------------------------------------------
7 +// RRDSET index
8 +
9 +int rrdset_compare(void* a, void* b) {
10 + if(((RRDSET *)a)->hash < ((RRDSET *)b)->hash) return -1;
11 + else if(((RRDSET *)a)->hash > ((RRDSET *)b)->hash) return 1;
12 + else return strcmp(((RRDSET *)a)->id, ((RRDSET *)b)->id);
13 +}
14 +
15 +static RRDSET *rrdset_index_find(RRDHOST *host, const char *id, uint32_t hash) {
16 + RRDSET tmp;
17 + strncpyz(tmp.id, id, RRD_ID_LENGTH_MAX);
18 + tmp.hash = (hash)?hash:simple_hash(tmp.id);
19 +
20 + return (RRDSET *)avl_search_lock(&(host->rrdset_root_index), (avl *) &tmp);
21 +}
22 +
23 +// ----------------------------------------------------------------------------
24 +// RRDSET name index
25 +
26 +#define rrdset_from_avlname(avlname_ptr) ((RRDSET *)((avlname_ptr) - offsetof(RRDSET, avlname)))
27 +
28 +int rrdset_compare_name(void* a, void* b) {
29 + RRDSET *A = rrdset_from_avlname(a);
30 + RRDSET *B = rrdset_from_avlname(b);
31 +
32 + // fprintf(stderr, "COMPARING: %s with %s\n", A->name, B->name);
33 +
34 + if(A->hash_name < B->hash_name) return -1;
35 + else if(A->hash_name > B->hash_name) return 1;
36 + else return strcmp(A->name, B->name);
37 +}
38 +
39 +RRDSET *rrdset_index_add_name(RRDHOST *host, RRDSET *st) {
40 + void *result;
41 + // fprintf(stderr, "ADDING: %s (name: %s)\n", st->id, st->name);
42 + result = avl_insert_lock(&host->rrdset_root_index_name, (avl *) (&st->avlname));
43 + if(result) return rrdset_from_avlname(result);
44 + return NULL;
45 +}
46 +
47 +RRDSET *rrdset_index_del_name(RRDHOST *host, RRDSET *st) {
48 + void *result;
49 + // fprintf(stderr, "DELETING: %s (name: %s)\n", st->id, st->name);
50 + result = (RRDSET *)avl_remove_lock(&((host)->rrdset_root_index_name), (avl *)(&st->avlname));
51 + if(result) return rrdset_from_avlname(result);
52 + return NULL;
53 +}
54 +
55 +
56 +// ----------------------------------------------------------------------------
57 +// RRDSET - find charts
58 +
59 +static inline RRDSET *rrdset_index_find_name(RRDHOST *host, const char *name, uint32_t hash) {
60 + void *result = NULL;
61 + RRDSET tmp;
62 + tmp.name = name;
63 + tmp.hash_name = (hash)?hash:simple_hash(tmp.name);
64 +
65 + // fprintf(stderr, "SEARCHING: %s\n", name);
66 + result = avl_search_lock(&host->rrdset_root_index_name, (avl *) (&(tmp.avlname)));
67 + if(result) {
68 + RRDSET *st = rrdset_from_avlname(result);
69 + if(strcmp(st->magic, RRDSET_MAGIC))
70 + error("Search for RRDSET %s returned an invalid RRDSET %s (name %s)", name, st->id, st->name);
71 +
72 + // fprintf(stderr, "FOUND: %s\n", name);
73 + return rrdset_from_avlname(result);
74 + }
75 + // fprintf(stderr, "NOT FOUND: %s\n", name);
76 + return NULL;
77 +}
78 +
79 +inline RRDSET *rrdset_find(RRDHOST *host, const char *id) {
80 + debug(D_RRD_CALLS, "rrdset_find() for chart '%s' in host '%s'", id, host->hostname);
81 + RRDSET *st = rrdset_index_find(host, id, 0);
82 + return(st);
83 +}
84 +
85 +inline RRDSET *rrdset_find_bytype(RRDHOST *host, const char *type, const char *id) {
86 + debug(D_RRD_CALLS, "rrdset_find_bytype() for chart '%s.%s' in host '%s'", type, id, host->hostname);
87 +
88 + char buf[RRD_ID_LENGTH_MAX + 1];
89 + strncpyz(buf, type, RRD_ID_LENGTH_MAX - 1);
90 + strcat(buf, ".");
91 + int len = (int) strlen(buf);
92 + strncpyz(&buf[len], id, (size_t) (RRD_ID_LENGTH_MAX - len));
93 +
94 + return(rrdset_find(host, buf));
95 +}
96 +
97 +inline RRDSET *rrdset_find_byname(RRDHOST *host, const char *name) {
98 + debug(D_RRD_CALLS, "rrdset_find_byname() for chart '%s' in host '%s'", name, host->hostname);
99 + RRDSET *st = rrdset_index_find_name(host, name, 0);
100 + return(st);
101 +}
102 +
103 +
104 +// ----------------------------------------------------------------------------
105 +// RRDSET - rename charts
106 +
107 +char *rrdset_strncpyz_name(char *to, const char *from, size_t length) {
108 + char c, *p = to;
109 +
110 + while (length-- && (c = *from++)) {
111 + if(c != '.' && !isalnum(c))
112 + c = '_';
113 +
114 + *p++ = c;
115 + }
116 +
117 + *p = '\0';
118 +
119 + return to;
120 +}
121 +
122 +void rrdset_set_name(RRDSET *st, const char *name) {
123 + if(unlikely(st->name && !strcmp(st->name, name)))
124 + return;
125 +
126 + debug(D_RRD_CALLS, "rrdset_set_name() old: %s, new: %s", st->name, name);
127 +
128 + char b[CONFIG_MAX_VALUE + 1];
129 + char n[RRD_ID_LENGTH_MAX + 1];
130 +
131 + snprintfz(n, RRD_ID_LENGTH_MAX, "%s.%s", st->type, name);
132 + rrdset_strncpyz_name(b, n, CONFIG_MAX_VALUE);
133 +
134 + if(st->name) {
135 + rrdset_index_del_name(st->rrdhost, st);
136 + st->name = config_set_default(st->id, "name", b);
137 + st->hash_name = simple_hash(st->name);
138 + rrdsetvar_rename_all(st);
139 + }
140 + else {
141 + st->name = config_get(st->id, "name", b);
142 + st->hash_name = simple_hash(st->name);
143 + }
144 +
145 + pthread_rwlock_wrlock(&st->rwlock);
146 + RRDDIM *rd;
147 + for(rd = st->dimensions; rd ;rd = rd->next)
148 + rrddimvar_rename_all(rd);
149 + pthread_rwlock_unlock(&st->rwlock);
150 +
151 + if(unlikely(rrdset_index_add_name(st->rrdhost, st) != st))
152 + error("RRDSET: INTERNAL ERROR: attempted to index duplicate chart name '%s'", st->name);
153 +}
154 +
155 +
156 +// ----------------------------------------------------------------------------
157 +// RRDSET - reset a chart
158 +
159 +void rrdset_reset(RRDSET *st) {
160 + debug(D_RRD_CALLS, "rrdset_reset() %s", st->name);
161 +
162 + st->last_collected_time.tv_sec = 0;
163 + st->last_collected_time.tv_usec = 0;
164 + st->last_updated.tv_sec = 0;
165 + st->last_updated.tv_usec = 0;
166 + st->current_entry = 0;
167 + st->counter = 0;
168 + st->counter_done = 0;
169 +
170 + RRDDIM *rd;
171 + for(rd = st->dimensions; rd ; rd = rd->next) {
172 + rd->last_collected_time.tv_sec = 0;
173 + rd->last_collected_time.tv_usec = 0;
174 + rd->counter = 0;
175 + memset(rd->values, 0, rd->entries * sizeof(storage_number));
176 + }
177 +}
178 +
179 +// ----------------------------------------------------------------------------
180 +// RRDSET - helpers for rrdset_create()
181 +
182 +static inline long align_entries_to_pagesize(long entries) {
183 + if(entries < 5) entries = 5;
184 + if(entries > RRD_HISTORY_ENTRIES_MAX) entries = RRD_HISTORY_ENTRIES_MAX;
185 +
186 +#ifdef NETDATA_LOG_ALLOCATIONS
187 + long page = (size_t)sysconf(_SC_PAGESIZE);
188 +
189 + long size = sizeof(RRDDIM) + entries * sizeof(storage_number);
190 + if(size % page) {
191 + size -= (size % page);
192 + size += page;
193 +
194 + long n = (size - sizeof(RRDDIM)) / sizeof(storage_number);
195 + return n;
196 + }
197 +
198 + return entries;
199 +#else
200 + return entries;
201 +#endif
202 +}
203 +
204 +static inline void timeval_align(struct timeval *tv, int update_every) {
205 + tv->tv_sec -= tv->tv_sec % update_every;
206 + tv->tv_usec = 500000;
207 +}
208 +
209 +// ----------------------------------------------------------------------------
210 +// RRDSET - create a chart
211 +
212 +RRDSET *rrdset_create(const char *type, const char *id, const char *name, const char *family, const char *context, const char *title, const char *units, long priority, int update_every, int chart_type) {
213 + RRDHOST *host = &localhost;
214 +
215 + if(!type || !type[0]) {
216 + fatal("Cannot create rrd stats without a type.");
217 + return NULL;
218 + }
219 +
220 + if(!id || !id[0]) {
221 + fatal("Cannot create rrd stats without an id.");
222 + return NULL;
223 + }
224 +
225 + char fullid[RRD_ID_LENGTH_MAX + 1];
226 + char fullfilename[FILENAME_MAX + 1];
227 +
228 + snprintfz(fullid, RRD_ID_LENGTH_MAX, "%s.%s", type, id);
229 +
230 + RRDSET *st = rrdset_find(host, fullid);
231 + if(st) {
232 + debug(D_RRD_CALLS, "RRDSET '%s', already exists.", fullid);
233 + return st;
234 + }
235 +
236 + long rentries = config_get_number(fullid, "history", rrd_default_history_entries);
237 + long entries = align_entries_to_pagesize(rentries);
238 + if(entries != rentries) entries = config_set_number(fullid, "history", entries);
239 +
240 + int enabled = config_get_boolean(fullid, "enabled", 1);
241 + if(!enabled) entries = 5;
242 +
243 + unsigned long size = sizeof(RRDSET);
244 + char *cache_dir = rrdset_cache_dir(fullid);
245 +
246 + debug(D_RRD_CALLS, "Creating RRD_STATS for '%s.%s'.", type, id);
247 +
248 + snprintfz(fullfilename, FILENAME_MAX, "%s/main.db", cache_dir);
249 + if(rrd_memory_mode != RRD_MEMORY_MODE_RAM) st = (RRDSET *)mymmap(fullfilename, size, ((rrd_memory_mode == RRD_MEMORY_MODE_MAP)?MAP_SHARED:MAP_PRIVATE), 0);
250 + if(st) {
251 + if(strcmp(st->magic, RRDSET_MAGIC) != 0) {
252 + errno = 0;
253 + info("Initializing file %s.", fullfilename);
254 + memset(st, 0, size);
255 + }
256 + else if(strcmp(st->id, fullid) != 0) {
257 + errno = 0;
258 + error("File %s contents are not for chart %s. Clearing it.", fullfilename, fullid);
259 + // munmap(st, size);
260 + // st = NULL;
261 + memset(st, 0, size);
262 + }
263 + else if(st->memsize != size || st->entries != entries) {
264 + errno = 0;
265 + error("File %s does not have the desired size. Clearing it.", fullfilename);
266 + memset(st, 0, size);
267 + }
268 + else if(st->update_every != update_every) {
269 + errno = 0;
270 + error("File %s does not have the desired update frequency. Clearing it.", fullfilename);
271 + memset(st, 0, size);
272 + }
273 + else if((now_realtime_sec() - st->last_updated.tv_sec) > update_every * entries) {
274 + errno = 0;
275 + error("File %s is too old. Clearing it.", fullfilename);
276 + memset(st, 0, size);
277 + }
278 +
279 + // make sure the database is aligned
280 + if(st->last_updated.tv_sec)
281 + timeval_align(&st->last_updated, update_every);
282 + }
283 +
284 + if(st) {
285 + st->name = NULL;
286 + st->type = NULL;
287 + st->family = NULL;
288 + st->context = NULL;
289 + st->title = NULL;
290 + st->units = NULL;
291 + st->dimensions = NULL;
292 + st->next = NULL;
293 + st->mapped = rrd_memory_mode;
294 + st->variables = NULL;
295 + st->alarms = NULL;
296 + memset(&st->rwlock, 0, sizeof(pthread_rwlock_t));
297 + memset(&st->avl, 0, sizeof(avl));
298 + memset(&st->avlname, 0, sizeof(avl));
299 + memset(&st->variables_root_index, 0, sizeof(avl_tree_lock));
300 + memset(&st->dimensions_index, 0, sizeof(avl_tree_lock));
301 + }
302 + else {
303 + st = callocz(1, size);
304 + st->mapped = RRD_MEMORY_MODE_RAM;
305 + }
306 +
307 + st->rrdhost = host;
308 + st->memsize = size;
309 + st->entries = entries;
310 + st->update_every = update_every;
311 +
312 + if(st->current_entry >= st->entries) st->current_entry = 0;
313 +
314 + strcpy(st->cache_filename, fullfilename);
315 + strcpy(st->magic, RRDSET_MAGIC);
316 +
317 + strcpy(st->id, fullid);
318 + st->hash = simple_hash(st->id);
319 +
320 + st->cache_dir = cache_dir;
321 +
322 + st->chart_type = rrdset_type_id(config_get(st->id, "chart type", rrdset_type_name(chart_type)));
323 + st->type = config_get(st->id, "type", type);
324 + st->family = config_get(st->id, "family", family?family:st->type);
325 + st->units = config_get(st->id, "units", units?units:"");
326 +
327 + st->context = config_get(st->id, "context", context?context:st->id);
328 + st->hash_context = simple_hash(st->context);
329 +
330 + st->priority = config_get_number(st->id, "priority", priority);
331 + st->enabled = enabled;
332 +
333 + st->isdetail = 0;
334 + st->debug = 0;
335 +
336 + // if(!strcmp(st->id, "disk_util.dm-0")) {
337 + // st->debug = 1;
338 + // error("enabled debugging for '%s'", st->id);
339 + // }
340 + // else error("not enabled debugging for '%s'", st->id);
341 +
342 + st->green = NAN;
343 + st->red = NAN;
344 +
345 + st->last_collected_time.tv_sec = 0;
346 + st->last_collected_time.tv_usec = 0;
347 + st->counter_done = 0;
348 +
349 + st->gap_when_lost_iterations_above = (int) (
350 + config_get_number(st->id, "gap when lost iterations above", RRD_DEFAULT_GAP_INTERPOLATIONS) + 2);
351 +
352 + avl_init_lock(&st->dimensions_index, rrddim_compare);
353 + avl_init_lock(&st->variables_root_index, rrdvar_compare);
354 +
355 + pthread_rwlock_init(&st->rwlock, NULL);
356 + rrdhost_rwlock(host);
357 +
358 + if(name && *name) rrdset_set_name(st, name);
359 + else rrdset_set_name(st, id);
360 +
361 + {
362 + char varvalue[CONFIG_MAX_VALUE + 1];
363 + char varvalue2[CONFIG_MAX_VALUE + 1];
364 + snprintfz(varvalue, CONFIG_MAX_VALUE, "%s (%s)", title?title:"", st->name);
365 + json_escape_string(varvalue2, varvalue, sizeof(varvalue2));
366 + st->title = config_get(st->id, "title", varvalue2);
367 + }
368 +
369 + st->rrdfamily = rrdfamily_create(host, st->family);
370 +
371 + st->next = host->rrdset_root;
372 + host->rrdset_root = st;
373 +
374 + if(health_enabled) {
375 + rrdsetvar_create(st, "last_collected_t", RRDVAR_TYPE_TIME_T, &st->last_collected_time.tv_sec, 0);
376 + rrdsetvar_create(st, "collected_total_raw", RRDVAR_TYPE_TOTAL, &st->last_collected_total, 0);
377 + rrdsetvar_create(st, "green", RRDVAR_TYPE_CALCULATED, &st->green, 0);
378 + rrdsetvar_create(st, "red", RRDVAR_TYPE_CALCULATED, &st->red, 0);
379 + rrdsetvar_create(st, "update_every", RRDVAR_TYPE_INT, &st->update_every, 0);
380 + }
381 +
382 + if(unlikely(rrdset_index_add(host, st) != st))
383 + error("RRDSET: INTERNAL ERROR: attempt to index duplicate chart '%s'", st->id);
384 +
385 + rrdsetcalc_link_matching(st);
386 + rrdcalctemplate_link_matching(st);
387 +
388 + rrdhost_unlock(host);
389 +
390 + return(st);
391 +}
392 +
393 +
394 +// ----------------------------------------------------------------------------
395 +// RRDSET - data collection iteration control
396 +
397 +void rrdset_next_usec_unfiltered(RRDSET *st, usec_t microseconds) {
398 + if(unlikely(!st->last_collected_time.tv_sec || !microseconds)) {
399 + // the first entry
400 + microseconds = st->update_every * USEC_PER_SEC;
401 + }
402 + st->usec_since_last_update = microseconds;
403 +}
404 +
405 +void rrdset_next_usec(RRDSET *st, usec_t microseconds)
406 +{
407 + struct timeval now;
408 + now_realtime_timeval(&now);
409 +
410 + if(unlikely(!st->last_collected_time.tv_sec)) {
411 + // the first entry
412 + microseconds = st->update_every * USEC_PER_SEC;
413 + }
414 + else if(unlikely(!microseconds)) {
415 + // no dt given by the plugin
416 + microseconds = dt_usec(&now, &st->last_collected_time);
417 + }
418 + else {
419 + // microseconds has the time since the last collection
420 +#ifdef NETDATA_INTERNAL_CHECKS
421 + usec_t now_usec = timeval_usec(&now);
422 + usec_t last_usec = timeval_usec(&st->last_collected_time);
423 +#endif
424 + usec_t since_last_usec = dt_usec(&now, &st->last_collected_time);
425 +
426 + // verify the microseconds given is good
427 + if(unlikely(microseconds > since_last_usec)) {
428 + debug(D_RRD_CALLS, "dt %llu usec given is too big - it leads %llu usec to the future, for chart '%s' (%s).", microseconds, microseconds - since_last_usec, st->name, st->id);
429 +
430 +#ifdef NETDATA_INTERNAL_CHECKS
431 + if(unlikely(last_usec + microseconds > now_usec + 1000))
432 + error("dt %llu usec given is too big - it leads %llu usec to the future, for chart '%s' (%s).", microseconds, microseconds - since_last_usec, st->name, st->id);
433 +#endif
434 +
435 + microseconds = since_last_usec;
436 + }
437 + else if(unlikely(microseconds < since_last_usec * 0.8)) {
438 + debug(D_RRD_CALLS, "dt %llu usec given is too small - expected %llu usec up to -20%%, for chart '%s' (%s).", microseconds, since_last_usec, st->name, st->id);
439 +
440 +#ifdef NETDATA_INTERNAL_CHECKS
441 + error("dt %llu usec given is too small - expected %llu usec up to -20%%, for chart '%s' (%s).", microseconds, since_last_usec, st->name, st->id);
442 +#endif
443 + microseconds = since_last_usec;
444 + }
445 + }
446 + debug(D_RRD_CALLS, "rrdset_next_usec() for chart %s with microseconds %llu", st->name, microseconds);
447 +
448 + if(unlikely(st->debug)) debug(D_RRD_STATS, "%s: NEXT: %llu microseconds", st->name, microseconds);
449 + st->usec_since_last_update = microseconds;
450 +}
451 +
452 +
453 +// ----------------------------------------------------------------------------
454 +// RRDSET - process the collected values for all dimensions of a chart
455 +
456 +usec_t rrdset_done(RRDSET *st) {
457 + if(unlikely(netdata_exit)) return 0;
458 +
459 + debug(D_RRD_CALLS, "rrdset_done() for chart %s", st->name);
460 +
461 + RRDDIM *rd;
462 +
463 + int
464 + pthreadoldcancelstate; // store the old cancelable pthread state, to restore it at the end
465 +
466 + char
467 + store_this_entry = 1, // boolean: 1 = store this entry, 0 = don't store this entry
468 + first_entry = 0; // boolean: 1 = this is the first entry seen for this chart, 0 = all other entries
469 +
470 + unsigned int
471 + stored_entries = 0; // the number of entries we have stored in the db, during this call to rrdset_done()
472 +
473 + usec_t
474 + last_collect_ut, // the timestamp in microseconds, of the last collected value
475 + now_collect_ut, // the timestamp in microseconds, of this collected value (this is NOW)
476 + last_stored_ut, // the timestamp in microseconds, of the last stored entry in the db
477 + next_store_ut, // the timestamp in microseconds, of the next entry to store in the db
478 + update_every_ut = st->update_every * USEC_PER_SEC; // st->update_every in microseconds
479 +
480 + if(unlikely(pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &pthreadoldcancelstate) != 0))
481 + error("Cannot set pthread cancel state to DISABLE.");
482 +
483 + // a read lock is OK here
484 + pthread_rwlock_rdlock(&st->rwlock);
485 +
486 +/*
487 + // enable the chart, if it was disabled
488 + if(unlikely(rrd_delete_unupdated_dimensions) && !st->enabled)
489 + st->enabled = 1;
490 +*/
491 +
492 + // check if the chart has a long time to be updated
493 + if(unlikely(st->usec_since_last_update > st->entries * update_every_ut)) {
494 + info("%s: took too long to be updated (%0.3Lf secs). Resetting it.", st->name, (long double)(st->usec_since_last_update / 1000000.0));
495 + rrdset_reset(st);
496 + st->usec_since_last_update = update_every_ut;
497 + first_entry = 1;
498 + }
499 + if(unlikely(st->debug)) debug(D_RRD_STATS, "%s: microseconds since last update: %llu", st->name, st->usec_since_last_update);
500 +
501 + // set last_collected_time
502 + if(unlikely(!st->last_collected_time.tv_sec)) {
503 + // it is the first entry
504 + // set the last_collected_time to now
505 + now_realtime_timeval(&st->last_collected_time);
506 + timeval_align(&st->last_collected_time, st->update_every);
507 +
508 + last_collect_ut = st->last_collected_time.tv_sec * USEC_PER_SEC + st->last_collected_time.tv_usec - update_every_ut;
509 +
510 + // the first entry should not be stored
511 + store_this_entry = 0;
512 + first_entry = 1;
513 +
514 + if(unlikely(st->debug)) debug(D_RRD_STATS, "%s: has not set last_collected_time. Setting it now. Will not store the next entry.", st->name);
515 + }
516 + else {
517 + // it is not the first entry
518 + // calculate the proper last_collected_time, using usec_since_last_update
519 + last_collect_ut = st->last_collected_time.tv_sec * USEC_PER_SEC + st->last_collected_time.tv_usec;
520 + usec_t ut = last_collect_ut + st->usec_since_last_update;
521 + st->last_collected_time.tv_sec = (time_t) (ut / USEC_PER_SEC);
522 + st->last_collected_time.tv_usec = (suseconds_t) (ut % USEC_PER_SEC);
523 + }
524 +
525 + // if this set has not been updated in the past
526 + // we fake the last_update time to be = now - usec_since_last_update
527 + if(unlikely(!st->last_updated.tv_sec)) {
528 + // it has never been updated before
529 + // set a fake last_updated, in the past using usec_since_last_update
530 + usec_t ut = st->last_collected_time.tv_sec * USEC_PER_SEC + st->last_collected_time.tv_usec - st->usec_since_last_update;
531 + st->last_updated.tv_sec = (time_t) (ut / USEC_PER_SEC);
532 + st->last_updated.tv_usec = (suseconds_t) (ut % USEC_PER_SEC);
533 +
534 + // the first entry should not be stored
535 + store_this_entry = 0;
536 + first_entry = 1;
537 +
538 + if(unlikely(st->debug)) debug(D_RRD_STATS, "%s: initializing last_updated to now - %llu microseconds (%0.3Lf). Will not store the next entry.", st->name, st->usec_since_last_update, (long double)ut/1000000.0);
539 + }
540 +
541 + // check if we will re-write the entire data set
542 + if(unlikely(dt_usec(&st->last_collected_time, &st->last_updated) > st->entries * update_every_ut)) {
543 + info("%s: too old data (last updated at %ld.%ld, last collected at %ld.%ld). Resetting it. Will not store the next entry.", st->name, st->last_updated.tv_sec, st->last_updated.tv_usec, st->last_collected_time.tv_sec, st->last_collected_time.tv_usec);
544 + rrdset_reset(st);
545 +
546 + st->usec_since_last_update = update_every_ut;
547 +
548 + now_realtime_timeval(&st->last_collected_time);
549 + timeval_align(&st->last_collected_time, st->update_every);
550 +
551 + usec_t ut = st->last_collected_time.tv_sec * USEC_PER_SEC + st->last_collected_time.tv_usec - st->usec_since_last_update;
552 + st->last_updated.tv_sec = (time_t) (ut / USEC_PER_SEC);
553 + st->last_updated.tv_usec = (suseconds_t) (ut % USEC_PER_SEC);
554 +
555 + // the first entry should not be stored
556 + store_this_entry = 0;
557 + first_entry = 1;
558 + }
559 +
560 + // these are the 3 variables that will help us in interpolation
561 + // last_stored_ut = the last time we added a value to the storage
562 + // now_collect_ut = the time the current value has been collected
563 + // next_store_ut = the time of the next interpolation point
564 + last_stored_ut = st->last_updated.tv_sec * USEC_PER_SEC + st->last_updated.tv_usec;
565 + now_collect_ut = st->last_collected_time.tv_sec * USEC_PER_SEC + st->last_collected_time.tv_usec;
566 + next_store_ut = (st->last_updated.tv_sec + st->update_every) * USEC_PER_SEC;
567 +
568 + if(unlikely(st->debug)) {
569 + debug(D_RRD_STATS, "%s: last_collect_ut = %0.3Lf (last collection time)", st->name, (long double)last_collect_ut/1000000.0);
570 + debug(D_RRD_STATS, "%s: now_collect_ut = %0.3Lf (current collection time)", st->name, (long double)now_collect_ut/1000000.0);
571 + debug(D_RRD_STATS, "%s: last_stored_ut = %0.3Lf (last updated time)", st->name, (long double)last_stored_ut/1000000.0);
572 + debug(D_RRD_STATS, "%s: next_store_ut = %0.3Lf (next interpolation point)", st->name, (long double)next_store_ut/1000000.0);
573 + }
574 +
575 + if(unlikely(!st->counter_done)) {
576 + store_this_entry = 0;
577 + if(unlikely(st->debug)) debug(D_RRD_STATS, "%s: Will not store the next entry.", st->name);
578 + }
579 + st->counter_done++;
580 +
581 + // calculate totals and count the dimensions
582 + int dimensions;
583 + st->collected_total = 0;
584 + for( rd = st->dimensions, dimensions = 0 ; rd ; rd = rd->next, dimensions++ )
585 + if(likely(rrddim_flag_check(rd, RRDDIM_FLAG_UPDATED)))
586 + st->collected_total += rd->collected_value;
587 +
588 + uint32_t storage_flags = SN_EXISTS;
589 +
590 + // process all dimensions to calculate their values
591 + // based on the collected figures only
592 + // at this stage we do not interpolate anything
593 + for( rd = st->dimensions ; rd ; rd = rd->next ) {
594 +
595 + if(unlikely(!rrddim_flag_check(rd, RRDDIM_FLAG_UPDATED))) {
596 + rd->calculated_value = 0;
597 + continue;
598 + }
599 +
600 + if(unlikely(st->debug)) debug(D_RRD_STATS, "%s/%s: START "
601 + " last_collected_value = " COLLECTED_NUMBER_FORMAT
602 + " collected_value = " COLLECTED_NUMBER_FORMAT
603 + " last_calculated_value = " CALCULATED_NUMBER_FORMAT
604 + " calculated_value = " CALCULATED_NUMBER_FORMAT
605 + , st->id, rd->name
606 + , rd->last_collected_value
607 + , rd->collected_value
608 + , rd->last_calculated_value
609 + , rd->calculated_value
610 + );
611 +
612 + switch(rd->algorithm) {
613 + case RRD_ALGORITHM_ABSOLUTE:
614 + rd->calculated_value = (calculated_number)rd->collected_value
615 + * (calculated_number)rd->multiplier
616 + / (calculated_number)rd->divisor;
617 +
618 + if(unlikely(st->debug))
619 + debug(D_RRD_STATS, "%s/%s: CALC ABS/ABS-NO-IN "
620 + CALCULATED_NUMBER_FORMAT " = "
621 + COLLECTED_NUMBER_FORMAT
622 + " * " CALCULATED_NUMBER_FORMAT
623 + " / " CALCULATED_NUMBER_FORMAT
624 + , st->id, rd->name
625 + , rd->calculated_value
626 + , rd->collected_value
627 + , (calculated_number)rd->multiplier
628 + , (calculated_number)rd->divisor
629 + );
630 + break;
631 +
632 + case RRD_ALGORITHM_PCENT_OVER_ROW_TOTAL:
633 + if(unlikely(!st->collected_total))
634 + rd->calculated_value = 0;
635 + else
636 + // the percentage of the current value
637 + // over the total of all dimensions
638 + rd->calculated_value =
639 + (calculated_number)100
640 + * (calculated_number)rd->collected_value
641 + / (calculated_number)st->collected_total;
642 +
643 + if(unlikely(st->debug))
644 + debug(D_RRD_STATS, "%s/%s: CALC PCENT-ROW "
645 + CALCULATED_NUMBER_FORMAT " = 100"
646 + " * " COLLECTED_NUMBER_FORMAT
647 + " / " COLLECTED_NUMBER_FORMAT
648 + , st->id, rd->name
649 + , rd->calculated_value
650 + , rd->collected_value
651 + , st->collected_total
652 + );
653 + break;
654 +
655 + case RRD_ALGORITHM_INCREMENTAL:
656 + if(unlikely(rd->counter <= 1)) {
657 + rd->calculated_value = 0;
658 + continue;
659 + }
660 +
661 + // if the new is smaller than the old (an overflow, or reset), set the old equal to the new
662 + // to reset the calculation (it will give zero as the calculation for this second)
663 + if(unlikely(rd->last_collected_value > rd->collected_value)) {
664 + debug(D_RRD_STATS, "%s.%s: RESET or OVERFLOW. Last collected value = " COLLECTED_NUMBER_FORMAT ", current = " COLLECTED_NUMBER_FORMAT
665 + , st->name, rd->name
666 + , rd->last_collected_value
667 + , rd->collected_value);
668 +
669 + if(!(rrddim_flag_check(rd, RRDDIM_FLAG_DONT_DETECT_RESETS_OR_OVERFLOWS)))
670 + storage_flags = SN_EXISTS_RESET;
671 +
672 + rd->last_collected_value = rd->collected_value;
673 + }
674 +
675 + rd->calculated_value +=
676 + (calculated_number)(rd->collected_value - rd->last_collected_value)
677 + * (calculated_number)rd->multiplier
678 + / (calculated_number)rd->divisor;
679 +
680 + if(unlikely(st->debug))
681 + debug(D_RRD_STATS, "%s/%s: CALC INC PRE "
682 + CALCULATED_NUMBER_FORMAT " = ("
683 + COLLECTED_NUMBER_FORMAT " - " COLLECTED_NUMBER_FORMAT
684 + ")"
685 + " * " CALCULATED_NUMBER_FORMAT
686 + " / " CALCULATED_NUMBER_FORMAT
687 + , st->id, rd->name
688 + , rd->calculated_value
689 + , rd->collected_value, rd->last_collected_value
690 + , (calculated_number)rd->multiplier
691 + , (calculated_number)rd->divisor
692 + );
693 + break;
694 +
695 + case RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL:
696 + if(unlikely(rd->counter <= 1)) {
697 + rd->calculated_value = 0;
698 + continue;
699 + }
700 +
701 + // if the new is smaller than the old (an overflow, or reset), set the old equal to the new
702 + // to reset the calculation (it will give zero as the calculation for this second)
703 + if(unlikely(rd->last_collected_value > rd->collected_value)) {
704 + debug(D_RRD_STATS, "%s.%s: RESET or OVERFLOW. Last collected value = " COLLECTED_NUMBER_FORMAT ", current = " COLLECTED_NUMBER_FORMAT
705 + , st->name, rd->name
706 + , rd->last_collected_value
707 + , rd->collected_value);
708 +
709 + if(!(rrddim_flag_check(rd, RRDDIM_FLAG_DONT_DETECT_RESETS_OR_OVERFLOWS)))
710 + storage_flags = SN_EXISTS_RESET;
711 +
712 + rd->last_collected_value = rd->collected_value;
713 + }
714 +
715 + // the percentage of the current increment
716 + // over the increment of all dimensions together
717 + if(unlikely(st->collected_total == st->last_collected_total))
718 + rd->calculated_value = 0;
719 + else
720 + rd->calculated_value =
721 + (calculated_number)100
722 + * (calculated_number)(rd->collected_value - rd->last_collected_value)
723 + / (calculated_number)(st->collected_total - st->last_collected_total);
724 +
725 + if(unlikely(st->debug))
726 + debug(D_RRD_STATS, "%s/%s: CALC PCENT-DIFF "
727 + CALCULATED_NUMBER_FORMAT " = 100"
728 + " * (" COLLECTED_NUMBER_FORMAT " - " COLLECTED_NUMBER_FORMAT ")"
729 + " / (" COLLECTED_NUMBER_FORMAT " - " COLLECTED_NUMBER_FORMAT ")"
730 + , st->id, rd->name
731 + , rd->calculated_value
732 + , rd->collected_value, rd->last_collected_value
733 + , st->collected_total, st->last_collected_total
734 + );
735 + break;
736 +
737 + default:
738 + // make the default zero, to make sure
739 + // it gets noticed when we add new types
740 + rd->calculated_value = 0;
741 +
742 + if(unlikely(st->debug))
743 + debug(D_RRD_STATS, "%s/%s: CALC "
744 + CALCULATED_NUMBER_FORMAT " = 0"
745 + , st->id, rd->name
746 + , rd->calculated_value
747 + );
748 + break;
749 + }
750 +
751 + if(unlikely(st->debug)) debug(D_RRD_STATS, "%s/%s: PHASE2 "
752 + " last_collected_value = " COLLECTED_NUMBER_FORMAT
753 + " collected_value = " COLLECTED_NUMBER_FORMAT
754 + " last_calculated_value = " CALCULATED_NUMBER_FORMAT
755 + " calculated_value = " CALCULATED_NUMBER_FORMAT
756 + , st->id, rd->name
757 + , rd->last_collected_value
758 + , rd->collected_value
759 + , rd->last_calculated_value
760 + , rd->calculated_value
761 + );
762 +
763 + }
764 +
765 + // at this point we have all the calculated values ready
766 + // it is now time to interpolate values on a second boundary
767 +
768 + if(unlikely(now_collect_ut < next_store_ut)) {
769 + // this is collected in the same interpolation point
770 + if(unlikely(st->debug)) debug(D_RRD_STATS, "%s: THIS IS IN THE SAME INTERPOLATION POINT", st->name);
771 +#ifdef NETDATA_INTERNAL_CHECKS
772 + info("%s is collected in the same interpolation point: short by %llu microseconds", st->name, next_store_ut - now_collect_ut);
773 +#endif
774 + }
775 +
776 + usec_t first_ut = last_stored_ut;
777 + long long iterations = (now_collect_ut - last_stored_ut) / (update_every_ut);
778 + if((now_collect_ut % (update_every_ut)) == 0) iterations++;
779 +
780 + for( ; next_store_ut <= now_collect_ut ; last_collect_ut = next_store_ut, next_store_ut += update_every_ut, iterations-- ) {
781 +#ifdef NETDATA_INTERNAL_CHECKS
782 + if(iterations < 0) { error("%s: iterations calculation wrapped! first_ut = %llu, last_stored_ut = %llu, next_store_ut = %llu, now_collect_ut = %llu", st->name, first_ut, last_stored_ut, next_store_ut, now_collect_ut); }
783 +#endif
784 +
785 + if(unlikely(st->debug)) {
786 + debug(D_RRD_STATS, "%s: last_stored_ut = %0.3Lf (last updated time)", st->name, (long double)last_stored_ut/1000000.0);
787 + debug(D_RRD_STATS, "%s: next_store_ut = %0.3Lf (next interpolation point)", st->name, (long double)next_store_ut/1000000.0);
788 + }
789 +
790 + st->last_updated.tv_sec = (time_t) (next_store_ut / USEC_PER_SEC);
791 + st->last_updated.tv_usec = 0;
792 +
793 + for( rd = st->dimensions ; likely(rd) ; rd = rd->next ) {
794 + calculated_number new_value;
795 +
796 + switch(rd->algorithm) {
797 + case RRD_ALGORITHM_INCREMENTAL:
798 + new_value = (calculated_number)
799 + ( rd->calculated_value
800 + * (calculated_number)(next_store_ut - last_collect_ut)
801 + / (calculated_number)(now_collect_ut - last_collect_ut)
802 + );
803 +
804 + if(unlikely(st->debug))
805 + debug(D_RRD_STATS, "%s/%s: CALC2 INC "
806 + CALCULATED_NUMBER_FORMAT " = "
807 + CALCULATED_NUMBER_FORMAT
808 + " * %llu"
809 + " / %llu"
810 + , st->id, rd->name
811 + , new_value
812 + , rd->calculated_value
813 + , (next_store_ut - last_stored_ut)
814 + , (now_collect_ut - last_stored_ut)
815 + );
816 +
817 + rd->calculated_value -= new_value;
818 + new_value += rd->last_calculated_value;
819 + rd->last_calculated_value = 0;
820 + new_value /= (calculated_number)st->update_every;
821 +
822 + if(unlikely(next_store_ut - last_stored_ut < update_every_ut)) {
823 + if(unlikely(st->debug))
824 + debug(D_RRD_STATS, "%s/%s: COLLECTION POINT IS SHORT " CALCULATED_NUMBER_FORMAT " - EXTRAPOLATING",
825 + st->id, rd->name
826 + , (calculated_number)(next_store_ut - last_stored_ut)
827 + );
828 + new_value = new_value * (calculated_number)(st->update_every * 1000000) / (calculated_number)(next_store_ut - last_stored_ut);
829 + }
830 + break;
831 +
832 + case RRD_ALGORITHM_ABSOLUTE:
833 + case RRD_ALGORITHM_PCENT_OVER_ROW_TOTAL:
834 + case RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL:
835 + default:
836 + if(iterations == 1) {
837 + // this is the last iteration
838 + // do not interpolate
839 + // just show the calculated value
840 +
841 + new_value = rd->calculated_value;
842 + }
843 + else {
844 + // we have missed an update
845 + // interpolate in the middle values
846 +
847 + new_value = (calculated_number)
848 + ( ( (rd->calculated_value - rd->last_calculated_value)
849 + * (calculated_number)(next_store_ut - last_collect_ut)
850 + / (calculated_number)(now_collect_ut - last_collect_ut)
851 + )
852 + + rd->last_calculated_value
853 + );
854 +
855 + if(unlikely(st->debug))
856 + debug(D_RRD_STATS, "%s/%s: CALC2 DEF "
857 + CALCULATED_NUMBER_FORMAT " = ((("
858 + "(" CALCULATED_NUMBER_FORMAT " - " CALCULATED_NUMBER_FORMAT ")"
859 + " * %llu"
860 + " / %llu) + " CALCULATED_NUMBER_FORMAT
861 + , st->id, rd->name
862 + , new_value
863 + , rd->calculated_value, rd->last_calculated_value
864 + , (next_store_ut - first_ut)
865 + , (now_collect_ut - first_ut), rd->last_calculated_value
866 + );
867 + }
868 + break;
869 + }
870 +
871 + if(unlikely(!store_this_entry)) {
872 + rd->values[st->current_entry] = pack_storage_number(0, SN_NOT_EXISTS);
873 + continue;
874 + }
875 +
876 + if(likely(rrddim_flag_check(rd, RRDDIM_FLAG_UPDATED) && rd->counter > 1 && iterations < st->gap_when_lost_iterations_above)) {
877 + rd->values[st->current_entry] = pack_storage_number(new_value, storage_flags );
878 + rd->last_stored_value = new_value;
879 +
880 + if(unlikely(st->debug))
881 + debug(D_RRD_STATS, "%s/%s: STORE[%ld] "
882 + CALCULATED_NUMBER_FORMAT " = " CALCULATED_NUMBER_FORMAT
883 + , st->id, rd->name
884 + , st->current_entry
885 + , unpack_storage_number(rd->values[st->current_entry]), new_value
886 + );
887 + }
888 + else {
889 + if(unlikely(st->debug)) debug(D_RRD_STATS, "%s/%s: STORE[%ld] = NON EXISTING "
890 + , st->id, rd->name
891 + , st->current_entry
892 + );
893 + rd->values[st->current_entry] = pack_storage_number(0, SN_NOT_EXISTS);
894 + rd->last_stored_value = NAN;
895 + }
896 +
897 + stored_entries++;
898 +
899 + if(unlikely(st->debug)) {
900 + calculated_number t1 = new_value * (calculated_number)rd->multiplier / (calculated_number)rd->divisor;
901 + calculated_number t2 = unpack_storage_number(rd->values[st->current_entry]);
902 + calculated_number accuracy = accuracy_loss(t1, t2);
903 + debug(D_RRD_STATS, "%s/%s: UNPACK[%ld] = " CALCULATED_NUMBER_FORMAT " FLAGS=0x%08x (original = " CALCULATED_NUMBER_FORMAT ", accuracy loss = " CALCULATED_NUMBER_FORMAT "%%%s)"
904 + , st->id, rd->name
905 + , st->current_entry
906 + , t2
907 + , get_storage_number_flags(rd->values[st->current_entry])
908 + , t1
909 + , accuracy
910 + , (accuracy > ACCURACY_LOSS) ? " **TOO BIG** " : ""
911 + );
912 +
913 + rd->collected_volume += t1;
914 + rd->stored_volume += t2;
915 + accuracy = accuracy_loss(rd->collected_volume, rd->stored_volume);
916 + debug(D_RRD_STATS, "%s/%s: VOLUME[%ld] = " CALCULATED_NUMBER_FORMAT ", calculated = " CALCULATED_NUMBER_FORMAT ", accuracy loss = " CALCULATED_NUMBER_FORMAT "%%%s"
917 + , st->id, rd->name
918 + , st->current_entry
919 + , rd->stored_volume
920 + , rd->collected_volume
921 + , accuracy
922 + , (accuracy > ACCURACY_LOSS) ? " **TOO BIG** " : ""
923 + );
924 +
925 + }
926 + }
927 + // reset the storage flags for the next point, if any;
928 + storage_flags = SN_EXISTS;
929 +
930 + st->counter++;
931 + st->current_entry = ((st->current_entry + 1) >= st->entries) ? 0 : st->current_entry + 1;
932 + last_stored_ut = next_store_ut;
933 + }
934 +
935 + st->last_collected_total = st->collected_total;
936 +
937 + for( rd = st->dimensions; rd ; rd = rd->next ) {
938 + if(unlikely(!rrddim_flag_check(rd, RRDDIM_FLAG_UPDATED)))
939 + continue;
940 +
941 + if(unlikely(st->debug)) debug(D_RRD_STATS, "%s/%s: setting last_collected_value (old: " COLLECTED_NUMBER_FORMAT ") to last_collected_value (new: " COLLECTED_NUMBER_FORMAT ")", st->id, rd->name, rd->last_collected_value, rd->collected_value);
942 + rd->last_collected_value = rd->collected_value;
943 +
944 + switch(rd->algorithm) {
945 + case RRD_ALGORITHM_INCREMENTAL:
946 + if(unlikely(!first_entry)) {
947 + if(unlikely(st->debug)) debug(D_RRD_STATS, "%s/%s: setting last_calculated_value (old: " CALCULATED_NUMBER_FORMAT ") to last_calculated_value (new: " CALCULATED_NUMBER_FORMAT ")", st->id, rd->name, rd->last_calculated_value + rd->calculated_value, rd->calculated_value);
948 + rd->last_calculated_value += rd->calculated_value;
949 + }
950 + else {
951 + if(unlikely(st->debug)) debug(D_RRD_STATS, "%s: THIS IS THE FIRST POINT", st->name);
952 + }
953 + break;
954 +
955 + case RRD_ALGORITHM_ABSOLUTE:
956 + case RRD_ALGORITHM_PCENT_OVER_ROW_TOTAL:
957 + case RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL:
958 + if(unlikely(st->debug)) debug(D_RRD_STATS, "%s/%s: setting last_calculated_value (old: " CALCULATED_NUMBER_FORMAT ") to last_calculated_value (new: " CALCULATED_NUMBER_FORMAT ")", st->id, rd->name, rd->last_calculated_value, rd->calculated_value);
959 + rd->last_calculated_value = rd->calculated_value;
960 + break;
961 + }
962 +
963 + rd->calculated_value = 0;
964 + rd->collected_value = 0;
965 + rrddim_flag_clear(rd, RRDDIM_FLAG_UPDATED);
966 +
967 + if(unlikely(st->debug)) debug(D_RRD_STATS, "%s/%s: END "
968 + " last_collected_value = " COLLECTED_NUMBER_FORMAT
969 + " collected_value = " COLLECTED_NUMBER_FORMAT
970 + " last_calculated_value = " CALCULATED_NUMBER_FORMAT
971 + " calculated_value = " CALCULATED_NUMBER_FORMAT
972 + , st->id, rd->name
973 + , rd->last_collected_value
974 + , rd->collected_value
975 + , rd->last_calculated_value
976 + , rd->calculated_value
977 + );
978 + }
979 +
980 + // ALL DONE ABOUT THE DATA UPDATE
981 + // --------------------------------------------------------------------
982 +
983 +/*
984 + // find if there are any obsolete dimensions (not updated recently)
985 + if(unlikely(rrd_delete_unupdated_dimensions)) {
986 +
987 + for( rd = st->dimensions; likely(rd) ; rd = rd->next )
988 + if((rd->last_collected_time.tv_sec + (rrd_delete_unupdated_dimensions * st->update_every)) < st->last_collected_time.tv_sec)
989 + break;
990 +
991 + if(unlikely(rd)) {
992 + RRDDIM *last;
993 + // there is dimension to free
994 + // upgrade our read lock to a write lock
995 + pthread_rwlock_unlock(&st->rwlock);
996 + pthread_rwlock_wrlock(&st->rwlock);
997 +
998 + for( rd = st->dimensions, last = NULL ; likely(rd) ; ) {
999 + // remove it only it is not updated in rrd_delete_unupdated_dimensions seconds
1000 +
1001 + if(unlikely((rd->last_collected_time.tv_sec + (rrd_delete_unupdated_dimensions * st->update_every)) < st->last_collected_time.tv_sec)) {
1002 + info("Removing obsolete dimension '%s' (%s) of '%s' (%s).", rd->name, rd->id, st->name, st->id);
1003 +
1004 + if(unlikely(!last)) {
1005 + st->dimensions = rd->next;
1006 + rd->next = NULL;
1007 + rrddim_free(st, rd);
1008 + rd = st->dimensions;
1009 + continue;
1010 + }
1011 + else {
1012 + last->next = rd->next;
1013 + rd->next = NULL;
1014 + rrddim_free(st, rd);
1015 + rd = last->next;
1016 + continue;
1017 + }
1018 + }
1019 +
1020 + last = rd;
1021 + rd = rd->next;
1022 + }
1023 +
1024 + if(unlikely(!st->dimensions)) {
1025 + info("Disabling chart %s (%s) since it does not have any dimensions", st->name, st->id);
1026 + st->enabled = 0;
1027 + }
1028 + }
1029 + }
1030 +*/
1031 +
1032 + pthread_rwlock_unlock(&st->rwlock);
1033 +
1034 + if(unlikely(pthread_setcancelstate(pthreadoldcancelstate, NULL) != 0))
1035 + error("Cannot set pthread cancel state to RESTORE (%d).", pthreadoldcancelstate);
1036 +
1037 + return(st->usec_since_last_update);
1038 +}
1039 +
src/sys_devices_system_edac_mc.c
+2 -2
@@ -139,7 +139,7 @@ int do_proc_sys_devices_system_edac_mc(int update_every, usec_t dt) {
139
140 for(m = mc_root; m; m = m->next)
141 if(m->ce_count_filename)
142 - m->ce_rd = rrddim_add(ce_st, m->name, NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
142 + m->ce_rd = rrddim_add(ce_st, m->name, NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
143 }
144 else
145 rrdset_next(ce_st);
@@ -167,7 +167,7 @@ int do_proc_sys_devices_system_edac_mc(int update_every, usec_t dt) {
167
168 for(m = mc_root; m; m = m->next)
169 if(m->ue_count_filename)
170 - m->ue_rd = rrddim_add(ue_st, m->name, NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
170 + m->ue_rd = rrddim_add(ue_st, m->name, NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
171 }
172 else
173 rrdset_next(ue_st);
src/sys_devices_system_node.c
+4 -4
@@ -95,10 +95,10 @@ int do_proc_sys_devices_system_node(int update_every, usec_t dt) {
95 st = rrdset_create("mem", m->name, NULL, "numa", NULL, "NUMA events", "events/s", 1000, update_every, RRDSET_TYPE_LINE);
96 st->isdetail = 1;
97
98 - rrddim_add(st, "local_node", "local", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
99 - rrddim_add(st, "numa_foreign", "foreign", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
100 - rrddim_add(st, "interleave_hit", "interleave", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
101 - rrddim_add(st, "other_node", "other", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
98 + rrddim_add(st, "local_node", "local", 1, 1, RRD_ALGORITHM_INCREMENTAL);
99 + rrddim_add(st, "numa_foreign", "foreign", 1, 1, RRD_ALGORITHM_INCREMENTAL);
100 + rrddim_add(st, "interleave_hit", "interleave", 1, 1, RRD_ALGORITHM_INCREMENTAL);
101 + rrddim_add(st, "other_node", "other", 1, 1, RRD_ALGORITHM_INCREMENTAL);
102
103 m->numastat_st = st;
104 }
src/sys_fs_cgroup.c
+55 -55
@@ -1536,134 +1536,134 @@ void update_services_charts(int update_every,
1536
1537 if(likely(do_cpu && cg->cpuacct_stat.updated)) {
1538 if(unlikely(!cg->rd_cpu))
1539 - cg->rd_cpu = rrddim_add(st_cpu, cg->chart_id, cg->chart_title, 100, hz, RRDDIM_ALGORITHM_INCREMENTAL);
1539 + cg->rd_cpu = rrddim_add(st_cpu, cg->chart_id, cg->chart_title, 100, hz, RRD_ALGORITHM_INCREMENTAL);
1540
1541 rrddim_set_by_pointer(st_cpu, cg->rd_cpu, cg->cpuacct_stat.user + cg->cpuacct_stat.system);
1542 }
1543
1544 if(likely(do_mem_usage && cg->memory.updated_usage_in_bytes)) {
1545 if(unlikely(!cg->rd_mem_usage))
1546 - cg->rd_mem_usage = rrddim_add(st_mem_usage, cg->chart_id, cg->chart_title, 1, 1024 * 1024, RRDDIM_ALGORITHM_ABSOLUTE);
1546 + cg->rd_mem_usage = rrddim_add(st_mem_usage, cg->chart_id, cg->chart_title, 1, 1024 * 1024, RRD_ALGORITHM_ABSOLUTE);
1547
1548 rrddim_set_by_pointer(st_mem_usage, cg->rd_mem_usage, cg->memory.usage_in_bytes - ((cgroup_used_memory_without_cache)?cg->memory.cache:0));
1549 }
1550
1551 if(likely(do_mem_detailed && cg->memory.updated_detailed)) {
1552 if(unlikely(!cg->rd_mem_detailed_rss))
1553 - cg->rd_mem_detailed_rss = rrddim_add(st_mem_detailed_rss, cg->chart_id, cg->chart_title, 1, 1024 * 1024, RRDDIM_ALGORITHM_ABSOLUTE);
1553 + cg->rd_mem_detailed_rss = rrddim_add(st_mem_detailed_rss, cg->chart_id, cg->chart_title, 1, 1024 * 1024, RRD_ALGORITHM_ABSOLUTE);
1554 rrddim_set_by_pointer(st_mem_detailed_rss, cg->rd_mem_detailed_rss, cg->memory.rss + cg->memory.rss_huge);
1555
1556 if(unlikely(!cg->rd_mem_detailed_mapped))
1557 - cg->rd_mem_detailed_mapped = rrddim_add(st_mem_detailed_mapped, cg->chart_id, cg->chart_title, 1, 1024 * 1024, RRDDIM_ALGORITHM_ABSOLUTE);
1557 + cg->rd_mem_detailed_mapped = rrddim_add(st_mem_detailed_mapped, cg->chart_id, cg->chart_title, 1, 1024 * 1024, RRD_ALGORITHM_ABSOLUTE);
1558 rrddim_set_by_pointer(st_mem_detailed_mapped, cg->rd_mem_detailed_mapped, cg->memory.mapped_file);
1559
1560 if(unlikely(!cg->rd_mem_detailed_cache))
1561 - cg->rd_mem_detailed_cache = rrddim_add(st_mem_detailed_cache, cg->chart_id, cg->chart_title, 1, 1024 * 1024, RRDDIM_ALGORITHM_ABSOLUTE);
1561 + cg->rd_mem_detailed_cache = rrddim_add(st_mem_detailed_cache, cg->chart_id, cg->chart_title, 1, 1024 * 1024, RRD_ALGORITHM_ABSOLUTE);
1562 rrddim_set_by_pointer(st_mem_detailed_cache, cg->rd_mem_detailed_cache, cg->memory.cache);
1563
1564 if(unlikely(!cg->rd_mem_detailed_writeback))
1565 - cg->rd_mem_detailed_writeback = rrddim_add(st_mem_detailed_writeback, cg->chart_id, cg->chart_title, 1, 1024 * 1024, RRDDIM_ALGORITHM_ABSOLUTE);
1565 + cg->rd_mem_detailed_writeback = rrddim_add(st_mem_detailed_writeback, cg->chart_id, cg->chart_title, 1, 1024 * 1024, RRD_ALGORITHM_ABSOLUTE);
1566 rrddim_set_by_pointer(st_mem_detailed_writeback, cg->rd_mem_detailed_writeback, cg->memory.writeback);
1567
1568 if(unlikely(!cg->rd_mem_detailed_pgfault))
1569 - cg->rd_mem_detailed_pgfault = rrddim_add(st_mem_detailed_pgfault, cg->chart_id, cg->chart_title, system_page_size, 1024 * 1024, RRDDIM_ALGORITHM_INCREMENTAL);
1569 + cg->rd_mem_detailed_pgfault = rrddim_add(st_mem_detailed_pgfault, cg->chart_id, cg->chart_title, system_page_size, 1024 * 1024, RRD_ALGORITHM_INCREMENTAL);
1570 rrddim_set_by_pointer(st_mem_detailed_pgfault, cg->rd_mem_detailed_pgfault, cg->memory.pgfault);
1571
1572 if(unlikely(!cg->rd_mem_detailed_pgmajfault))
1573 - cg->rd_mem_detailed_pgmajfault = rrddim_add(st_mem_detailed_pgmajfault, cg->chart_id, cg->chart_title, system_page_size, 1024 * 1024, RRDDIM_ALGORITHM_INCREMENTAL);
1573 + cg->rd_mem_detailed_pgmajfault = rrddim_add(st_mem_detailed_pgmajfault, cg->chart_id, cg->chart_title, system_page_size, 1024 * 1024, RRD_ALGORITHM_INCREMENTAL);
1574 rrddim_set_by_pointer(st_mem_detailed_pgmajfault, cg->rd_mem_detailed_pgmajfault, cg->memory.pgmajfault);
1575
1576 if(unlikely(!cg->rd_mem_detailed_pgpgin))
1577 - cg->rd_mem_detailed_pgpgin = rrddim_add(st_mem_detailed_pgpgin, cg->chart_id, cg->chart_title, system_page_size, 1024 * 1024, RRDDIM_ALGORITHM_INCREMENTAL);
1577 + cg->rd_mem_detailed_pgpgin = rrddim_add(st_mem_detailed_pgpgin, cg->chart_id, cg->chart_title, system_page_size, 1024 * 1024, RRD_ALGORITHM_INCREMENTAL);
1578 rrddim_set_by_pointer(st_mem_detailed_pgpgin, cg->rd_mem_detailed_pgpgin, cg->memory.pgpgin);
1579
1580 if(unlikely(!cg->rd_mem_detailed_pgpgout))
1581 - cg->rd_mem_detailed_pgpgout = rrddim_add(st_mem_detailed_pgpgout, cg->chart_id, cg->chart_title, system_page_size, 1024 * 1024, RRDDIM_ALGORITHM_INCREMENTAL);
1581 + cg->rd_mem_detailed_pgpgout = rrddim_add(st_mem_detailed_pgpgout, cg->chart_id, cg->chart_title, system_page_size, 1024 * 1024, RRD_ALGORITHM_INCREMENTAL);
1582 rrddim_set_by_pointer(st_mem_detailed_pgpgout, cg->rd_mem_detailed_pgpgout, cg->memory.pgpgout);
1583 }
1584
1585 if(likely(do_mem_failcnt && cg->memory.updated_failcnt)) {
1586 if(unlikely(!cg->rd_mem_failcnt))
1587 - cg->rd_mem_failcnt = rrddim_add(st_mem_failcnt, cg->chart_id, cg->chart_title, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
1587 + cg->rd_mem_failcnt = rrddim_add(st_mem_failcnt, cg->chart_id, cg->chart_title, 1, 1, RRD_ALGORITHM_INCREMENTAL);
1588
1589 rrddim_set_by_pointer(st_mem_failcnt, cg->rd_mem_failcnt, cg->memory.failcnt);
1590 }
1591
1592 if(likely(do_swap_usage && cg->memory.updated_msw_usage_in_bytes)) {
1593 if(unlikely(!cg->rd_swap_usage))
1594 - cg->rd_swap_usage = rrddim_add(st_swap_usage, cg->chart_id, cg->chart_title, 1, 1024 * 1024, RRDDIM_ALGORITHM_ABSOLUTE);
1594 + cg->rd_swap_usage = rrddim_add(st_swap_usage, cg->chart_id, cg->chart_title, 1, 1024 * 1024, RRD_ALGORITHM_ABSOLUTE);
1595
1596 rrddim_set_by_pointer(st_swap_usage, cg->rd_swap_usage, cg->memory.msw_usage_in_bytes);
1597 }
1598
1599 if(likely(do_io && cg->io_service_bytes.updated)) {
1600 if(unlikely(!cg->rd_io_service_bytes_read))
1601 - cg->rd_io_service_bytes_read = rrddim_add(st_io_read, cg->chart_id, cg->chart_title, 1, 1024, RRDDIM_ALGORITHM_INCREMENTAL);
1601 + cg->rd_io_service_bytes_read = rrddim_add(st_io_read, cg->chart_id, cg->chart_title, 1, 1024, RRD_ALGORITHM_INCREMENTAL);
1602
1603 rrddim_set_by_pointer(st_io_read, cg->rd_io_service_bytes_read, cg->io_service_bytes.Read);
1604
1605 if(unlikely(!cg->rd_io_service_bytes_write))
1606 - cg->rd_io_service_bytes_write = rrddim_add(st_io_write, cg->chart_id, cg->chart_title, 1, 1024, RRDDIM_ALGORITHM_INCREMENTAL);
1606 + cg->rd_io_service_bytes_write = rrddim_add(st_io_write, cg->chart_id, cg->chart_title, 1, 1024, RRD_ALGORITHM_INCREMENTAL);
1607
1608 rrddim_set_by_pointer(st_io_write, cg->rd_io_service_bytes_write, cg->io_service_bytes.Write);
1609 }
1610
1611 if(likely(do_io_ops && cg->io_serviced.updated)) {
1612 if(unlikely(!cg->rd_io_serviced_read))
1613 - cg->rd_io_serviced_read = rrddim_add(st_io_serviced_read, cg->chart_id, cg->chart_title, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
1613 + cg->rd_io_serviced_read = rrddim_add(st_io_serviced_read, cg->chart_id, cg->chart_title, 1, 1, RRD_ALGORITHM_INCREMENTAL);
1614
1615 rrddim_set_by_pointer(st_io_serviced_read, cg->rd_io_serviced_read, cg->io_serviced.Read);
1616
1617 if(unlikely(!cg->rd_io_serviced_write))
1618 - cg->rd_io_serviced_write = rrddim_add(st_io_serviced_write, cg->chart_id, cg->chart_title, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
1618 + cg->rd_io_serviced_write = rrddim_add(st_io_serviced_write, cg->chart_id, cg->chart_title, 1, 1, RRD_ALGORITHM_INCREMENTAL);
1619
1620 rrddim_set_by_pointer(st_io_serviced_write, cg->rd_io_serviced_write, cg->io_serviced.Write);
1621 }
1622
1623 if(likely(do_throttle_io && cg->throttle_io_service_bytes.updated)) {
1624 if(unlikely(!cg->rd_throttle_io_read))
1625 - cg->rd_throttle_io_read = rrddim_add(st_throttle_io_read, cg->chart_id, cg->chart_title, 1, 1024, RRDDIM_ALGORITHM_INCREMENTAL);
1625 + cg->rd_throttle_io_read = rrddim_add(st_throttle_io_read, cg->chart_id, cg->chart_title, 1, 1024, RRD_ALGORITHM_INCREMENTAL);
1626
1627 rrddim_set_by_pointer(st_throttle_io_read, cg->rd_throttle_io_read, cg->throttle_io_service_bytes.Read);
1628
1629 if(unlikely(!cg->rd_throttle_io_write))
1630 - cg->rd_throttle_io_write = rrddim_add(st_throttle_io_write, cg->chart_id, cg->chart_title, 1, 1024, RRDDIM_ALGORITHM_INCREMENTAL);
1630 + cg->rd_throttle_io_write = rrddim_add(st_throttle_io_write, cg->chart_id, cg->chart_title, 1, 1024, RRD_ALGORITHM_INCREMENTAL);
1631
1632 rrddim_set_by_pointer(st_throttle_io_write, cg->rd_throttle_io_write, cg->throttle_io_service_bytes.Write);
1633 }
1634
1635 if(likely(do_throttle_ops && cg->throttle_io_serviced.updated)) {
1636 if(unlikely(!cg->rd_throttle_io_serviced_read))
1637 - cg->rd_throttle_io_serviced_read = rrddim_add(st_throttle_ops_read, cg->chart_id, cg->chart_title, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
1637 + cg->rd_throttle_io_serviced_read = rrddim_add(st_throttle_ops_read, cg->chart_id, cg->chart_title, 1, 1, RRD_ALGORITHM_INCREMENTAL);
1638
1639 rrddim_set_by_pointer(st_throttle_ops_read, cg->rd_throttle_io_serviced_read, cg->throttle_io_serviced.Read);
1640
1641 if(unlikely(!cg->rd_throttle_io_serviced_write))
1642 - cg->rd_throttle_io_serviced_write = rrddim_add(st_throttle_ops_write, cg->chart_id, cg->chart_title, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
1642 + cg->rd_throttle_io_serviced_write = rrddim_add(st_throttle_ops_write, cg->chart_id, cg->chart_title, 1, 1, RRD_ALGORITHM_INCREMENTAL);
1643
1644 rrddim_set_by_pointer(st_throttle_ops_write, cg->rd_throttle_io_serviced_write, cg->throttle_io_serviced.Write);
1645 }
1646
1647 if(likely(do_queued_ops && cg->io_queued.updated)) {
1648 if(unlikely(!cg->rd_io_queued_read))
1649 - cg->rd_io_queued_read = rrddim_add(st_queued_ops_read, cg->chart_id, cg->chart_title, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
1649 + cg->rd_io_queued_read = rrddim_add(st_queued_ops_read, cg->chart_id, cg->chart_title, 1, 1, RRD_ALGORITHM_INCREMENTAL);
1650
1651 rrddim_set_by_pointer(st_queued_ops_read, cg->rd_io_queued_read, cg->io_queued.Read);
1652
1653 if(unlikely(!cg->rd_io_queued_write))
1654 - cg->rd_io_queued_write = rrddim_add(st_queued_ops_write, cg->chart_id, cg->chart_title, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
1654 + cg->rd_io_queued_write = rrddim_add(st_queued_ops_write, cg->chart_id, cg->chart_title, 1, 1, RRD_ALGORITHM_INCREMENTAL);
1655
1656 rrddim_set_by_pointer(st_queued_ops_write, cg->rd_io_queued_write, cg->io_queued.Write);
1657 }
1658
1659 if(likely(do_merged_ops && cg->io_merged.updated)) {
1660 if(unlikely(!cg->rd_io_merged_read))
1661 - cg->rd_io_merged_read = rrddim_add(st_merged_ops_read, cg->chart_id, cg->chart_title, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
1661 + cg->rd_io_merged_read = rrddim_add(st_merged_ops_read, cg->chart_id, cg->chart_title, 1, 1, RRD_ALGORITHM_INCREMENTAL);
1662
1663 rrddim_set_by_pointer(st_merged_ops_read, cg->rd_io_merged_read, cg->io_merged.Read);
1664
1665 if(unlikely(!cg->rd_io_merged_write))
1666 - cg->rd_io_merged_write = rrddim_add(st_merged_ops_write, cg->chart_id, cg->chart_title, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
1666 + cg->rd_io_merged_write = rrddim_add(st_merged_ops_write, cg->chart_id, cg->chart_title, 1, 1, RRD_ALGORITHM_INCREMENTAL);
1667
1668 rrddim_set_by_pointer(st_merged_ops_write, cg->rd_io_merged_write, cg->io_merged.Write);
1669 }
@@ -1786,8 +1786,8 @@ void update_cgroup_charts(int update_every) {
1786 snprintfz(title, CHART_TITLE_MAX, "CPU Usage (%d%% = %d core%s) for cgroup %s", (processors * 100), processors, (processors > 1) ? "s" : "", cg->chart_title);
1787 cg->st_cpu = rrdset_create(type, "cpu", NULL, "cpu", "cgroup.cpu", title, "%", CHART_PRIORITY_CONTAINERS, update_every, RRDSET_TYPE_STACKED);
1788 }
1789 - rrddim_add(cg->st_cpu, "user", NULL, 100, hz, RRDDIM_ALGORITHM_INCREMENTAL);
1790 - rrddim_add(cg->st_cpu, "system", NULL, 100, hz, RRDDIM_ALGORITHM_INCREMENTAL);
1789 + rrddim_add(cg->st_cpu, "user", NULL, 100, hz, RRD_ALGORITHM_INCREMENTAL);
1790 + rrddim_add(cg->st_cpu, "system", NULL, 100, hz, RRD_ALGORITHM_INCREMENTAL);
1791 }
1792 else
1793 rrdset_next(cg->st_cpu);
@@ -1810,7 +1810,7 @@ void update_cgroup_charts(int update_every) {
1810 }
1811 for(i = 0; i < cg->cpuacct_usage.cpus; i++) {
1812 snprintfz(id, CHART_TITLE_MAX, "cpu%u", i);
1813 - rrddim_add(cg->st_cpu_per_core, id, NULL, 100, 1000000000, RRDDIM_ALGORITHM_INCREMENTAL);
1813 + rrddim_add(cg->st_cpu_per_core, id, NULL, 100, 1000000000, RRD_ALGORITHM_INCREMENTAL);
1814 }
1815 }
1816 else
@@ -1832,12 +1832,12 @@ void update_cgroup_charts(int update_every) {
1832 cg->st_mem = rrdset_create(type, "mem", NULL, "mem", "cgroup.mem", title, "MB", CHART_PRIORITY_CONTAINERS + 210, update_every, RRDSET_TYPE_STACKED);
1833 }
1834
1835 - rrddim_add(cg->st_mem, "cache", NULL, 1, 1024 * 1024, RRDDIM_ALGORITHM_ABSOLUTE);
1836 - rrddim_add(cg->st_mem, "rss", NULL, 1, 1024 * 1024, RRDDIM_ALGORITHM_ABSOLUTE);
1835 + rrddim_add(cg->st_mem, "cache", NULL, 1, 1024 * 1024, RRD_ALGORITHM_ABSOLUTE);
1836 + rrddim_add(cg->st_mem, "rss", NULL, 1, 1024 * 1024, RRD_ALGORITHM_ABSOLUTE);
1837 if(cg->memory.detailed_has_swap)
1838 - rrddim_add(cg->st_mem, "swap", NULL, 1, 1024 * 1024, RRDDIM_ALGORITHM_ABSOLUTE);
1839 - rrddim_add(cg->st_mem, "rss_huge", NULL, 1, 1024 * 1024, RRDDIM_ALGORITHM_ABSOLUTE);
1840 - rrddim_add(cg->st_mem, "mapped_file", NULL, 1, 1024 * 1024, RRDDIM_ALGORITHM_ABSOLUTE);
1838 + rrddim_add(cg->st_mem, "swap", NULL, 1, 1024 * 1024, RRD_ALGORITHM_ABSOLUTE);
1839 + rrddim_add(cg->st_mem, "rss_huge", NULL, 1, 1024 * 1024, RRD_ALGORITHM_ABSOLUTE);
1840 + rrddim_add(cg->st_mem, "mapped_file", NULL, 1, 1024 * 1024, RRD_ALGORITHM_ABSOLUTE);
1841 }
1842 else
1843 rrdset_next(cg->st_mem);
@@ -1859,8 +1859,8 @@ void update_cgroup_charts(int update_every) {
1859 }
1860
1861 if(cg->memory.detailed_has_dirty)
1862 - rrddim_add(cg->st_writeback, "dirty", NULL, 1, 1024 * 1024, RRDDIM_ALGORITHM_ABSOLUTE);
1863 - rrddim_add(cg->st_writeback, "writeback", NULL, 1, 1024 * 1024, RRDDIM_ALGORITHM_ABSOLUTE);
1862 + rrddim_add(cg->st_writeback, "dirty", NULL, 1, 1024 * 1024, RRD_ALGORITHM_ABSOLUTE);
1863 + rrddim_add(cg->st_writeback, "writeback", NULL, 1, 1024 * 1024, RRD_ALGORITHM_ABSOLUTE);
1864 }
1865 else
1866 rrdset_next(cg->st_writeback);
@@ -1877,8 +1877,8 @@ void update_cgroup_charts(int update_every) {
1877 snprintfz(title, CHART_TITLE_MAX, "Memory Activity for cgroup %s", cg->chart_title);
1878 cg->st_mem_activity = rrdset_create(type, "mem_activity", NULL, "mem", "cgroup.mem_activity", title, "MB/s", CHART_PRIORITY_CONTAINERS + 400, update_every, RRDSET_TYPE_LINE);
1879 }
1880 - rrddim_add(cg->st_mem_activity, "pgpgin", "in", system_page_size, 1024 * 1024, RRDDIM_ALGORITHM_INCREMENTAL);
1881 - rrddim_add(cg->st_mem_activity, "pgpgout", "out", -system_page_size, 1024 * 1024, RRDDIM_ALGORITHM_INCREMENTAL);
1880 + rrddim_add(cg->st_mem_activity, "pgpgin", "in", system_page_size, 1024 * 1024, RRD_ALGORITHM_INCREMENTAL);
1881 + rrddim_add(cg->st_mem_activity, "pgpgout", "out", -system_page_size, 1024 * 1024, RRD_ALGORITHM_INCREMENTAL);
1882 }
1883 else
1884 rrdset_next(cg->st_mem_activity);
@@ -1894,8 +1894,8 @@ void update_cgroup_charts(int update_every) {
1894 snprintfz(title, CHART_TITLE_MAX, "Memory Page Faults for cgroup %s", cg->chart_title);
1895 cg->st_pgfaults = rrdset_create(type, "pgfaults", NULL, "mem", "cgroup.pgfaults", title, "MB/s", CHART_PRIORITY_CONTAINERS + 500, update_every, RRDSET_TYPE_LINE);
1896 }
1897 - rrddim_add(cg->st_pgfaults, "pgfault", NULL, system_page_size, 1024 * 1024, RRDDIM_ALGORITHM_INCREMENTAL);
1898 - rrddim_add(cg->st_pgfaults, "pgmajfault", "swap", -system_page_size, 1024 * 1024, RRDDIM_ALGORITHM_INCREMENTAL);
1897 + rrddim_add(cg->st_pgfaults, "pgfault", NULL, system_page_size, 1024 * 1024, RRD_ALGORITHM_INCREMENTAL);
1898 + rrddim_add(cg->st_pgfaults, "pgmajfault", "swap", -system_page_size, 1024 * 1024, RRD_ALGORITHM_INCREMENTAL);
1899 }
1900 else
1901 rrdset_next(cg->st_pgfaults);
@@ -1913,8 +1913,8 @@ void update_cgroup_charts(int update_every) {
1913 snprintfz(title, CHART_TITLE_MAX, "Used Memory %sfor cgroup %s", (cgroup_used_memory_without_cache && cg->memory.updated_detailed)?"without Cache ":"", cg->chart_title);
1914 cg->st_mem_usage = rrdset_create(type, "mem_usage", NULL, "mem", "cgroup.mem_usage", title, "MB", CHART_PRIORITY_CONTAINERS + 200, update_every, RRDSET_TYPE_STACKED);
1915 }
1916 - rrddim_add(cg->st_mem_usage, "ram", NULL, 1, 1024 * 1024, RRDDIM_ALGORITHM_ABSOLUTE);
1917 - rrddim_add(cg->st_mem_usage, "swap", NULL, 1, 1024 * 1024, RRDDIM_ALGORITHM_ABSOLUTE);
1916 + rrddim_add(cg->st_mem_usage, "ram", NULL, 1, 1024 * 1024, RRD_ALGORITHM_ABSOLUTE);
1917 + rrddim_add(cg->st_mem_usage, "swap", NULL, 1, 1024 * 1024, RRD_ALGORITHM_ABSOLUTE);
1918 }
1919 else
1920 rrdset_next(cg->st_mem_usage);
@@ -1932,7 +1932,7 @@ void update_cgroup_charts(int update_every) {
1932 snprintfz(title, CHART_TITLE_MAX, "Memory Limit Failures for cgroup %s", cg->chart_title);
1933 cg->st_mem_failcnt = rrdset_create(type, "mem_failcnt", NULL, "mem", "cgroup.mem_failcnt", title, "count", CHART_PRIORITY_CONTAINERS + 250, update_every, RRDSET_TYPE_LINE);
1934 }
1935 - rrddim_add(cg->st_mem_failcnt, "failures", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
1935 + rrddim_add(cg->st_mem_failcnt, "failures", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
1936 }
1937 else
1938 rrdset_next(cg->st_mem_failcnt);
@@ -1948,8 +1948,8 @@ void update_cgroup_charts(int update_every) {
1948 snprintfz(title, CHART_TITLE_MAX, "I/O Bandwidth (all disks) for cgroup %s", cg->chart_title);
1949 cg->st_io = rrdset_create(type, "io", NULL, "disk", "cgroup.io", title, "KB/s", CHART_PRIORITY_CONTAINERS + 1200, update_every, RRDSET_TYPE_AREA);
1950 }
1951 - rrddim_add(cg->st_io, "read", NULL, 1, 1024, RRDDIM_ALGORITHM_INCREMENTAL);
1952 - rrddim_add(cg->st_io, "write", NULL, -1, 1024, RRDDIM_ALGORITHM_INCREMENTAL);
1951 + rrddim_add(cg->st_io, "read", NULL, 1, 1024, RRD_ALGORITHM_INCREMENTAL);
1952 + rrddim_add(cg->st_io, "write", NULL, -1, 1024, RRD_ALGORITHM_INCREMENTAL);
1953 }
1954 else
1955 rrdset_next(cg->st_io);
@@ -1967,8 +1967,8 @@ void update_cgroup_charts(int update_every) {
1967 snprintfz(title, CHART_TITLE_MAX, "Serviced I/O Operations (all disks) for cgroup %s", cg->chart_title);
1968 cg->st_serviced_ops = rrdset_create(type, "serviced_ops", NULL, "disk", "cgroup.serviced_ops", title, "operations/s", CHART_PRIORITY_CONTAINERS + 1200, update_every, RRDSET_TYPE_LINE);
1969 }
1970 - rrddim_add(cg->st_serviced_ops, "read", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
1971 - rrddim_add(cg->st_serviced_ops, "write", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
1970 + rrddim_add(cg->st_serviced_ops, "read", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
1971 + rrddim_add(cg->st_serviced_ops, "write", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
1972 }
1973 else
1974 rrdset_next(cg->st_serviced_ops);
@@ -1986,8 +1986,8 @@ void update_cgroup_charts(int update_every) {
1986 snprintfz(title, CHART_TITLE_MAX, "Throttle I/O Bandwidth (all disks) for cgroup %s", cg->chart_title);
1987 cg->st_throttle_io = rrdset_create(type, "throttle_io", NULL, "disk", "cgroup.throttle_io", title, "KB/s", CHART_PRIORITY_CONTAINERS + 1200, update_every, RRDSET_TYPE_AREA);
1988 }
1989 - rrddim_add(cg->st_throttle_io, "read", NULL, 1, 1024, RRDDIM_ALGORITHM_INCREMENTAL);
1990 - rrddim_add(cg->st_throttle_io, "write", NULL, -1, 1024, RRDDIM_ALGORITHM_INCREMENTAL);
1989 + rrddim_add(cg->st_throttle_io, "read", NULL, 1, 1024, RRD_ALGORITHM_INCREMENTAL);
1990 + rrddim_add(cg->st_throttle_io, "write", NULL, -1, 1024, RRD_ALGORITHM_INCREMENTAL);
1991 }
1992 else
1993 rrdset_next(cg->st_throttle_io);
@@ -2005,8 +2005,8 @@ void update_cgroup_charts(int update_every) {
2005 snprintfz(title, CHART_TITLE_MAX, "Throttle Serviced I/O Operations (all disks) for cgroup %s", cg->chart_title);
2006 cg->st_throttle_serviced_ops = rrdset_create(type, "throttle_serviced_ops", NULL, "disk", "cgroup.throttle_serviced_ops", title, "operations/s", CHART_PRIORITY_CONTAINERS + 1200, update_every, RRDSET_TYPE_LINE);
2007 }
2008 - rrddim_add(cg->st_throttle_serviced_ops, "read", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
2009 - rrddim_add(cg->st_throttle_serviced_ops, "write", NULL, -1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
2008 + rrddim_add(cg->st_throttle_serviced_ops, "read", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
2009 + rrddim_add(cg->st_throttle_serviced_ops, "write", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
2010 }
2011 else
2012 rrdset_next(cg->st_throttle_serviced_ops);
@@ -2024,8 +2024,8 @@ void update_cgroup_charts(int update_every) {
2024 snprintfz(title, CHART_TITLE_MAX, "Queued I/O Operations (all disks) for cgroup %s", cg->chart_title);
2025 cg->st_queued_ops = rrdset_create(type, "queued_ops", NULL, "disk", "cgroup.queued_ops", title, "operations", CHART_PRIORITY_CONTAINERS + 2000, update_every, RRDSET_TYPE_LINE);
2026 }
2027 - rrddim_add(cg->st_queued_ops, "read", NULL, 1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
2028 - rrddim_add(cg->st_queued_ops, "write", NULL, -1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
2027 + rrddim_add(cg->st_queued_ops, "read", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
2028 + rrddim_add(cg->st_queued_ops, "write", NULL, -1, 1, RRD_ALGORITHM_ABSOLUTE);
2029 }
2030 else
2031 rrdset_next(cg->st_queued_ops);
@@ -2043,8 +2043,8 @@ void update_cgroup_charts(int update_every) {
2043 snprintfz(title, CHART_TITLE_MAX, "Merged I/O Operations (all disks) for cgroup %s", cg->chart_title);
2044 cg->st_merged_ops = rrdset_create(type, "merged_ops", NULL, "disk", "cgroup.merged_ops", title, "operations/s", CHART_PRIORITY_CONTAINERS + 2100, update_every, RRDSET_TYPE_LINE);
2045 }
2046 - rrddim_add(cg->st_merged_ops, "read", NULL, 1, 1024, RRDDIM_ALGORITHM_INCREMENTAL);
2047 - rrddim_add(cg->st_merged_ops, "write", NULL, -1, 1024, RRDDIM_ALGORITHM_INCREMENTAL);
2046 + rrddim_add(cg->st_merged_ops, "read", NULL, 1, 1024, RRD_ALGORITHM_INCREMENTAL);
2047 + rrddim_add(cg->st_merged_ops, "write", NULL, -1, 1024, RRD_ALGORITHM_INCREMENTAL);
2048 }
2049 else
2050 rrdset_next(cg->st_merged_ops);
@@ -2127,8 +2127,8 @@ void *cgroups_main(void *ptr) {
2127 if(unlikely(!stcpu_thread))
2128 stcpu_thread = rrdset_create("netdata", "plugin_cgroups_cpu", NULL, "cgroups", NULL, "NetData CGroups Plugin CPU usage", "milliseconds/s", 132000, cgroup_update_every, RRDSET_TYPE_STACKED);
2129
2130 - rrddim_add(stcpu_thread, "user", NULL, 1, 1000, RRDDIM_ALGORITHM_INCREMENTAL);
2131 - rrddim_add(stcpu_thread, "system", NULL, 1, 1000, RRDDIM_ALGORITHM_INCREMENTAL);
2130 + rrddim_add(stcpu_thread, "user", NULL, 1, 1000, RRD_ALGORITHM_INCREMENTAL);
2131 + rrddim_add(stcpu_thread, "system", NULL, 1, 1000, RRD_ALGORITHM_INCREMENTAL);
2132 }
2133 else
2134 rrdset_next(stcpu_thread);
src/sys_kernel_mm_ksm.c
+8 -8
@@ -94,11 +94,11 @@ int do_sys_kernel_mm_ksm(int update_every, usec_t dt) {
94 if(!st) {
95 st = rrdset_create("mem", "ksm", NULL, "ksm", NULL, "Kernel Same Page Merging", "MB", 5000, update_every, RRDSET_TYPE_AREA);
96
97 - rrddim_add(st, "shared", NULL, 1, 1024 * 1024, RRDDIM_ALGORITHM_ABSOLUTE);
98 - rrddim_add(st, "unshared", NULL, -1, 1024 * 1024, RRDDIM_ALGORITHM_ABSOLUTE);
99 - rrddim_add(st, "sharing", NULL, 1, 1024 * 1024, RRDDIM_ALGORITHM_ABSOLUTE);
100 - rrddim_add(st, "volatile", NULL, -1, 1024 * 1024, RRDDIM_ALGORITHM_ABSOLUTE);
101 - rrddim_add(st, "to_scan", "to scan", -1, 1024 * 1024, RRDDIM_ALGORITHM_ABSOLUTE);
97 + rrddim_add(st, "shared", NULL, 1, 1024 * 1024, RRD_ALGORITHM_ABSOLUTE);
98 + rrddim_add(st, "unshared", NULL, -1, 1024 * 1024, RRD_ALGORITHM_ABSOLUTE);
99 + rrddim_add(st, "sharing", NULL, 1, 1024 * 1024, RRD_ALGORITHM_ABSOLUTE);
100 + rrddim_add(st, "volatile", NULL, -1, 1024 * 1024, RRD_ALGORITHM_ABSOLUTE);
101 + rrddim_add(st, "to_scan", "to scan", -1, 1024 * 1024, RRD_ALGORITHM_ABSOLUTE);
102 }
103 else rrdset_next(st);
104
@@ -113,8 +113,8 @@ int do_sys_kernel_mm_ksm(int update_every, usec_t dt) {
113 if(!st) {
114 st = rrdset_create("mem", "ksm_savings", NULL, "ksm", NULL, "Kernel Same Page Merging Savings", "MB", 5001, update_every, RRDSET_TYPE_AREA);
115
116 - rrddim_add(st, "savings", NULL, -1, 1024 * 1024, RRDDIM_ALGORITHM_ABSOLUTE);
117 - rrddim_add(st, "offered", NULL, 1, 1024 * 1024, RRDDIM_ALGORITHM_ABSOLUTE);
116 + rrddim_add(st, "savings", NULL, -1, 1024 * 1024, RRD_ALGORITHM_ABSOLUTE);
117 + rrddim_add(st, "offered", NULL, 1, 1024 * 1024, RRD_ALGORITHM_ABSOLUTE);
118 }
119 else rrdset_next(st);
120
@@ -126,7 +126,7 @@ int do_sys_kernel_mm_ksm(int update_every, usec_t dt) {
126 if(!st) {
127 st = rrdset_create("mem", "ksm_ratios", NULL, "ksm", NULL, "Kernel Same Page Merging Effectiveness", "percentage", 5002, update_every, RRDSET_TYPE_LINE);
128
129 - rrddim_add(st, "savings", NULL, 1, 10000, RRDDIM_ALGORITHM_ABSOLUTE);
129 + rrddim_add(st, "savings", NULL, 1, 10000, RRD_ALGORITHM_ABSOLUTE);
130 }
131 else rrdset_next(st);
132
src/unit_test.c
+23 -23
@@ -282,7 +282,7 @@ struct test test1 = {
282 1, // update_every
283 1, // multiplier
284 1, // divisor
285 - RRDDIM_ALGORITHM_ABSOLUTE, // algorithm
285 + RRD_ALGORITHM_ABSOLUTE, // algorithm
286 10, // feed entries
287 9, // result entries
288 test1_feed, // feed
@@ -318,7 +318,7 @@ struct test test2 = {
318 1, // update_every
319 1, // multiplier
320 1, // divisor
321 - RRDDIM_ALGORITHM_ABSOLUTE, // algorithm
321 + RRD_ALGORITHM_ABSOLUTE, // algorithm
322 10, // feed entries
323 9, // result entries
324 test2_feed, // feed
@@ -353,7 +353,7 @@ struct test test3 = {
353 1, // update_every
354 1, // multiplier
355 1, // divisor
356 - RRDDIM_ALGORITHM_INCREMENTAL, // algorithm
356 + RRD_ALGORITHM_INCREMENTAL, // algorithm
357 10, // feed entries
358 9, // result entries
359 test3_feed, // feed
@@ -388,7 +388,7 @@ struct test test4 = {
388 1, // update_every
389 1, // multiplier
390 1, // divisor
391 - RRDDIM_ALGORITHM_INCREMENTAL, // algorithm
391 + RRD_ALGORITHM_INCREMENTAL, // algorithm
392 10, // feed entries
393 9, // result entries
394 test4_feed, // feed
@@ -423,7 +423,7 @@ struct test test5 = {
423 1, // update_every
424 1, // multiplier
425 1, // divisor
426 - RRDDIM_ALGORITHM_INCREMENTAL, // algorithm
426 + RRD_ALGORITHM_INCREMENTAL, // algorithm
427 10, // feed entries
428 9, // result entries
429 test5_feed, // feed
@@ -464,7 +464,7 @@ struct test test6 = {
464 1, // update_every
465 1, // multiplier
466 1, // divisor
467 - RRDDIM_ALGORITHM_INCREMENTAL, // algorithm
467 + RRD_ALGORITHM_INCREMENTAL, // algorithm
468 16, // feed entries
469 4, // result entries
470 test6_feed, // feed
@@ -499,7 +499,7 @@ struct test test7 = {
499 1, // update_every
500 1, // multiplier
501 1, // divisor
502 - RRDDIM_ALGORITHM_INCREMENTAL, // algorithm
502 + RRD_ALGORITHM_INCREMENTAL, // algorithm
503 10, // feed entries
504 18, // result entries
505 test7_feed, // feed
@@ -530,7 +530,7 @@ struct test test8 = {
530 1, // update_every
531 1, // multiplier
532 1, // divisor
533 - RRDDIM_ALGORITHM_ABSOLUTE, // algorithm
533 + RRD_ALGORITHM_ABSOLUTE, // algorithm
534 6, // feed entries
535 10, // result entries
536 test8_feed, // feed
@@ -571,7 +571,7 @@ struct test test9 = {
571 1, // update_every
572 1, // multiplier
573 1, // divisor
574 - RRDDIM_ALGORITHM_ABSOLUTE, // algorithm
574 + RRD_ALGORITHM_ABSOLUTE, // algorithm
575 16, // feed entries
576 4, // result entries
577 test9_feed, // feed
@@ -606,7 +606,7 @@ struct test test10 = {
606 1, // update_every
607 1, // multiplier
608 1, // divisor
609 - RRDDIM_ALGORITHM_INCREMENTAL, // algorithm
609 + RRD_ALGORITHM_INCREMENTAL, // algorithm
610 10, // feed entries
611 7, // result entries
612 test10_feed, // feed
@@ -649,7 +649,7 @@ struct test test11 = {
649 1, // update_every
650 1, // multiplier
651 1, // divisor
652 - RRDDIM_ALGORITHM_PCENT_OVER_DIFF_TOTAL, // algorithm
652 + RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL, // algorithm
653 10, // feed entries
654 9, // result entries
655 test11_feed, // feed
@@ -692,7 +692,7 @@ struct test test12 = {
692 1, // update_every
693 1, // multiplier
694 1, // divisor
695 - RRDDIM_ALGORITHM_PCENT_OVER_DIFF_TOTAL, // algorithm
695 + RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL, // algorithm
696 10, // feed entries
697 9, // result entries
698 test12_feed, // feed
@@ -727,7 +727,7 @@ struct test test13 = {
727 1, // update_every
728 1, // multiplier
729 1, // divisor
730 - RRDDIM_ALGORITHM_PCENT_OVER_DIFF_TOTAL, // algorithm
730 + RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL, // algorithm
731 10, // feed entries
732 7, // result entries
733 test13_feed, // feed
@@ -762,7 +762,7 @@ struct test test14 = {
762 30, // update_every
763 8, // multiplier
764 1000000000, // divisor
765 - RRDDIM_ALGORITHM_INCREMENTAL, // algorithm
765 + RRD_ALGORITHM_INCREMENTAL, // algorithm
766 10, // feed entries
767 8, // result entries
768 test14_feed, // feed
@@ -794,7 +794,7 @@ struct test test14b = {
794 30, // update_every
795 1, // multiplier
796 1, // divisor
797 - RRDDIM_ALGORITHM_INCREMENTAL, // algorithm
797 + RRD_ALGORITHM_INCREMENTAL, // algorithm
798 10, // feed entries
799 8, // result entries
800 test14b_feed, // feed
@@ -826,7 +826,7 @@ struct test test14c = {
826 30, // update_every
827 1, // multiplier
828 1, // divisor
829 - RRDDIM_ALGORITHM_INCREMENTAL, // algorithm
829 + RRD_ALGORITHM_INCREMENTAL, // algorithm
830 10, // feed entries
831 9, // result entries
832 test14c_feed, // feed
@@ -869,7 +869,7 @@ struct test test15 = {
869 1, // update_every
870 8, // multiplier
871 1024, // divisor
872 - RRDDIM_ALGORITHM_INCREMENTAL, // algorithm
872 + RRD_ALGORITHM_INCREMENTAL, // algorithm
873 10, // feed entries
874 9, // result entries
875 test15_feed, // feed
@@ -981,11 +981,11 @@ static int test_variable_renames(void) {
981 fprintf(stderr, "Created chart with id '%s', name '%s'\n", st->id, st->name);
982
983 fprintf(stderr, "Creating dimension DIM1\n");
984 - RRDDIM *rd1 = rrddim_add(st, "DIM1", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
984 + RRDDIM *rd1 = rrddim_add(st, "DIM1", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
985 fprintf(stderr, "Created dimension with id '%s', name '%s'\n", rd1->id, rd1->name);
986
987 fprintf(stderr, "Creating dimension DIM2\n");
988 - RRDDIM *rd2 = rrddim_add(st, "DIM2", NULL, 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
988 + RRDDIM *rd2 = rrddim_add(st, "DIM2", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
989 fprintf(stderr, "Created dimension with id '%s', name '%s'\n", rd2->id, rd2->name);
990
991 fprintf(stderr, "Renaming chart to CHARTNAME1\n");
@@ -1105,10 +1105,10 @@ int unit_test(long delay, long shift)
1105 RRDDIM *rdabst = NULL;
1106 RRDDIM *rdabsi = NULL;
1107
1108 - if(do_abs) rdabs = rrddim_add(st, "absolute", "absolute", 1, 1, RRDDIM_ALGORITHM_ABSOLUTE);
1109 - if(do_inc) rdinc = rrddim_add(st, "incremental", "incremental", 1, 1, RRDDIM_ALGORITHM_INCREMENTAL);
1110 - if(do_abst) rdabst = rrddim_add(st, "percentage-of-absolute-row", "percentage-of-absolute-row", 1, 1, RRDDIM_ALGORITHM_PCENT_OVER_ROW_TOTAL);
1111 - if(do_absi) rdabsi = rrddim_add(st, "percentage-of-incremental-row", "percentage-of-incremental-row", 1, 1, RRDDIM_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
1108 + if(do_abs) rdabs = rrddim_add(st, "absolute", "absolute", 1, 1, RRD_ALGORITHM_ABSOLUTE);
1109 + if(do_inc) rdinc = rrddim_add(st, "incremental", "incremental", 1, 1, RRD_ALGORITHM_INCREMENTAL);
1110 + if(do_abst) rdabst = rrddim_add(st, "percentage-of-absolute-row", "percentage-of-absolute-row", 1, 1, RRD_ALGORITHM_PCENT_OVER_ROW_TOTAL);
1111 + if(do_absi) rdabsi = rrddim_add(st, "percentage-of-incremental-row", "percentage-of-incremental-row", 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
1112
1113 long increment = 1000;
1114 collected_number i = 0;