aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMateusz Guzik <mjg@FreeBSD.org>2024-07-08 17:57:39 +0000
committerMateusz Guzik <mjg@FreeBSD.org>2024-07-10 22:04:40 +0000
commit72f8b18b8d93bee8f6ca6ed0dfa160db18424807 (patch)
tree280280f56a5ff529155e57ff5125fe0a1b0e7611
parentb7f6841e00d53f1aee65a8cce4f98c239ae4cf75 (diff)
downloadsrc-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.c20
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)
{