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
}