vnlru_proc() draining unrelated uma zones

Fabian Keil freebsd-listen at fabiankeil.de
Wed Jun 15 12:17:05 UTC 2016


While looking into two uma-related issues[0] I noticed that
vnlru_proc() is calling uma_reclaim() even though the intention
seems to be to merely drain the vnode-related zones.

According to uma.h, uma_reclaim() "should only be called by
the page out daemon", presumably because of the overhead
and side-effects.

I've been using this patch for a couple of weeks and didn't
notice any regressions:

diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c
index 2767826..2c65ce1 100644
--- a/sys/kern/vfs_subr.c
+++ b/sys/kern/vfs_subr.c
@@ -1107,8 +1107,10 @@ vnlru_proc(void)
                        vfs_unbusy(mp);
                }
                mtx_unlock(&mountlist_mtx);
-               if (onumvnodes > desiredvnodes && numvnodes <= desiredvnodes)
-                       uma_reclaim();
+               if (onumvnodes > desiredvnodes && numvnodes <= desiredvnodes) {
+                       zone_drain(vnode_zone);
+                       zone_drain(vnodepoll_zone);
+               }
                if (done == 0) {
                        if (force == 0 || force == 1) {
                                force = 2;

It also didn't seem to noticeable affect the issues I was investigating
(the code is rarely executed on my systems), but calling uma_reclaim()
still seems strange to me.

Am I missing something?

Fabian

[0]
"Prevent deadlocks when paging on GELI-encrypted devices":
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=209759
"[...] connections time out/ssh results in 'broken pipe'":
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=209680
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 181 bytes
Desc: OpenPGP digital signature
URL: <http://lists.freebsd.org/pipermail/freebsd-hackers/attachments/20160615/95eb15bc/attachment.sig>


More information about the freebsd-hackers mailing list