20
21
bool global_statistics_enabled = true;
22
23
+struct netdata_buffers_statistics netdata_buffers_statistics = {};
24
+
25
+static size_t dbengine_total_memory = 0;
26
+size_t rrddim_db_memory_size = 0;
27
+
28
static struct global_statistics {
29
uint16_t connected_clients;
30
219
}
220
}
221
222
+#define dictionary_stats_memory_total(stats) \
223
+ ((stats).memory.dict + (stats).memory.values + (stats).memory.index)
224
+
225
static void global_statistics_charts(void) {
226
static unsigned long long old_web_requests = 0,
227
old_web_usec = 0,
278
// ----------------------------------------------------------------
279
280
{
273
- static RRDSET *st_uptime = NULL;
274
- static RRDDIM *rd_uptime = NULL;
281
+ static RRDSET *st_memory = NULL;
282
+ static RRDDIM *rd_database = NULL;
283
+ static RRDDIM *rd_collectors = NULL;
284
+ static RRDDIM *rd_hosts = NULL;
285
+ static RRDDIM *rd_rrd = NULL;
286
+ static RRDDIM *rd_contexts = NULL;
287
+ static RRDDIM *rd_health = NULL;
288
+ static RRDDIM *rd_functions = NULL;
289
+ static RRDDIM *rd_labels = NULL;
290
+ static RRDDIM *rd_strings = NULL;
291
+ static RRDDIM *rd_streaming = NULL;
292
+ static RRDDIM *rd_replication = NULL;
293
+ static RRDDIM *rd_buffers = NULL;
294
+ static RRDDIM *rd_workers = NULL;
295
+ static RRDDIM *rd_other = NULL;
296
+
297
+ if (unlikely(!st_memory)) {
298
+ st_memory = rrdset_create_localhost(
299
+ "netdata",
300
+ "memory",
301
+ NULL,
302
+ "netdata",
303
+ NULL,
304
+ "Netdata Memory",
305
+ "bytes",
306
+ "netdata",
307
+ "stats",
308
+ 130100,
309
+ localhost->rrd_update_every,
310
+ RRDSET_TYPE_STACKED);
311
276
- if (unlikely(!st_uptime)) {
277
- st_uptime = rrdset_create_localhost(
312
+ rd_database = rrddim_add(st_memory, "db", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
313
+ rd_collectors = rrddim_add(st_memory, "collectors", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
314
+ rd_hosts = rrddim_add(st_memory, "hosts", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
315
+ rd_rrd = rrddim_add(st_memory, "rrdset rrddim", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
316
+ rd_contexts = rrddim_add(st_memory, "contexts", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
317
+ rd_health = rrddim_add(st_memory, "health", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
318
+ rd_functions = rrddim_add(st_memory, "functions", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
319
+ rd_labels = rrddim_add(st_memory, "labels", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
320
+ rd_strings = rrddim_add(st_memory, "strings", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
321
+ rd_streaming = rrddim_add(st_memory, "streaming", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
322
+ rd_replication = rrddim_add(st_memory, "replication", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
323
+ rd_buffers = rrddim_add(st_memory, "buffers", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
324
+ rd_workers = rrddim_add(st_memory, "workers", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
325
+ rd_other = rrddim_add(st_memory, "other", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
326
+ }
327
+
328
+ size_t buffers =
329
+ netdata_buffers_statistics.query_targets_size +
330
+ netdata_buffers_statistics.rrdset_done_rda_size +
331
+ netdata_buffers_statistics.buffers_aclk +
332
+ netdata_buffers_statistics.buffers_api +
333
+ netdata_buffers_statistics.buffers_functions +
334
+ netdata_buffers_statistics.buffers_sqlite +
335
+ netdata_buffers_statistics.buffers_exporters +
336
+ netdata_buffers_statistics.buffers_health +
337
+ netdata_buffers_statistics.buffers_streaming +
338
+ netdata_buffers_statistics.cbuffers_streaming +
339
+ netdata_buffers_statistics.buffers_web +
340
+ replication_allocated_buffers();
341
+
342
+ size_t strings = 0;
343
+ string_statistics(NULL, NULL, NULL, NULL, NULL, &strings, NULL, NULL);
344
+
345
+ rrddim_set_by_pointer(st_memory, rd_database, (collected_number)dbengine_total_memory + (collected_number)rrddim_db_memory_size);
346
+ rrddim_set_by_pointer(st_memory, rd_collectors, (collected_number)dictionary_stats_memory_total(dictionary_stats_category_collectors));
347
+ rrddim_set_by_pointer(st_memory, rd_hosts, (collected_number)dictionary_stats_memory_total(dictionary_stats_category_rrdhost) + (collected_number)netdata_buffers_statistics.rrdhost_allocations_size);
348
+ rrddim_set_by_pointer(st_memory, rd_rrd, (collected_number)dictionary_stats_memory_total(dictionary_stats_category_rrdset_rrddim));
349
+ rrddim_set_by_pointer(st_memory, rd_contexts, (collected_number)dictionary_stats_memory_total(dictionary_stats_category_rrdcontext));
350
+ rrddim_set_by_pointer(st_memory, rd_health, (collected_number)dictionary_stats_memory_total(dictionary_stats_category_rrdhealth));
351
+ rrddim_set_by_pointer(st_memory, rd_functions, (collected_number)dictionary_stats_memory_total(dictionary_stats_category_functions));
352
+ rrddim_set_by_pointer(st_memory, rd_labels, (collected_number)dictionary_stats_memory_total(dictionary_stats_category_rrdlabels));
353
+ rrddim_set_by_pointer(st_memory, rd_strings, (collected_number)strings);
354
+ rrddim_set_by_pointer(st_memory, rd_streaming, (collected_number)netdata_buffers_statistics.rrdhost_senders + (collected_number)netdata_buffers_statistics.rrdhost_receivers);
355
+ rrddim_set_by_pointer(st_memory, rd_replication, (collected_number)dictionary_stats_memory_total(dictionary_stats_category_replication) + (collected_number)replication_allocated_memory());
356
+ rrddim_set_by_pointer(st_memory, rd_buffers, (collected_number)buffers);
357
+ rrddim_set_by_pointer(st_memory, rd_workers, (collected_number) workers_allocated_memory());
358
+ rrddim_set_by_pointer(st_memory, rd_other, (collected_number)dictionary_stats_memory_total(dictionary_stats_category_other));
359
+
360
+ rrdset_done(st_memory);
361
+ }
362
+
363
+ {
364
+ static RRDSET *st_memory_buffers = NULL;
365
+ static RRDDIM *rd_queries = NULL;
366
+ static RRDDIM *rd_collectors = NULL;
367
+ static RRDDIM *rd_buffers_aclk = NULL;
368
+ static RRDDIM *rd_buffers_api = NULL;
369
+ static RRDDIM *rd_buffers_functions = NULL;
370
+ static RRDDIM *rd_buffers_sqlite = NULL;
371
+ static RRDDIM *rd_buffers_exporters = NULL;
372
+ static RRDDIM *rd_buffers_health = NULL;
373
+ static RRDDIM *rd_buffers_streaming = NULL;
374
+ static RRDDIM *rd_cbuffers_streaming = NULL;
375
+ static RRDDIM *rd_buffers_replication = NULL;
376
+ static RRDDIM *rd_buffers_web = NULL;
377
+
378
+ if (unlikely(!st_memory_buffers)) {
379
+ st_memory_buffers = rrdset_create_localhost(
380
"netdata",
279
- "uptime",
381
+ "memory_buffers",
382
NULL,
383
"netdata",
384
NULL,
283
- "Netdata uptime",
284
- "seconds",
385
+ "Netdata Memory Buffers",
386
+ "bytes",
387
"netdata",
388
"stats",
287
- 130100,
389
+ 130101,
390
localhost->rrd_update_every,
289
- RRDSET_TYPE_LINE);
391
+ RRDSET_TYPE_STACKED);
392
+
393
+ rd_queries = rrddim_add(st_memory_buffers, "queries", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
394
+ rd_collectors = rrddim_add(st_memory_buffers, "collection", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
395
+ rd_buffers_aclk = rrddim_add(st_memory_buffers, "aclk", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
396
+ rd_buffers_api = rrddim_add(st_memory_buffers, "api", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
397
+ rd_buffers_functions = rrddim_add(st_memory_buffers, "functions", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
398
+ rd_buffers_sqlite = rrddim_add(st_memory_buffers, "sqlite", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
399
+ rd_buffers_exporters = rrddim_add(st_memory_buffers, "exporters", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
400
+ rd_buffers_health = rrddim_add(st_memory_buffers, "health", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
401
+ rd_buffers_streaming = rrddim_add(st_memory_buffers, "streaming", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
402
+ rd_cbuffers_streaming = rrddim_add(st_memory_buffers, "streaming cbuf", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
403
+ rd_buffers_replication = rrddim_add(st_memory_buffers, "replication", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
404
+ rd_buffers_web = rrddim_add(st_memory_buffers, "web", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
405
+ }
406
+
407
+ rrddim_set_by_pointer(st_memory_buffers, rd_queries, (collected_number)netdata_buffers_statistics.query_targets_size + (collected_number) onewayalloc_allocated_memory());
408
+ rrddim_set_by_pointer(st_memory_buffers, rd_collectors, (collected_number)netdata_buffers_statistics.rrdset_done_rda_size);
409
+ rrddim_set_by_pointer(st_memory_buffers, rd_buffers_aclk, (collected_number)netdata_buffers_statistics.buffers_aclk);
410
+ rrddim_set_by_pointer(st_memory_buffers, rd_buffers_api, (collected_number)netdata_buffers_statistics.buffers_api);
411
+ rrddim_set_by_pointer(st_memory_buffers, rd_buffers_functions, (collected_number)netdata_buffers_statistics.buffers_functions);
412
+ rrddim_set_by_pointer(st_memory_buffers, rd_buffers_sqlite, (collected_number)netdata_buffers_statistics.buffers_sqlite);
413
+ rrddim_set_by_pointer(st_memory_buffers, rd_buffers_exporters, (collected_number)netdata_buffers_statistics.buffers_exporters);
414
+ rrddim_set_by_pointer(st_memory_buffers, rd_buffers_health, (collected_number)netdata_buffers_statistics.buffers_health);
415
+ rrddim_set_by_pointer(st_memory_buffers, rd_buffers_streaming, (collected_number)netdata_buffers_statistics.buffers_streaming);
416
+ rrddim_set_by_pointer(st_memory_buffers, rd_cbuffers_streaming, (collected_number)netdata_buffers_statistics.cbuffers_streaming);
417
+ rrddim_set_by_pointer(st_memory_buffers, rd_buffers_replication, (collected_number)replication_allocated_buffers());
418
+ rrddim_set_by_pointer(st_memory_buffers, rd_buffers_web, (collected_number)netdata_buffers_statistics.buffers_web);
419
+
420
+ rrdset_done(st_memory_buffers);
421
+ }
422
+
423
+ // ----------------------------------------------------------------
424
+
425
+ {
426
+ static RRDSET *st_uptime = NULL;
427
+ static RRDDIM *rd_uptime = NULL;
428
+
429
+ if (unlikely(!st_uptime)) {
430
+ st_uptime = rrdset_create_localhost(
431
+ "netdata",
432
+ "uptime",
433
+ NULL,
434
+ "netdata",
435
+ NULL,
436
+ "Netdata uptime",
437
+ "seconds",
438
+ "netdata",
439
+ "stats",
440
+ 130150,
441
+ localhost->rrd_update_every,
442
+ RRDSET_TYPE_LINE);
443
444
rd_uptime = rrddim_add(st_uptime, "uptime", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
445
}
1229
1230
{
1231
if (unlikely(!ptrs->st_cache_hit_ratio)) {
1079
- BUFFER *id = buffer_create(100);
1232
+ BUFFER *id = buffer_create(100, NULL);
1233
buffer_sprintf(id, "dbengine_%s_cache_hit_ratio", name);
1234
1082
- BUFFER *family = buffer_create(100);
1235
+ BUFFER *family = buffer_create(100, NULL);
1236
buffer_sprintf(family, "dbengine %s cache", name);
1237
1085
- BUFFER *title = buffer_create(100);
1238
+ BUFFER *title = buffer_create(100, NULL);
1239
buffer_sprintf(title, "Netdata %s Cache Hit Ratio", name);
1240
1241
ptrs->st_cache_hit_ratio = rrdset_create_localhost(
1277
1278
{
1279
if (unlikely(!ptrs->st_operations)) {
1127
- BUFFER *id = buffer_create(100);
1280
+ BUFFER *id = buffer_create(100, NULL);
1281
buffer_sprintf(id, "dbengine_%s_cache_operations", name);
1282
1130
- BUFFER *family = buffer_create(100);
1283
+ BUFFER *family = buffer_create(100, NULL);
1284
buffer_sprintf(family, "dbengine %s cache", name);
1285
1133
- BUFFER *title = buffer_create(100);
1286
+ BUFFER *title = buffer_create(100, NULL);
1287
buffer_sprintf(title, "Netdata %s Cache Operations", name);
1288
1289
ptrs->st_operations = rrdset_create_localhost(
1331
1332
{
1333
if (unlikely(!ptrs->st_pgc_memory)) {
1181
- BUFFER *id = buffer_create(100);
1334
+ BUFFER *id = buffer_create(100, NULL);
1335
buffer_sprintf(id, "dbengine_%s_cache_memory", name);
1336
1184
- BUFFER *family = buffer_create(100);
1337
+ BUFFER *family = buffer_create(100, NULL);
1338
buffer_sprintf(family, "dbengine %s cache", name);
1339
1187
- BUFFER *title = buffer_create(100);
1340
+ BUFFER *title = buffer_create(100, NULL);
1341
buffer_sprintf(title, "Netdata %s Cache Memory", name);
1342
1343
ptrs->st_pgc_memory = rrdset_create_localhost(
1385
1386
{
1387
if (unlikely(!ptrs->st_pgc_tm)) {
1235
- BUFFER *id = buffer_create(100);
1388
+ BUFFER *id = buffer_create(100, NULL);
1389
buffer_sprintf(id, "dbengine_%s_target_memory", name);
1390
1238
- BUFFER *family = buffer_create(100);
1391
+ BUFFER *family = buffer_create(100, NULL);
1392
buffer_sprintf(family, "dbengine %s cache", name);
1393
1241
- BUFFER *title = buffer_create(100);
1394
+ BUFFER *title = buffer_create(100, NULL);
1395
buffer_sprintf(title, "Netdata %s Target Cache Memory", name);
1396
1397
ptrs->st_pgc_tm = rrdset_create_localhost(
1435
1436
{
1437
if (unlikely(!ptrs->st_pgc_pages)) {
1285
- BUFFER *id = buffer_create(100);
1438
+ BUFFER *id = buffer_create(100, NULL);
1439
buffer_sprintf(id, "dbengine_%s_cache_pages", name);
1440
1288
- BUFFER *family = buffer_create(100);
1441
+ BUFFER *family = buffer_create(100, NULL);
1442
buffer_sprintf(family, "dbengine %s cache", name);
1443
1291
- BUFFER *title = buffer_create(100);
1444
+ BUFFER *title = buffer_create(100, NULL);
1445
buffer_sprintf(title, "Netdata %s Cache Pages", name);
1446
1447
ptrs->st_pgc_pages = rrdset_create_localhost(
1479
1480
{
1481
if (unlikely(!ptrs->st_pgc_memory_changes)) {
1329
- BUFFER *id = buffer_create(100);
1482
+ BUFFER *id = buffer_create(100, NULL);
1483
buffer_sprintf(id, "dbengine_%s_cache_memory_changes", name);
1484
1332
- BUFFER *family = buffer_create(100);
1485
+ BUFFER *family = buffer_create(100, NULL);
1486
buffer_sprintf(family, "dbengine %s cache", name);
1487
1335
- BUFFER *title = buffer_create(100);
1488
+ BUFFER *title = buffer_create(100, NULL);
1489
buffer_sprintf(title, "Netdata %s Cache Memory Changes", name);
1490
1491
ptrs->st_pgc_memory_changes = rrdset_create_localhost(
1521
1522
{
1523
if (unlikely(!ptrs->st_pgc_memory_migrations)) {
1371
- BUFFER *id = buffer_create(100);
1524
+ BUFFER *id = buffer_create(100, NULL);
1525
buffer_sprintf(id, "dbengine_%s_cache_memory_migrations", name);
1526
1374
- BUFFER *family = buffer_create(100);
1527
+ BUFFER *family = buffer_create(100, NULL);
1528
buffer_sprintf(family, "dbengine %s cache", name);
1529
1377
- BUFFER *title = buffer_create(100);
1530
+ BUFFER *title = buffer_create(100, NULL);
1531
buffer_sprintf(title, "Netdata %s Cache Memory Migrations", name);
1532
1533
ptrs->st_pgc_memory_migrations = rrdset_create_localhost(
1561
1562
{
1563
if (unlikely(!ptrs->st_pgc_memory_events)) {
1411
- BUFFER *id = buffer_create(100);
1564
+ BUFFER *id = buffer_create(100, NULL);
1565
buffer_sprintf(id, "dbengine_%s_cache_events", name);
1566
1414
- BUFFER *family = buffer_create(100);
1567
+ BUFFER *family = buffer_create(100, NULL);
1568
buffer_sprintf(family, "dbengine %s cache", name);
1569
1417
- BUFFER *title = buffer_create(100);
1570
+ BUFFER *title = buffer_create(100, NULL);
1571
buffer_sprintf(title, "Netdata %s Cache Events", name);
1572
1573
ptrs->st_pgc_memory_events = rrdset_create_localhost(
1603
1604
{
1605
if (unlikely(!ptrs->st_pgc_waste)) {
1453
- BUFFER *id = buffer_create(100);
1606
+ BUFFER *id = buffer_create(100, NULL);
1607
buffer_sprintf(id, "dbengine_%s_waste_events", name);
1608
1456
- BUFFER *family = buffer_create(100);
1609
+ BUFFER *family = buffer_create(100, NULL);
1610
buffer_sprintf(family, "dbengine %s cache", name);
1611
1459
- BUFFER *title = buffer_create(100);
1612
+ BUFFER *title = buffer_create(100, NULL);
1613
buffer_sprintf(title, "Netdata %s Waste Events", name);
1614
1615
ptrs->st_pgc_waste = rrdset_create_localhost(
1655
1656
{
1657
if (unlikely(!ptrs->st_pgc_workers)) {
1505
- BUFFER *id = buffer_create(100);
1658
+ BUFFER *id = buffer_create(100, NULL);
1659
buffer_sprintf(id, "dbengine_%s_cache_workers", name);
1660
1508
- BUFFER *family = buffer_create(100);
1661
+ BUFFER *family = buffer_create(100, NULL);
1662
buffer_sprintf(family, "dbengine %s cache", name);
1663
1511
- BUFFER *title = buffer_create(100);
1664
+ BUFFER *title = buffer_create(100, NULL);
1665
buffer_sprintf(title, "Netdata %s Cache Workers", name);
1666
1667
ptrs->st_pgc_workers = rrdset_create_localhost(
1740
buffers_total_size += buffers.julyl;
1741
#endif
1742
1743
+ dbengine_total_memory = pgc_main_stats.size + pgc_open_stats.size + pgc_extent_stats.size + mrg_stats.size + buffers_total_size;
1744
+
1745
size_t priority = 135000;
1746
1747
{
1775
}
1776
priority++;
1777
1778
+
1779
rrddim_set_by_pointer(st_pgc_memory, rd_pgc_memory_main, (collected_number)pgc_main_stats.size);
1780
rrddim_set_by_pointer(st_pgc_memory, rd_pgc_memory_open, (collected_number)pgc_open_stats.size);
1781
rrddim_set_by_pointer(st_pgc_memory, rd_pgc_memory_extent, (collected_number)pgc_extent_stats.size);
2705
// ---------------------------------------------------------------------------------------------------------------------
2706
// dictionary statistics
2707
2708
+struct dictionary_stats dictionary_stats_category_collectors = { .name = "collectors" };
2709
+struct dictionary_stats dictionary_stats_category_rrdhost = { .name = "rrdhost" };
2710
+struct dictionary_stats dictionary_stats_category_rrdset_rrddim = { .name = "rrdset_rrddim" };
2711
+struct dictionary_stats dictionary_stats_category_rrdcontext = { .name = "context" };
2712
+struct dictionary_stats dictionary_stats_category_rrdlabels = { .name = "labels" };
2713
+struct dictionary_stats dictionary_stats_category_rrdhealth = { .name = "health" };
2714
+struct dictionary_stats dictionary_stats_category_functions = { .name = "functions" };
2715
+struct dictionary_stats dictionary_stats_category_replication = { .name = "replication" };
2716
+
2717
struct dictionary_categories {
2718
struct dictionary_stats *stats;
2719
const char *family;
2759
RRDDIM *rd_spins_delete;
2760
2761
} dictionary_categories[] = {
2597
- { .stats = &dictionary_stats_category_other, "dictionaries", "dictionaries", 900000 },
2762
+ { .stats = &dictionary_stats_category_collectors, "dictionaries collectors", "dictionaries", 900000 },
2763
+ { .stats = &dictionary_stats_category_rrdhost, "dictionaries hosts", "dictionaries", 900000 },
2764
+ { .stats = &dictionary_stats_category_rrdset_rrddim, "dictionaries rrd", "dictionaries", 900000 },
2765
+ { .stats = &dictionary_stats_category_rrdcontext, "dictionaries contexts", "dictionaries", 900000 },
2766
+ { .stats = &dictionary_stats_category_rrdlabels, "dictionaries labels", "dictionaries", 900000 },
2767
+ { .stats = &dictionary_stats_category_rrdhealth, "dictionaries health", "dictionaries", 900000 },
2768
+ { .stats = &dictionary_stats_category_functions, "dictionaries functions", "dictionaries", 900000 },
2769
+ { .stats = &dictionary_stats_category_replication, "dictionaries replication", "dictionaries", 900000 },
2770
+ { .stats = &dictionary_stats_category_other, "dictionaries other", "dictionaries", 900000 },
2771
2772
// terminator
2773
{ .stats = NULL, NULL, NULL, 0 },
2977
// ------------------------------------------------------------------------
2978
2979
total = 0;
2807
- load_dictionary_stats_entry(memory.indexed);
2980
+ load_dictionary_stats_entry(memory.index);
2981
load_dictionary_stats_entry(memory.values);
2982
load_dictionary_stats_entry(memory.dict);
2983
3011
rrdlabels_add(c->st_memory->rrdlabels, "category", stats.name, RRDLABEL_SRC_AUTO);
3012
}
3013
2841
- rrddim_set_by_pointer(c->st_memory, c->rd_memory_indexed, (collected_number)stats.memory.indexed);
3014
+ rrddim_set_by_pointer(c->st_memory, c->rd_memory_indexed, (collected_number)stats.memory.index);
3015
rrddim_set_by_pointer(c->st_memory, c->rd_memory_values, (collected_number)stats.memory.values);
3016
rrddim_set_by_pointer(c->st_memory, c->rd_memory_dict, (collected_number)stats.memory.dict);
3017