1116491Sharti// SPDX-License-Identifier: GPL-2.0-or-later 2116491Sharti/* FS-Cache statistics 3116491Sharti * 4116491Sharti * Copyright (C) 2021 Red Hat, Inc. All Rights Reserved. 5116491Sharti * Written by David Howells (dhowells@redhat.com) 6116491Sharti */ 7116491Sharti 8116491Sharti#define FSCACHE_DEBUG_LEVEL CACHE 9116491Sharti#include <linux/proc_fs.h> 10116491Sharti#include <linux/seq_file.h> 11116491Sharti#include "internal.h" 12116491Sharti 13116491Sharti/* 14116491Sharti * operation counters 15116491Sharti */ 16116491Shartiatomic_t fscache_n_volumes; 17116491Shartiatomic_t fscache_n_volumes_collision; 18116491Shartiatomic_t fscache_n_volumes_nomem; 19116491Shartiatomic_t fscache_n_cookies; 20116491Shartiatomic_t fscache_n_cookies_lru; 21116491Shartiatomic_t fscache_n_cookies_lru_expired; 22116491Shartiatomic_t fscache_n_cookies_lru_removed; 23116491Shartiatomic_t fscache_n_cookies_lru_dropped; 24116491Sharti 25116491Shartiatomic_t fscache_n_acquires; 26116491Shartiatomic_t fscache_n_acquires_ok; 27116491Shartiatomic_t fscache_n_acquires_oom; 28116491Sharti 29116491Shartiatomic_t fscache_n_invalidates; 30116491Sharti 31116491Shartiatomic_t fscache_n_updates; 32116491ShartiEXPORT_SYMBOL(fscache_n_updates); 33116491Sharti 34116519Shartiatomic_t fscache_n_relinquishes; 35116519Shartiatomic_t fscache_n_relinquishes_retire; 36116519Shartiatomic_t fscache_n_relinquishes_dropped; 37116491Sharti 38116491Shartiatomic_t fscache_n_resizes; 39116491Shartiatomic_t fscache_n_resizes_null; 40116491Sharti 41116491Shartiatomic_t fscache_n_read; 42116491ShartiEXPORT_SYMBOL(fscache_n_read); 43116491Shartiatomic_t fscache_n_write; 44116491ShartiEXPORT_SYMBOL(fscache_n_write); 45116491Shartiatomic_t fscache_n_no_write_space; 46116491ShartiEXPORT_SYMBOL(fscache_n_no_write_space); 47116491Shartiatomic_t fscache_n_no_create_space; 48116491ShartiEXPORT_SYMBOL(fscache_n_no_create_space); 49116491Shartiatomic_t fscache_n_culled; 50116491ShartiEXPORT_SYMBOL(fscache_n_culled); 51116491Shartiatomic_t fscache_n_dio_misfit; 52116491ShartiEXPORT_SYMBOL(fscache_n_dio_misfit); 53116491Sharti 54116491Sharti/* 55116491Sharti * display the general statistics 56116491Sharti */ 57116491Shartiint fscache_stats_show(struct seq_file *m) 58116491Sharti{ 59116491Sharti seq_puts(m, "-- FS-Cache statistics --\n"); 60116491Sharti seq_printf(m, "Cookies: n=%d v=%d vcol=%u voom=%u\n", 61116491Sharti atomic_read(&fscache_n_cookies), 62116491Sharti atomic_read(&fscache_n_volumes), 63116491Sharti atomic_read(&fscache_n_volumes_collision), 64116491Sharti atomic_read(&fscache_n_volumes_nomem) 65116491Sharti ); 66116491Sharti 67116491Sharti seq_printf(m, "Acquire: n=%u ok=%u oom=%u\n", 68116491Sharti atomic_read(&fscache_n_acquires), 69116491Sharti atomic_read(&fscache_n_acquires_ok), 70116491Sharti atomic_read(&fscache_n_acquires_oom)); 71116491Sharti 72116491Sharti seq_printf(m, "LRU : n=%u exp=%u rmv=%u drp=%u at=%ld\n", 73116491Sharti atomic_read(&fscache_n_cookies_lru), 74116491Sharti atomic_read(&fscache_n_cookies_lru_expired), 75116491Sharti atomic_read(&fscache_n_cookies_lru_removed), 76116491Sharti atomic_read(&fscache_n_cookies_lru_dropped), 77116491Sharti timer_pending(&fscache_cookie_lru_timer) ? 78116491Sharti fscache_cookie_lru_timer.expires - jiffies : 0); 79116491Sharti 80116491Sharti seq_printf(m, "Invals : n=%u\n", 81116491Sharti atomic_read(&fscache_n_invalidates)); 82116491Sharti 83116491Sharti seq_printf(m, "Updates: n=%u rsz=%u rsn=%u\n", 84116491Sharti atomic_read(&fscache_n_updates), 85116491Sharti atomic_read(&fscache_n_resizes), 86116491Sharti atomic_read(&fscache_n_resizes_null)); 87116491Sharti 88116491Sharti seq_printf(m, "Relinqs: n=%u rtr=%u drop=%u\n", 89116491Sharti atomic_read(&fscache_n_relinquishes), 90116491Sharti atomic_read(&fscache_n_relinquishes_retire), 91116491Sharti atomic_read(&fscache_n_relinquishes_dropped)); 92116491Sharti 93116491Sharti seq_printf(m, "NoSpace: nwr=%u ncr=%u cull=%u\n", 94116491Sharti atomic_read(&fscache_n_no_write_space), 95116491Sharti atomic_read(&fscache_n_no_create_space), 96116491Sharti atomic_read(&fscache_n_culled)); 97116491Sharti 98116491Sharti seq_printf(m, "IO : rd=%u wr=%u mis=%u\n", 99116491Sharti atomic_read(&fscache_n_read), 100116491Sharti atomic_read(&fscache_n_write), 101116491Sharti atomic_read(&fscache_n_dio_misfit)); 102116491Sharti return 0; 103116491Sharti} 104116491Sharti