diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c index 37e713ee48ea..267ca3fb7ef0 100644 --- a/sys/kern/vfs_subr.c +++ b/sys/kern/vfs_subr.c @@ -145,6 +145,9 @@ static u_long __exclusive_cache_line numvnodes; SYSCTL_ULONG(_vfs, OID_AUTO, numvnodes, CTLFLAG_RD, &numvnodes, 0, "Number of vnodes in existence"); +static u_long __exclusive_cache_line highest_numvnodes; +SYSCTL_ULONG(_vfs, OID_AUTO, highest_numvnodes, CTLFLAG_RD, &highest_numvnodes, 0, ""); + static counter_u64_t vnodes_created; SYSCTL_COUNTER_U64(_vfs, OID_AUTO, vnodes_created, CTLFLAG_RD, &vnodes_created, "Number of vnodes created by getnewvnode"); @@ -1629,6 +1632,8 @@ vn_alloc_hard(struct mount *mp) } alloc: rnumvnodes = atomic_fetchadd_long(&numvnodes, 1) + 1; + if (rnumvnodes > highest_numvnodes) + highest_numvnodes = rnumvnodes; if (vnlru_under(rnumvnodes, vlowat)) vnlru_kick(); mtx_unlock(&vnode_list_mtx); @@ -1647,6 +1652,8 @@ vn_alloc(struct mount *mp) atomic_subtract_long(&numvnodes, 1); return (vn_alloc_hard(mp)); } + if (rnumvnodes > highest_numvnodes) + highest_numvnodes = rnumvnodes; return (uma_zalloc_smr(vnode_zone, M_WAITOK)); }