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;