added congested rate
Costa Tsaousis (ktsaou) committed
Mar 5, 2018 at 18:01 UTC
6c9061929a74419b06b99566c1e3fe5bdf190513
1 file changed
+16
-1
src/proc_diskstats.c
+16
-1
@@ -34,6 +34,7 @@ static struct disk {
34
35
int device_is_bcache;
36
37
+ char *bcache_filename_congested;
38
char *bcache_filename_readahead;
39
char *bcache_filename_dirty_data;
40
char *bcache_filename_writeback_rate;
@@ -97,6 +98,7 @@ static struct disk {
98
RRDDIM *rd_bcache_bypass_misses;
99
100
RRDSET *st_bcache_rates;
101
+ RRDDIM *rd_bcache_rate_congested;
102
RRDDIM *rd_bcache_rate_readahead;
103
RRDDIM *rd_bcache_rate_writeback;
104
@@ -509,6 +511,12 @@ static struct disk *get_disk(unsigned long major, unsigned long minor, char *dis
511
512
char buffer2[FILENAME_MAX + 1];
513
514
+ snprintfz(buffer2, FILENAME_MAX, "%s/congested", buffer);
515
+ if(access(buffer2, R_OK) == 0)
516
+ d->bcache_filename_congested = strdupz(buffer2);
517
+ else
518
+ error("bcache file '%s' cannot be read.", buffer2);
519
+
520
snprintfz(buffer2, FILENAME_MAX, "%s/readahead", buffer);
521
if(access(buffer2, R_OK) == 0)
522
d->bcache_filename_readahead = strdupz(buffer2);
@@ -1066,12 +1074,16 @@ int do_proc_diskstats(int update_every, usec_t dt) {
1074
cache_miss_collisions = 0,
1075
cache_misses = 0,
1076
cache_available_percent = 0,
1077
+ congested = 0,
1078
readahead = 0,
1079
dirty_data = 0,
1080
writeback_rate = 0;
1081
1082
// read the bcache values
1083
1084
+ if(d->bcache_filename_congested)
1085
+ congested = bcache_read_number_with_units(d->bcache_filename_congested);
1086
+
1087
if(d->bcache_filename_readahead)
1088
readahead = bcache_read_number_with_units(d->bcache_filename_readahead);
1089
@@ -1122,11 +1134,13 @@ int do_proc_diskstats(int update_every, usec_t dt) {
1134
1135
d->rd_bcache_rate_readahead = rrddim_add(d->st_bcache_rates, "readahead", NULL, 1, 1024, RRD_ALGORITHM_ABSOLUTE);
1136
d->rd_bcache_rate_writeback = rrddim_add(d->st_bcache_rates, "writeback", NULL, -1, 1024, RRD_ALGORITHM_ABSOLUTE);
1137
+ d->rd_bcache_rate_congested = rrddim_add(d->st_bcache_rates, "congested", NULL, 1, 1024, RRD_ALGORITHM_ABSOLUTE);
1138
}
1139
else rrdset_next(d->st_bcache_rates);
1140
1141
rrddim_set_by_pointer(d->st_bcache_rates, d->rd_bcache_rate_writeback, writeback_rate);
1142
rrddim_set_by_pointer(d->st_bcache_rates, d->rd_bcache_rate_readahead, readahead);
1143
+ rrddim_set_by_pointer(d->st_bcache_rates, d->rd_bcache_rate_congested, congested);
1144
rrdset_done(d->st_bcache_rates);
1145
}
1146
@@ -1313,6 +1327,8 @@ int do_proc_diskstats(int update_every, usec_t dt) {
1327
last->next = d = d->next;
1328
}
1329
1330
+ freez(t->bcache_filename_congested);
1331
+ freez(t->bcache_filename_readahead);
1332
freez(t->bcache_filename_dirty_data);
1333
freez(t->bcache_filename_writeback_rate);
1334
freez(t->bcache_filename_stats_total_cache_available_percent);
@@ -1321,7 +1337,6 @@ int do_proc_diskstats(int update_every, usec_t dt) {
1337
freez(t->bcache_filename_stats_total_cache_miss_collisions);
1338
freez(t->bcache_filename_stats_total_cache_bypass_hits);
1339
freez(t->bcache_filename_stats_total_cache_bypass_misses);
1324
- freez(t->bcache_filename_readahead);
1340
1341
freez(t->disk);
1342
freez(t->device);