mirror of
https://github.com/torvalds/linux.git
synced 2024-11-18 01:51:53 +00:00
bcache: add journal statistic
Sometimes, Journal takes up a lot of CPU, we need statistics to know what's the journal is doing. So this patch provide some journal statistics: 1) reclaim: how many times the journal try to reclaim resource, usually the journal bucket or/and the pin are exhausted. 2) flush_write: how many times the journal try to flush btree node to cache device, usually the journal bucket are exhausted. 3) retry_flush_write: how many times the journal retry to flush the next btree node, usually the previous tree node have been flushed by other thread. we show these statistic by sysfs interface. Through these statistics We can totally see the status of journal module when the CPU is too high. Signed-off-by: Tang Junhui <tang.junhui@zte.com.cn> Reviewed-by: Michael Lyle <mlyle@lyle.org> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
30abb3a67f
commit
a728eacbbd
@ -658,6 +658,10 @@ struct cache_set {
|
||||
atomic_long_t writeback_keys_done;
|
||||
atomic_long_t writeback_keys_failed;
|
||||
|
||||
atomic_long_t reclaim;
|
||||
atomic_long_t flush_write;
|
||||
atomic_long_t retry_flush_write;
|
||||
|
||||
enum {
|
||||
ON_ERROR_UNREGISTER,
|
||||
ON_ERROR_PANIC,
|
||||
|
@ -377,6 +377,8 @@ static void btree_flush_write(struct cache_set *c)
|
||||
*/
|
||||
struct btree *b, *best;
|
||||
unsigned i;
|
||||
|
||||
atomic_long_inc(&c->flush_write);
|
||||
retry:
|
||||
best = NULL;
|
||||
|
||||
@ -397,6 +399,7 @@ retry:
|
||||
if (!btree_current_write(b)->journal) {
|
||||
mutex_unlock(&b->write_lock);
|
||||
/* We raced */
|
||||
atomic_long_inc(&c->retry_flush_write);
|
||||
goto retry;
|
||||
}
|
||||
|
||||
@ -476,6 +479,8 @@ static void journal_reclaim(struct cache_set *c)
|
||||
unsigned iter, n = 0;
|
||||
atomic_t p;
|
||||
|
||||
atomic_long_inc(&c->reclaim);
|
||||
|
||||
while (!atomic_read(&fifo_front(&c->journal.pin)))
|
||||
fifo_pop(&c->journal.pin, p);
|
||||
|
||||
|
@ -65,6 +65,9 @@ read_attribute(bset_tree_stats);
|
||||
|
||||
read_attribute(state);
|
||||
read_attribute(cache_read_races);
|
||||
read_attribute(reclaim);
|
||||
read_attribute(flush_write);
|
||||
read_attribute(retry_flush_write);
|
||||
read_attribute(writeback_keys_done);
|
||||
read_attribute(writeback_keys_failed);
|
||||
read_attribute(io_errors);
|
||||
@ -545,6 +548,15 @@ SHOW(__bch_cache_set)
|
||||
sysfs_print(cache_read_races,
|
||||
atomic_long_read(&c->cache_read_races));
|
||||
|
||||
sysfs_print(reclaim,
|
||||
atomic_long_read(&c->reclaim));
|
||||
|
||||
sysfs_print(flush_write,
|
||||
atomic_long_read(&c->flush_write));
|
||||
|
||||
sysfs_print(retry_flush_write,
|
||||
atomic_long_read(&c->retry_flush_write));
|
||||
|
||||
sysfs_print(writeback_keys_done,
|
||||
atomic_long_read(&c->writeback_keys_done));
|
||||
sysfs_print(writeback_keys_failed,
|
||||
@ -731,6 +743,9 @@ static struct attribute *bch_cache_set_internal_files[] = {
|
||||
|
||||
&sysfs_bset_tree_stats,
|
||||
&sysfs_cache_read_races,
|
||||
&sysfs_reclaim,
|
||||
&sysfs_flush_write,
|
||||
&sysfs_retry_flush_write,
|
||||
&sysfs_writeback_keys_done,
|
||||
&sysfs_writeback_keys_failed,
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user