git: kernel - Fix jumbo cluster buffer deadlock
Matthew Dillon
dillon at crater.dragonflybsd.org
Thu Jul 24 12:07:46 PDT 2014
commit d5b73e647792df4d820050db50d9709f5bbcfa82
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Thu Jul 24 11:56:16 2014 -0700
kernel - Fix jumbo cluster buffer deadlock
* mbufjcluster_cache and mbufphdr_jcluster_cache did not have
a nominal maintainance number set, which causes objcache to
default to (cluster_limit / 2). Both of these caches are fed
from mjclmeta_cache. The default maintainance value combined
for these two allows mjclmeta_cache to become completely exhausted.
The exhaustion results in an edge case when combined with the per-cpu
caches which can deadlock the mjclmeta_cache. The other mbuf caches
do not have this problem because they specify maintainance divisors
of at least 4.
* Implement kern.ipc.mjclph_cachefrac and kern.ipc.mjcl_cachefrac to
force the two jcluster caches to return more buffers to mjclmeta_cache.
Default to 4 and 16.
* Force all cachefrac values for all mbuf caches to not be less than 3
to prevent sysop foot-shooting.
* Also set a fixed cachefrac of 4 for mbuf_cache, mclmeta_cache, and
mjclmeta_cache. The default in objcache of 2 (aka 1/2) is overkill.
(this change is subject to review from Sephe).
Reported-by: joris
Summary of changes:
sys/kern/uipc_mbuf.c | 49 ++++++++++++++++++++++++++++++++++++++++---------
1 file changed, 40 insertions(+), 9 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/d5b73e647792df4d820050db50d9709f5bbcfa82
--
DragonFly BSD source repository
More information about the Commits
mailing list