git: ab05a1cf321a - main - Revert commit 8733bc277a383cf59f38a83956f4f523869cfc90 Author: Mateusz Guzik <mjg@FreeBSD.org> Date: Thu Sep 14 16:13:01 2023 +0000
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 13 Nov 2024 19:46:57 UTC
The branch main has been updated by mckusick:
URL: https://cgit.FreeBSD.org/src/commit/?id=ab05a1cf321aca0fe632c1ab40f68630b477422c
commit ab05a1cf321aca0fe632c1ab40f68630b477422c
Author: Kirk McKusick <mckusick@FreeBSD.org>
AuthorDate: 2024-11-13 19:37:14 +0000
Commit: Kirk McKusick <mckusick@FreeBSD.org>
CommitDate: 2024-11-13 19:46:47 +0000
Revert commit 8733bc277a383cf59f38a83956f4f523869cfc90
Author: Mateusz Guzik <mjg@FreeBSD.org>
Date: Thu Sep 14 16:13:01 2023 +0000
vfs: don't provoke recycling non-free vnodes without a good reason
If the total number of free vnodes is at or above target, there is no
point creating more of them.
This commit was done as a performance optimization but ends up
causing slowdowns when doing operations on many files.
Requested by: re (cperciva)
MFC after: 1 minute
---
sys/kern/vfs_subr.c | 22 ++++------------------
1 file changed, 4 insertions(+), 18 deletions(-)
diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c
index 3b00fdbe93b4..f9b2a4fb68d1 100644
--- a/sys/kern/vfs_subr.c
+++ b/sys/kern/vfs_subr.c
@@ -1992,25 +1992,11 @@ vn_alloc_hard(struct mount *mp, u_long rnumvnodes, bool bumped)
mtx_lock(&vnode_list_mtx);
- if (vn_alloc_cyclecount != 0) {
- rnumvnodes = atomic_load_long(&numvnodes);
- if (rnumvnodes + 1 < desiredvnodes) {
- vn_alloc_cyclecount = 0;
- mtx_unlock(&vnode_list_mtx);
- goto alloc;
- }
-
- rfreevnodes = vnlru_read_freevnodes();
- if (rfreevnodes < wantfreevnodes) {
- if (vn_alloc_cyclecount++ >= rfreevnodes) {
- vn_alloc_cyclecount = 0;
- vstir = true;
- }
- } else {
- vn_alloc_cyclecount = 0;
- }
+ rfreevnodes = vnlru_read_freevnodes();
+ if (vn_alloc_cyclecount++ >= rfreevnodes) {
+ vn_alloc_cyclecount = 0;
+ vstir = true;
}
-
/*
* Grow the vnode cache if it will not be above its target max after
* growing. Otherwise, if there is at least one free vnode, try to