@cryptotaxi247 / netdata-1 / commits / 52c2307ed

update netdata global stats and enable them by default (#18001)

Ilya Mashchenko committed Jun 25, 2024 at 10:21 UTC 52c2307ed4224291183199a6802bc783b1c6ca50
2 files changed +217 -275
src/daemon/global_statistics.c
+213 -259
@@ -5,17 +5,18 @@
5 #define GLOBAL_STATS_RESET_WEB_USEC_MAX 0x01
6
7 #define WORKER_JOB_GLOBAL 0
8 -#define WORKER_JOB_REGISTRY 1
9 -#define WORKER_JOB_WORKERS 2
10 -#define WORKER_JOB_DBENGINE 3
11 -#define WORKER_JOB_HEARTBEAT 4
12 -#define WORKER_JOB_STRINGS 5
13 -#define WORKER_JOB_DICTIONARIES 6
14 -#define WORKER_JOB_MALLOC_TRACE 7
15 -#define WORKER_JOB_SQLITE3 8
16 -
17 -#if WORKER_UTILIZATION_MAX_JOB_TYPES < 9
18 -#error WORKER_UTILIZATION_MAX_JOB_TYPES has to be at least 9
8 +#define WORKER_JOB_GLOBAL_EXT 1
9 +#define WORKER_JOB_REGISTRY 2
10 +#define WORKER_JOB_WORKERS 3
11 +#define WORKER_JOB_DBENGINE 4
12 +#define WORKER_JOB_HEARTBEAT 5
13 +#define WORKER_JOB_STRINGS 6
14 +#define WORKER_JOB_DICTIONARIES 7
15 +#define WORKER_JOB_MALLOC_TRACE 8
16 +#define WORKER_JOB_SQLITE3 9
17 +
18 +#if WORKER_UTILIZATION_MAX_JOB_TYPES < 10
19 +#error WORKER_UTILIZATION_MAX_JOB_TYPES has to be at least 10
20 #endif
21
22 bool global_statistics_enabled = true;
@@ -249,13 +250,9 @@ static inline void global_statistics_copy(struct global_statistics *gs, uint8_t
250 ((stats).memory.dict + (stats).memory.values + (stats).memory.index)
251
252 static void global_statistics_charts(void) {
252 - static unsigned long long old_web_requests = 0,
253 - old_web_usec = 0,
254 - old_content_size = 0,
255 - old_compressed_content_size = 0;
253 + static unsigned long long old_web_requests = 0, old_web_usec = 0;
254
257 - static collected_number compression_ratio = -1,
258 - average_response_time = -1;
255 + static collected_number average_response_time = -1;
256
257 static time_t netdata_boottime_time = 0;
258 if (!netdata_boottime_time)
@@ -265,7 +262,6 @@ static void global_statistics_charts(void) {
262 struct global_statistics gs;
263 struct rusage me;
264
268 - struct replication_query_statistics replication = replication_get_query_statistics();
265 global_statistics_copy(&gs, GLOBAL_STATS_RESET_WEB_USEC_MAX);
266 getrusage(RUSAGE_SELF, &me);
267
@@ -301,167 +297,6 @@ static void global_statistics_charts(void) {
297 rrdset_done(st_cpu);
298 }
299
304 - // ----------------------------------------------------------------
305 -
306 - {
307 - static RRDSET *st_memory = NULL;
308 - static RRDDIM *rd_database = NULL;
309 - static RRDDIM *rd_collectors = NULL;
310 - static RRDDIM *rd_hosts = NULL;
311 - static RRDDIM *rd_rrd = NULL;
312 - static RRDDIM *rd_contexts = NULL;
313 - static RRDDIM *rd_health = NULL;
314 - static RRDDIM *rd_functions = NULL;
315 - static RRDDIM *rd_labels = NULL;
316 - static RRDDIM *rd_strings = NULL;
317 - static RRDDIM *rd_streaming = NULL;
318 - static RRDDIM *rd_replication = NULL;
319 - static RRDDIM *rd_buffers = NULL;
320 - static RRDDIM *rd_workers = NULL;
321 - static RRDDIM *rd_aral = NULL;
322 - static RRDDIM *rd_judy = NULL;
323 - static RRDDIM *rd_other = NULL;
324 -
325 - if (unlikely(!st_memory)) {
326 - st_memory = rrdset_create_localhost(
327 - "netdata",
328 - "memory",
329 - NULL,
330 - "netdata",
331 - NULL,
332 - "Netdata Memory",
333 - "bytes",
334 - "netdata",
335 - "stats",
336 - 130100,
337 - localhost->rrd_update_every,
338 - RRDSET_TYPE_STACKED);
339 -
340 - rd_database = rrddim_add(st_memory, "db", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
341 - rd_collectors = rrddim_add(st_memory, "collectors", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
342 - rd_hosts = rrddim_add(st_memory, "hosts", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
343 - rd_rrd = rrddim_add(st_memory, "rrdset rrddim", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
344 - rd_contexts = rrddim_add(st_memory, "contexts", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
345 - rd_health = rrddim_add(st_memory, "health", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
346 - rd_functions = rrddim_add(st_memory, "functions", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
347 - rd_labels = rrddim_add(st_memory, "labels", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
348 - rd_strings = rrddim_add(st_memory, "strings", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
349 - rd_streaming = rrddim_add(st_memory, "streaming", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
350 - rd_replication = rrddim_add(st_memory, "replication", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
351 - rd_buffers = rrddim_add(st_memory, "buffers", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
352 - rd_workers = rrddim_add(st_memory, "workers", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
353 - rd_aral = rrddim_add(st_memory, "aral", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
354 - rd_judy = rrddim_add(st_memory, "judy", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
355 - rd_other = rrddim_add(st_memory, "other", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
356 - }
357 -
358 - size_t buffers =
359 - netdata_buffers_statistics.query_targets_size +
360 - netdata_buffers_statistics.rrdset_done_rda_size +
361 - netdata_buffers_statistics.buffers_aclk +
362 - netdata_buffers_statistics.buffers_api +
363 - netdata_buffers_statistics.buffers_functions +
364 - netdata_buffers_statistics.buffers_sqlite +
365 - netdata_buffers_statistics.buffers_exporters +
366 - netdata_buffers_statistics.buffers_health +
367 - netdata_buffers_statistics.buffers_streaming +
368 - netdata_buffers_statistics.cbuffers_streaming +
369 - netdata_buffers_statistics.buffers_web +
370 - replication_allocated_buffers() +
371 - aral_by_size_overhead() +
372 - judy_aral_overhead();
373 -
374 - size_t strings = 0;
375 - string_statistics(NULL, NULL, NULL, NULL, NULL, &strings, NULL, NULL);
376 -
377 - rrddim_set_by_pointer(st_memory, rd_database, (collected_number)dbengine_total_memory + (collected_number)rrddim_db_memory_size);
378 - rrddim_set_by_pointer(st_memory, rd_collectors, (collected_number)dictionary_stats_memory_total(dictionary_stats_category_collectors));
379 - 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);
380 - rrddim_set_by_pointer(st_memory, rd_rrd, (collected_number)dictionary_stats_memory_total(dictionary_stats_category_rrdset_rrddim));
381 - rrddim_set_by_pointer(st_memory, rd_contexts, (collected_number)dictionary_stats_memory_total(dictionary_stats_category_rrdcontext));
382 - rrddim_set_by_pointer(st_memory, rd_health, (collected_number)dictionary_stats_memory_total(dictionary_stats_category_rrdhealth));
383 - rrddim_set_by_pointer(st_memory, rd_functions, (collected_number)dictionary_stats_memory_total(dictionary_stats_category_functions));
384 - rrddim_set_by_pointer(st_memory, rd_labels, (collected_number)dictionary_stats_memory_total(dictionary_stats_category_rrdlabels));
385 - rrddim_set_by_pointer(st_memory, rd_strings, (collected_number)strings);
386 - rrddim_set_by_pointer(st_memory, rd_streaming, (collected_number)netdata_buffers_statistics.rrdhost_senders + (collected_number)netdata_buffers_statistics.rrdhost_receivers);
387 - rrddim_set_by_pointer(st_memory, rd_replication, (collected_number)dictionary_stats_memory_total(dictionary_stats_category_replication) + (collected_number)replication_allocated_memory());
388 - rrddim_set_by_pointer(st_memory, rd_buffers, (collected_number)buffers);
389 - rrddim_set_by_pointer(st_memory, rd_workers, (collected_number) workers_allocated_memory());
390 - rrddim_set_by_pointer(st_memory, rd_aral, (collected_number) aral_by_size_structures());
391 - rrddim_set_by_pointer(st_memory, rd_judy, (collected_number) judy_aral_structures());
392 - rrddim_set_by_pointer(st_memory, rd_other, (collected_number)dictionary_stats_memory_total(dictionary_stats_category_other));
393 -
394 - rrdset_done(st_memory);
395 - }
396 -
397 - {
398 - static RRDSET *st_memory_buffers = NULL;
399 - static RRDDIM *rd_queries = NULL;
400 - static RRDDIM *rd_collectors = NULL;
401 - static RRDDIM *rd_buffers_aclk = NULL;
402 - static RRDDIM *rd_buffers_api = NULL;
403 - static RRDDIM *rd_buffers_functions = NULL;
404 - static RRDDIM *rd_buffers_sqlite = NULL;
405 - static RRDDIM *rd_buffers_exporters = NULL;
406 - static RRDDIM *rd_buffers_health = NULL;
407 - static RRDDIM *rd_buffers_streaming = NULL;
408 - static RRDDIM *rd_cbuffers_streaming = NULL;
409 - static RRDDIM *rd_buffers_replication = NULL;
410 - static RRDDIM *rd_buffers_web = NULL;
411 - static RRDDIM *rd_buffers_aral = NULL;
412 - static RRDDIM *rd_buffers_judy = NULL;
413 -
414 - if (unlikely(!st_memory_buffers)) {
415 - st_memory_buffers = rrdset_create_localhost(
416 - "netdata",
417 - "memory_buffers",
418 - NULL,
419 - "netdata",
420 - NULL,
421 - "Netdata Memory Buffers",
422 - "bytes",
423 - "netdata",
424 - "stats",
425 - 130101,
426 - localhost->rrd_update_every,
427 - RRDSET_TYPE_STACKED);
428 -
429 - rd_queries = rrddim_add(st_memory_buffers, "queries", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
430 - rd_collectors = rrddim_add(st_memory_buffers, "collection", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
431 - rd_buffers_aclk = rrddim_add(st_memory_buffers, "aclk", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
432 - rd_buffers_api = rrddim_add(st_memory_buffers, "api", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
433 - rd_buffers_functions = rrddim_add(st_memory_buffers, "functions", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
434 - rd_buffers_sqlite = rrddim_add(st_memory_buffers, "sqlite", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
435 - rd_buffers_exporters = rrddim_add(st_memory_buffers, "exporters", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
436 - rd_buffers_health = rrddim_add(st_memory_buffers, "health", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
437 - rd_buffers_streaming = rrddim_add(st_memory_buffers, "streaming", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
438 - rd_cbuffers_streaming = rrddim_add(st_memory_buffers, "streaming cbuf", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
439 - rd_buffers_replication = rrddim_add(st_memory_buffers, "replication", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
440 - rd_buffers_web = rrddim_add(st_memory_buffers, "web", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
441 - rd_buffers_aral = rrddim_add(st_memory_buffers, "aral", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
442 - rd_buffers_judy = rrddim_add(st_memory_buffers, "judy", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
443 - }
444 -
445 - rrddim_set_by_pointer(st_memory_buffers, rd_queries, (collected_number)netdata_buffers_statistics.query_targets_size + (collected_number) onewayalloc_allocated_memory());
446 - rrddim_set_by_pointer(st_memory_buffers, rd_collectors, (collected_number)netdata_buffers_statistics.rrdset_done_rda_size);
447 - rrddim_set_by_pointer(st_memory_buffers, rd_buffers_aclk, (collected_number)netdata_buffers_statistics.buffers_aclk);
448 - rrddim_set_by_pointer(st_memory_buffers, rd_buffers_api, (collected_number)netdata_buffers_statistics.buffers_api);
449 - rrddim_set_by_pointer(st_memory_buffers, rd_buffers_functions, (collected_number)netdata_buffers_statistics.buffers_functions);
450 - rrddim_set_by_pointer(st_memory_buffers, rd_buffers_sqlite, (collected_number)netdata_buffers_statistics.buffers_sqlite);
451 - rrddim_set_by_pointer(st_memory_buffers, rd_buffers_exporters, (collected_number)netdata_buffers_statistics.buffers_exporters);
452 - rrddim_set_by_pointer(st_memory_buffers, rd_buffers_health, (collected_number)netdata_buffers_statistics.buffers_health);
453 - rrddim_set_by_pointer(st_memory_buffers, rd_buffers_streaming, (collected_number)netdata_buffers_statistics.buffers_streaming);
454 - rrddim_set_by_pointer(st_memory_buffers, rd_cbuffers_streaming, (collected_number)netdata_buffers_statistics.cbuffers_streaming);
455 - rrddim_set_by_pointer(st_memory_buffers, rd_buffers_replication, (collected_number)replication_allocated_buffers());
456 - rrddim_set_by_pointer(st_memory_buffers, rd_buffers_web, (collected_number)netdata_buffers_statistics.buffers_web);
457 - rrddim_set_by_pointer(st_memory_buffers, rd_buffers_aral, (collected_number)aral_by_size_overhead());
458 - rrddim_set_by_pointer(st_memory_buffers, rd_buffers_judy, (collected_number)judy_aral_overhead());
459 -
460 - rrdset_done(st_memory_buffers);
461 - }
462 -
463 - // ----------------------------------------------------------------
464 -
300 {
301 static RRDSET *st_uptime = NULL;
302 static RRDDIM *rd_uptime = NULL;
@@ -624,9 +459,174 @@ static void global_statistics_charts(void) {
459
460 rrddim_set_by_pointer(st_duration, rd_max, ((gs.web_usec_max)?(collected_number)gs.web_usec_max:average_response_time));
461 rrdset_done(st_duration);
462 + }
463 +}
464 +
465 +static void global_statistics_extended_charts(void) {
466 + static unsigned long long old_content_size = 0, old_compressed_content_size = 0;
467 + static collected_number compression_ratio = -1;
468 +
469 + struct global_statistics gs;
470 + struct replication_query_statistics replication = replication_get_query_statistics();
471 + global_statistics_copy(&gs, GLOBAL_STATS_RESET_WEB_USEC_MAX);
472 +
473 + {
474 + static RRDSET *st_memory = NULL;
475 + static RRDDIM *rd_database = NULL;
476 + static RRDDIM *rd_collectors = NULL;
477 + static RRDDIM *rd_hosts = NULL;
478 + static RRDDIM *rd_rrd = NULL;
479 + static RRDDIM *rd_contexts = NULL;
480 + static RRDDIM *rd_health = NULL;
481 + static RRDDIM *rd_functions = NULL;
482 + static RRDDIM *rd_labels = NULL;
483 + static RRDDIM *rd_strings = NULL;
484 + static RRDDIM *rd_streaming = NULL;
485 + static RRDDIM *rd_replication = NULL;
486 + static RRDDIM *rd_buffers = NULL;
487 + static RRDDIM *rd_workers = NULL;
488 + static RRDDIM *rd_aral = NULL;
489 + static RRDDIM *rd_judy = NULL;
490 + static RRDDIM *rd_other = NULL;
491 +
492 + if (unlikely(!st_memory)) {
493 + st_memory = rrdset_create_localhost(
494 + "netdata",
495 + "memory",
496 + NULL,
497 + "netdata",
498 + NULL,
499 + "Netdata Memory",
500 + "bytes",
501 + "netdata",
502 + "stats",
503 + 130100,
504 + localhost->rrd_update_every,
505 + RRDSET_TYPE_STACKED);
506 +
507 + rd_database = rrddim_add(st_memory, "db", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
508 + rd_collectors = rrddim_add(st_memory, "collectors", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
509 + rd_hosts = rrddim_add(st_memory, "hosts", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
510 + rd_rrd = rrddim_add(st_memory, "rrdset rrddim", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
511 + rd_contexts = rrddim_add(st_memory, "contexts", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
512 + rd_health = rrddim_add(st_memory, "health", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
513 + rd_functions = rrddim_add(st_memory, "functions", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
514 + rd_labels = rrddim_add(st_memory, "labels", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
515 + rd_strings = rrddim_add(st_memory, "strings", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
516 + rd_streaming = rrddim_add(st_memory, "streaming", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
517 + rd_replication = rrddim_add(st_memory, "replication", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
518 + rd_buffers = rrddim_add(st_memory, "buffers", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
519 + rd_workers = rrddim_add(st_memory, "workers", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
520 + rd_aral = rrddim_add(st_memory, "aral", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
521 + rd_judy = rrddim_add(st_memory, "judy", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
522 + rd_other = rrddim_add(st_memory, "other", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
523 + }
524 +
525 + size_t buffers =
526 + netdata_buffers_statistics.query_targets_size +
527 + netdata_buffers_statistics.rrdset_done_rda_size +
528 + netdata_buffers_statistics.buffers_aclk +
529 + netdata_buffers_statistics.buffers_api +
530 + netdata_buffers_statistics.buffers_functions +
531 + netdata_buffers_statistics.buffers_sqlite +
532 + netdata_buffers_statistics.buffers_exporters +
533 + netdata_buffers_statistics.buffers_health +
534 + netdata_buffers_statistics.buffers_streaming +
535 + netdata_buffers_statistics.cbuffers_streaming +
536 + netdata_buffers_statistics.buffers_web +
537 + replication_allocated_buffers() +
538 + aral_by_size_overhead() +
539 + judy_aral_overhead();
540 +
541 + size_t strings = 0;
542 + string_statistics(NULL, NULL, NULL, NULL, NULL, &strings, NULL, NULL);
543 +
544 + rrddim_set_by_pointer(st_memory, rd_database, (collected_number)dbengine_total_memory + (collected_number)rrddim_db_memory_size);
545 + rrddim_set_by_pointer(st_memory, rd_collectors, (collected_number)dictionary_stats_memory_total(dictionary_stats_category_collectors));
546 + 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);
547 + rrddim_set_by_pointer(st_memory, rd_rrd, (collected_number)dictionary_stats_memory_total(dictionary_stats_category_rrdset_rrddim));
548 + rrddim_set_by_pointer(st_memory, rd_contexts, (collected_number)dictionary_stats_memory_total(dictionary_stats_category_rrdcontext));
549 + rrddim_set_by_pointer(st_memory, rd_health, (collected_number)dictionary_stats_memory_total(dictionary_stats_category_rrdhealth));
550 + rrddim_set_by_pointer(st_memory, rd_functions, (collected_number)dictionary_stats_memory_total(dictionary_stats_category_functions));
551 + rrddim_set_by_pointer(st_memory, rd_labels, (collected_number)dictionary_stats_memory_total(dictionary_stats_category_rrdlabels));
552 + rrddim_set_by_pointer(st_memory, rd_strings, (collected_number)strings);
553 + rrddim_set_by_pointer(st_memory, rd_streaming, (collected_number)netdata_buffers_statistics.rrdhost_senders + (collected_number)netdata_buffers_statistics.rrdhost_receivers);
554 + rrddim_set_by_pointer(st_memory, rd_replication, (collected_number)dictionary_stats_memory_total(dictionary_stats_category_replication) + (collected_number)replication_allocated_memory());
555 + rrddim_set_by_pointer(st_memory, rd_buffers, (collected_number)buffers);
556 + rrddim_set_by_pointer(st_memory, rd_workers, (collected_number) workers_allocated_memory());
557 + rrddim_set_by_pointer(st_memory, rd_aral, (collected_number) aral_by_size_structures());
558 + rrddim_set_by_pointer(st_memory, rd_judy, (collected_number) judy_aral_structures());
559 + rrddim_set_by_pointer(st_memory, rd_other, (collected_number)dictionary_stats_memory_total(dictionary_stats_category_other));
560 +
561 + rrdset_done(st_memory);
562 + }
563 +
564 + {
565 + static RRDSET *st_memory_buffers = NULL;
566 + static RRDDIM *rd_queries = NULL;
567 + static RRDDIM *rd_collectors = NULL;
568 + static RRDDIM *rd_buffers_aclk = NULL;
569 + static RRDDIM *rd_buffers_api = NULL;
570 + static RRDDIM *rd_buffers_functions = NULL;
571 + static RRDDIM *rd_buffers_sqlite = NULL;
572 + static RRDDIM *rd_buffers_exporters = NULL;
573 + static RRDDIM *rd_buffers_health = NULL;
574 + static RRDDIM *rd_buffers_streaming = NULL;
575 + static RRDDIM *rd_cbuffers_streaming = NULL;
576 + static RRDDIM *rd_buffers_replication = NULL;
577 + static RRDDIM *rd_buffers_web = NULL;
578 + static RRDDIM *rd_buffers_aral = NULL;
579 + static RRDDIM *rd_buffers_judy = NULL;
580 +
581 + if (unlikely(!st_memory_buffers)) {
582 + st_memory_buffers = rrdset_create_localhost(
583 + "netdata",
584 + "memory_buffers",
585 + NULL,
586 + "netdata",
587 + NULL,
588 + "Netdata Memory Buffers",
589 + "bytes",
590 + "netdata",
591 + "stats",
592 + 130101,
593 + localhost->rrd_update_every,
594 + RRDSET_TYPE_STACKED);
595 +
596 + rd_queries = rrddim_add(st_memory_buffers, "queries", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
597 + rd_collectors = rrddim_add(st_memory_buffers, "collection", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
598 + rd_buffers_aclk = rrddim_add(st_memory_buffers, "aclk", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
599 + rd_buffers_api = rrddim_add(st_memory_buffers, "api", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
600 + rd_buffers_functions = rrddim_add(st_memory_buffers, "functions", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
601 + rd_buffers_sqlite = rrddim_add(st_memory_buffers, "sqlite", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
602 + rd_buffers_exporters = rrddim_add(st_memory_buffers, "exporters", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
603 + rd_buffers_health = rrddim_add(st_memory_buffers, "health", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
604 + rd_buffers_streaming = rrddim_add(st_memory_buffers, "streaming", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
605 + rd_cbuffers_streaming = rrddim_add(st_memory_buffers, "streaming cbuf", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
606 + rd_buffers_replication = rrddim_add(st_memory_buffers, "replication", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
607 + rd_buffers_web = rrddim_add(st_memory_buffers, "web", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
608 + rd_buffers_aral = rrddim_add(st_memory_buffers, "aral", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
609 + rd_buffers_judy = rrddim_add(st_memory_buffers, "judy", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
610 + }
611 +
612 + rrddim_set_by_pointer(st_memory_buffers, rd_queries, (collected_number)netdata_buffers_statistics.query_targets_size + (collected_number) onewayalloc_allocated_memory());
613 + rrddim_set_by_pointer(st_memory_buffers, rd_collectors, (collected_number)netdata_buffers_statistics.rrdset_done_rda_size);
614 + rrddim_set_by_pointer(st_memory_buffers, rd_buffers_aclk, (collected_number)netdata_buffers_statistics.buffers_aclk);
615 + rrddim_set_by_pointer(st_memory_buffers, rd_buffers_api, (collected_number)netdata_buffers_statistics.buffers_api);
616 + rrddim_set_by_pointer(st_memory_buffers, rd_buffers_functions, (collected_number)netdata_buffers_statistics.buffers_functions);
617 + rrddim_set_by_pointer(st_memory_buffers, rd_buffers_sqlite, (collected_number)netdata_buffers_statistics.buffers_sqlite);
618 + rrddim_set_by_pointer(st_memory_buffers, rd_buffers_exporters, (collected_number)netdata_buffers_statistics.buffers_exporters);
619 + rrddim_set_by_pointer(st_memory_buffers, rd_buffers_health, (collected_number)netdata_buffers_statistics.buffers_health);
620 + rrddim_set_by_pointer(st_memory_buffers, rd_buffers_streaming, (collected_number)netdata_buffers_statistics.buffers_streaming);
621 + rrddim_set_by_pointer(st_memory_buffers, rd_cbuffers_streaming, (collected_number)netdata_buffers_statistics.cbuffers_streaming);
622 + rrddim_set_by_pointer(st_memory_buffers, rd_buffers_replication, (collected_number)replication_allocated_buffers());
623 + rrddim_set_by_pointer(st_memory_buffers, rd_buffers_web, (collected_number)netdata_buffers_statistics.buffers_web);
624 + rrddim_set_by_pointer(st_memory_buffers, rd_buffers_aral, (collected_number)aral_by_size_overhead());
625 + rrddim_set_by_pointer(st_memory_buffers, rd_buffers_judy, (collected_number)judy_aral_overhead());
626 +
627 + rrdset_done(st_memory_buffers);
628 }
629
629 - // ----------------------------------------------------------------
630
631 {
632 static RRDSET *st_compression = NULL;
@@ -671,8 +671,6 @@ static void global_statistics_charts(void) {
671 rrdset_done(st_compression);
672 }
673
674 - // ----------------------------------------------------------------
675 -
674 {
675 static RRDSET *st_queries = NULL;
676 static RRDDIM *rd_api_data_queries = NULL;
@@ -722,8 +720,6 @@ static void global_statistics_charts(void) {
720 rrdset_done(st_queries);
721 }
722
725 - // ----------------------------------------------------------------
726 -
723 {
724 static RRDSET *st_points_read = NULL;
725 static RRDDIM *rd_api_data_points_read = NULL;
@@ -773,8 +769,6 @@ static void global_statistics_charts(void) {
769 rrdset_done(st_points_read);
770 }
771
776 - // ----------------------------------------------------------------
777 -
772 if(gs.api_data_result_points_generated || replication.points_generated) {
773 static RRDSET *st_points_generated = NULL;
774 static RRDDIM *rd_api_data_points_generated = NULL;
@@ -818,7 +812,7 @@ static void global_statistics_charts(void) {
812 rrdset_done(st_points_generated);
813 }
814
821 - // ----------------------------------------------------------------
815 + ml_update_global_statistics_charts(gs.ml_models_consulted);
816
817 {
818 static RRDSET *st_points_stored = NULL;
@@ -853,10 +847,6 @@ static void global_statistics_charts(void) {
847 rrdset_done(st_points_stored);
848 }
849
856 - ml_update_global_statistics_charts(gs.ml_models_consulted);
857 -
858 - // ----------------------------------------------------------------
859 -
850 #ifdef ENABLE_DBENGINE
851 if (tier_page_type[0] == RRDENG_PAGE_TYPE_GORILLA_32BIT)
852 {
@@ -921,7 +911,6 @@ static void global_statistics_charts(void) {
911 }
912 #endif
913 }
924 -
914 // ----------------------------------------------------------------------------
915 // sqlite3 statistics
916
@@ -4203,6 +4192,7 @@ static void worker_utilization_finish(void) {
4192 static void global_statistics_register_workers(void) {
4193 worker_register("STATS");
4194 worker_register_job_name(WORKER_JOB_GLOBAL, "global");
4195 + worker_register_job_name(WORKER_JOB_GLOBAL_EXT, "global_ext");
4196 worker_register_job_name(WORKER_JOB_REGISTRY, "registry");
4197 worker_register_job_name(WORKER_JOB_DBENGINE, "dbengine");
4198 worker_register_job_name(WORKER_JOB_STRINGS, "strings");
@@ -4250,32 +4240,6 @@ void *global_statistics_main(void *ptr)
4240
4241 worker_is_busy(WORKER_JOB_GLOBAL);
4242 global_statistics_charts();
4253 -
4254 - worker_is_busy(WORKER_JOB_REGISTRY);
4255 - registry_statistics();
4256 -
4257 -#ifdef ENABLE_DBENGINE
4258 - if(dbengine_enabled) {
4259 - worker_is_busy(WORKER_JOB_DBENGINE);
4260 - dbengine2_statistics_charts();
4261 - }
4262 -#endif
4263 -
4264 - worker_is_busy(WORKER_JOB_HEARTBEAT);
4265 - update_heartbeat_charts();
4266 -
4267 - worker_is_busy(WORKER_JOB_STRINGS);
4268 - update_strings_charts();
4269 -
4270 -#ifdef DICT_WITH_STATS
4271 - worker_is_busy(WORKER_JOB_DICTIONARIES);
4272 - dictionary_statistics();
4273 -#endif
4274 -
4275 -#ifdef NETDATA_TRACE_ALLOCATIONS
4276 - worker_is_busy(WORKER_JOB_MALLOC_TRACE);
4277 - malloc_trace_statistics();
4278 -#endif
4243 }
4244
4245 return NULL;
@@ -4283,12 +4247,13 @@ void *global_statistics_main(void *ptr)
4247
4248
4249 // ---------------------------------------------------------------------------------------------------------------------
4286 -// workers thread
4250 +// global statistics extended thread
4251
4288 -static void global_statistics_workers_cleanup(void *pptr)
4252 +static void global_statistics_extended_cleanup(void *pptr)
4253 {
4254 struct netdata_static_thread *static_thread = CLEANUP_FUNCTION_GET_PTR(pptr);
4291 - if(!static_thread) return;
4255 + if (!static_thread)
4256 + return;
4257
4258 static_thread->enabled = NETDATA_MAIN_THREAD_EXITING;
4259
@@ -4300,14 +4265,14 @@ static void global_statistics_workers_cleanup(void *pptr)
4265 static_thread->enabled = NETDATA_MAIN_THREAD_EXITED;
4266 }
4267
4303 -void *global_statistics_workers_main(void *ptr)
4268 +void *global_statistics_extended_main(void *ptr)
4269 {
4305 - CLEANUP_FUNCTION_REGISTER(global_statistics_workers_cleanup) cleanup_ptr = ptr;
4270 + CLEANUP_FUNCTION_REGISTER(global_statistics_extended_cleanup) cleanup_ptr = ptr;
4271
4272 global_statistics_register_workers();
4273
4274 int update_every =
4310 - (int)config_get_number(CONFIG_SECTION_GLOBAL_STATISTICS, "update every", localhost->rrd_update_every);
4275 + (int)config_get_number(CONFIG_SECTION_GLOBAL_STATISTICS, "update every", localhost->rrd_update_every);
4276 if (update_every < localhost->rrd_update_every)
4277 update_every = localhost->rrd_update_every;
4278
@@ -4319,47 +4284,37 @@ void *global_statistics_workers_main(void *ptr)
4284 worker_is_idle();
4285 heartbeat_next(&hb, step);
4286
4322 - worker_is_busy(WORKER_JOB_WORKERS);
4323 - worker_utilization_charts();
4324 - }
4325 -
4326 - return NULL;
4327 -}
4328 -
4329 -// ---------------------------------------------------------------------------------------------------------------------
4330 -// sqlite3 thread
4331 -
4332 -static void global_statistics_sqlite3_cleanup(void *pptr)
4333 -{
4334 - struct netdata_static_thread *static_thread = CLEANUP_FUNCTION_GET_PTR(pptr);
4335 - if(!static_thread) return;
4336 -
4337 - static_thread->enabled = NETDATA_MAIN_THREAD_EXITING;
4287 + worker_is_busy(WORKER_JOB_HEARTBEAT);
4288 + update_heartbeat_charts();
4289
4339 - worker_unregister();
4340 - netdata_log_info("cleaning up...");
4290 + worker_is_busy(WORKER_JOB_GLOBAL_EXT);
4291 + global_statistics_extended_charts();
4292
4342 - static_thread->enabled = NETDATA_MAIN_THREAD_EXITED;
4343 -}
4293 +#ifdef ENABLE_DBENGINE
4294 + if(dbengine_enabled) {
4295 + worker_is_busy(WORKER_JOB_DBENGINE);
4296 + dbengine2_statistics_charts();
4297 + }
4298 +#endif
4299
4345 -void *global_statistics_sqlite3_main(void *ptr)
4346 -{
4347 - CLEANUP_FUNCTION_REGISTER(global_statistics_sqlite3_cleanup) cleanup_ptr = ptr;
4300 + worker_is_busy(WORKER_JOB_REGISTRY);
4301 + registry_statistics();
4302
4349 - global_statistics_register_workers();
4303 + worker_is_busy(WORKER_JOB_STRINGS);
4304 + update_strings_charts();
4305
4351 - int update_every =
4352 - (int)config_get_number(CONFIG_SECTION_GLOBAL_STATISTICS, "update every", localhost->rrd_update_every);
4353 - if (update_every < localhost->rrd_update_every)
4354 - update_every = localhost->rrd_update_every;
4306 +#ifdef DICT_WITH_STATS
4307 + worker_is_busy(WORKER_JOB_DICTIONARIES);
4308 + dictionary_statistics();
4309 +#endif
4310
4356 - usec_t step = update_every * USEC_PER_SEC;
4357 - heartbeat_t hb;
4358 - heartbeat_init(&hb);
4311 +#ifdef NETDATA_TRACE_ALLOCATIONS
4312 + worker_is_busy(WORKER_JOB_MALLOC_TRACE);
4313 + malloc_trace_statistics();
4314 +#endif
4315
4360 - while (service_running(SERVICE_COLLECTORS)) {
4361 - worker_is_idle();
4362 - heartbeat_next(&hb, step);
4316 + worker_is_busy(WORKER_JOB_WORKERS);
4317 + worker_utilization_charts();
4318
4319 worker_is_busy(WORKER_JOB_SQLITE3);
4320 sqlite3_statistics_charts();
@@ -4367,4 +4322,3 @@ void *global_statistics_sqlite3_main(void *ptr)
4322
4323 return NULL;
4324 }
4370 -
src/daemon/static_threads.c
+4 -16
@@ -6,8 +6,7 @@ void *aclk_main(void *ptr);
6 void *analytics_main(void *ptr);
7 void *cpuidlejitter_main(void *ptr);
8 void *global_statistics_main(void *ptr);
9 -void *global_statistics_workers_main(void *ptr);
10 -void *global_statistics_sqlite3_main(void *ptr);
9 +void *global_statistics_extended_main(void *ptr);
10 void *health_main(void *ptr);
11 void *pluginsd_main(void *ptr);
12 void *service_main(void *ptr);
@@ -51,24 +50,13 @@ const struct netdata_static_thread static_threads_common[] = {
50 .config_name = "netdata monitoring",
51 .env_name = "NETDATA_INTERNALS_MONITORING",
52 .global_variable = &global_statistics_enabled,
54 - .enabled = 0,
53 + .enabled = 1,
54 .thread = NULL,
55 .init_routine = NULL,
56 .start_routine = global_statistics_main
57 },
58 {
60 - .name = "STATS_WORKERS",
61 - .config_section = CONFIG_SECTION_PLUGINS,
62 - .config_name = "netdata monitoring extended",
63 - .env_name = "NETDATA_INTERNALS_EXTENDED_MONITORING",
64 - .global_variable = &global_statistics_enabled,
65 - .enabled = 0, // this is ignored - check main() for "netdata monitoring extended"
66 - .thread = NULL,
67 - .init_routine = NULL,
68 - .start_routine = global_statistics_workers_main
69 - },
70 - {
71 - .name = "STATS_SQLITE3",
59 + .name = "STATS_GLOBAL_EXT",
60 .config_section = CONFIG_SECTION_PLUGINS,
61 .config_name = "netdata monitoring extended",
62 .env_name = "NETDATA_INTERNALS_EXTENDED_MONITORING",
@@ -76,7 +64,7 @@ const struct netdata_static_thread static_threads_common[] = {
64 .enabled = 0, // this is ignored - check main() for "netdata monitoring extended"
65 .thread = NULL,
66 .init_routine = NULL,
79 - .start_routine = global_statistics_sqlite3_main
67 + .start_routine = global_statistics_extended_main
68 },
69 {
70 .name = "PLUGINSD",