diff options
author | Mateusz Guzik <mjg@FreeBSD.org> | 2024-07-08 17:57:39 +0000 |
---|---|---|
committer | Mateusz Guzik <mjg@FreeBSD.org> | 2024-07-10 22:04:40 +0000 |
commit | 72f8b18b8d93bee8f6ca6ed0dfa160db18424807 (patch) | |
tree | 280280f56a5ff529155e57ff5125fe0a1b0e7611 | |
parent | b7f6841e00d53f1aee65a8cce4f98c239ae4cf75 (diff) | |
download | src-72f8b18b8d93bee8f6ca6ed0dfa160db18424807.tar.gz src-72f8b18b8d93bee8f6ca6ed0dfa160db18424807.zip |
vfs cache: add sysctl vfs.cache.param.hitpct
Sponsored by: Rubicon Communications, LLC ("Netgate")
(cherry picked from commit 0a487207227badcbfbec029103ac7e2d5291bd30)
-rw-r--r-- | sys/kern/vfs_cache.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/sys/kern/vfs_cache.c b/sys/kern/vfs_cache.c index 70c4dbc01c98..9ec0970628b4 100644 --- a/sys/kern/vfs_cache.c +++ b/sys/kern/vfs_cache.c @@ -984,6 +984,26 @@ SYSCTL_PROC(_vfs_cache, OID_AUTO, nchstats, CTLTYPE_OPAQUE | CTLFLAG_RD | CTLFLAG_MPSAFE, 0, 0, sysctl_nchstats, "LU", "VFS cache effectiveness statistics"); +static int +sysctl_hitpct(SYSCTL_HANDLER_ARGS) +{ + long poshits, neghits, miss, total; + long pct; + + poshits = counter_u64_fetch(numposhits); + neghits = counter_u64_fetch(numneghits); + miss = counter_u64_fetch(nummiss); + total = poshits + neghits + miss; + + pct = 0; + if (total != 0) + pct = ((poshits + neghits) * 100) / total; + return (sysctl_handle_int(oidp, 0, pct, req)); +} +SYSCTL_PROC(_vfs_cache_stats, OID_AUTO, hitpct, + CTLTYPE_INT | CTLFLAG_MPSAFE | CTLFLAG_RD, NULL, 0, sysctl_hitpct, + "I", "Percentage of hits"); + static void cache_recalc_neg_min(void) { |