@cryptotaxi247 / netdata-1 / commits / 2655a4892

Additional sqlite statistics (#13668)

* Add sqlite page cache hit/ miss statistics * Proper function calls Co-authored-by: Vladimir Kobal <vlad@prokk.net> * Additional sqlite statistics Co-authored-by: Vladimir Kobal <vlad@prokk.net>

Stelios Fragkakis committed Sep 15, 2022 at 17:29 UTC 2655a48922c91e2302ddcb7cd9f1ad86bffd15c7
1 file changed +69 -11
daemon/global_statistics.c
+69 -11
@@ -38,8 +38,14 @@ static struct global_statistics {
38 volatile uint64_t sqlite3_queries_failed_busy;
39 volatile uint64_t sqlite3_queries_failed_locked;
40 volatile uint64_t sqlite3_rows;
41 - volatile uint64_t sqlite3_cache_hit;
42 - volatile uint64_t sqlite3_cache_miss;
41 + volatile uint64_t sqlite3_metadata_cache_hit;
42 + volatile uint64_t sqlite3_context_cache_hit;
43 + volatile uint64_t sqlite3_metadata_cache_miss;
44 + volatile uint64_t sqlite3_context_cache_miss;
45 + volatile uint64_t sqlite3_metadata_cache_spill;
46 + volatile uint64_t sqlite3_context_cache_spill;
47 + volatile uint64_t sqlite3_metadata_cache_write;
48 + volatile uint64_t sqlite3_context_cache_write;
49
50 } global_statistics = {
51 .connected_clients = 0,
@@ -137,10 +143,17 @@ static inline void global_statistics_copy(struct global_statistics *gs, uint8_t
143 gs->sqlite3_queries_failed_locked = __atomic_load_n(&global_statistics.sqlite3_queries_failed_locked, __ATOMIC_RELAXED);
144 gs->sqlite3_rows = __atomic_load_n(&global_statistics.sqlite3_rows, __ATOMIC_RELAXED);
145
140 - gs->sqlite3_cache_hit = (uint64_t) sql_context_cache_stats(SQLITE_DBSTATUS_CACHE_HIT);
141 - gs->sqlite3_cache_hit += (uint64_t) sql_metadata_cache_stats(SQLITE_DBSTATUS_CACHE_HIT);
142 - gs->sqlite3_cache_miss = (uint64_t) sql_context_cache_stats(SQLITE_DBSTATUS_CACHE_MISS);
143 - gs->sqlite3_cache_miss += (uint64_t) sql_metadata_cache_stats(SQLITE_DBSTATUS_CACHE_MISS);
146 + gs->sqlite3_metadata_cache_hit = (uint64_t) sql_metadata_cache_stats(SQLITE_DBSTATUS_CACHE_HIT);
147 + gs->sqlite3_context_cache_hit = (uint64_t) sql_context_cache_stats(SQLITE_DBSTATUS_CACHE_HIT);
148 +
149 + gs->sqlite3_metadata_cache_miss = (uint64_t) sql_metadata_cache_stats(SQLITE_DBSTATUS_CACHE_MISS);
150 + gs->sqlite3_context_cache_miss = (uint64_t) sql_context_cache_stats(SQLITE_DBSTATUS_CACHE_MISS);
151 +
152 + gs->sqlite3_metadata_cache_spill = (uint64_t) sql_metadata_cache_stats(SQLITE_DBSTATUS_CACHE_SPILL);
153 + gs->sqlite3_context_cache_spill = (uint64_t) sql_context_cache_stats(SQLITE_DBSTATUS_CACHE_SPILL);
154 +
155 + gs->sqlite3_metadata_cache_write = (uint64_t) sql_metadata_cache_stats(SQLITE_DBSTATUS_CACHE_WRITE);
156 + gs->sqlite3_context_cache_write = (uint64_t) sql_context_cache_stats(SQLITE_DBSTATUS_CACHE_WRITE);
157 }
158
159 static void global_statistics_charts(void) {
@@ -588,19 +601,21 @@ static void global_statistics_charts(void) {
601 rrdset_done(st_sqlite3_rows);
602 }
603
591 - if(gs.sqlite3_cache_hit) {
604 + if(gs.sqlite3_metadata_cache_hit) {
605 static RRDSET *st_sqlite3_cache = NULL;
606 static RRDDIM *rd_cache_hit = NULL;
607 static RRDDIM *rd_cache_miss= NULL;
608 + static RRDDIM *rd_cache_spill= NULL;
609 + static RRDDIM *rd_cache_write= NULL;
610
611 if (unlikely(!st_sqlite3_cache)) {
612 st_sqlite3_cache = rrdset_create_localhost(
613 "netdata"
599 - , "sqlite3_cache"
614 + , "sqlite3_metatada_cache"
615 , NULL
616 , "sqlite3"
617 , NULL
603 - , "Netdata SQLite3 Cache"
618 + , "Netdata SQLite3 metadata cache"
619 , "ops/s"
620 , "netdata"
621 , "stats"
@@ -611,12 +626,55 @@ static void global_statistics_charts(void) {
626
627 rd_cache_hit = rrddim_add(st_sqlite3_cache, "cache_hit", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
628 rd_cache_miss = rrddim_add(st_sqlite3_cache, "cache_miss", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
629 + rd_cache_spill = rrddim_add(st_sqlite3_cache, "cache_spill", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
630 + rd_cache_write = rrddim_add(st_sqlite3_cache, "cache_write", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
631 + }
632 + else
633 + rrdset_next(st_sqlite3_cache);
634 +
635 + rrddim_set_by_pointer(st_sqlite3_cache, rd_cache_hit, (collected_number)gs.sqlite3_metadata_cache_hit);
636 + rrddim_set_by_pointer(st_sqlite3_cache, rd_cache_miss, (collected_number)gs.sqlite3_metadata_cache_miss);
637 + rrddim_set_by_pointer(st_sqlite3_cache, rd_cache_spill, (collected_number)gs.sqlite3_metadata_cache_spill);
638 + rrddim_set_by_pointer(st_sqlite3_cache, rd_cache_write, (collected_number)gs.sqlite3_metadata_cache_write);
639 +
640 + rrdset_done(st_sqlite3_cache);
641 + }
642 +
643 + if(gs.sqlite3_context_cache_hit) {
644 + static RRDSET *st_sqlite3_cache = NULL;
645 + static RRDDIM *rd_cache_hit = NULL;
646 + static RRDDIM *rd_cache_miss= NULL;
647 + static RRDDIM *rd_cache_spill= NULL;
648 + static RRDDIM *rd_cache_write= NULL;
649 +
650 + if (unlikely(!st_sqlite3_cache)) {
651 + st_sqlite3_cache = rrdset_create_localhost(
652 + "netdata"
653 + , "sqlite3_context_cache"
654 + , NULL
655 + , "sqlite3"
656 + , NULL
657 + , "Netdata SQLite3 context cache"
658 + , "ops/s"
659 + , "netdata"
660 + , "stats"
661 + , 131104
662 + , localhost->rrd_update_every
663 + , RRDSET_TYPE_LINE
664 + );
665 +
666 + rd_cache_hit = rrddim_add(st_sqlite3_cache, "cache_hit", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
667 + rd_cache_miss = rrddim_add(st_sqlite3_cache, "cache_miss", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
668 + rd_cache_spill = rrddim_add(st_sqlite3_cache, "cache_spill", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
669 + rd_cache_write = rrddim_add(st_sqlite3_cache, "cache_write", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
670 }
671 else
672 rrdset_next(st_sqlite3_cache);
673
618 - rrddim_set_by_pointer(st_sqlite3_cache, rd_cache_hit, (collected_number)gs.sqlite3_cache_hit);
619 - rrddim_set_by_pointer(st_sqlite3_cache, rd_cache_miss, (collected_number)gs.sqlite3_cache_miss);
674 + rrddim_set_by_pointer(st_sqlite3_cache, rd_cache_hit, (collected_number)gs.sqlite3_context_cache_hit);
675 + rrddim_set_by_pointer(st_sqlite3_cache, rd_cache_miss, (collected_number)gs.sqlite3_context_cache_miss);
676 + rrddim_set_by_pointer(st_sqlite3_cache, rd_cache_spill, (collected_number)gs.sqlite3_context_cache_spill);
677 + rrddim_set_by_pointer(st_sqlite3_cache, rd_cache_write, (collected_number)gs.sqlite3_context_cache_write);
678
679 rrdset_done(st_sqlite3_cache);
680 }