From 2e5264b32ca47f4fbfb69829d45ae6b6bcd7f6d3 Mon Sep 17 00:00:00 2001 From: mav Date: Mon, 13 Apr 2015 09:17:57 +0000 Subject: [PATCH] MFC r280850: Periodically wake up threads waiting for vmem(9) resources, so they could ask for resource reclamation again. This is kind of dirty hack, but as last resort this is better then stuck indefinitely because of KVA fragmentation, waiting until some random event free something sufficient. OpenSolaris also has this hack in its vmem(9). git-svn-id: svn://svn.freebsd.org/base/stable/10@281487 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f --- sys/kern/subr_vmem.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/sys/kern/subr_vmem.c b/sys/kern/subr_vmem.c index 20070fcdf..baaee8455 100644 --- a/sys/kern/subr_vmem.c +++ b/sys/kern/subr_vmem.c @@ -746,6 +746,12 @@ vmem_periodic(void *unused, int pending) /* Grow in powers of two. Shrink less aggressively. */ if (desired >= current * 2 || desired * 4 <= current) vmem_rehash(vm, desired); + + /* + * Periodically wake up threads waiting for resources, + * so they could ask for reclamation again. + */ + VMEM_CONDVAR_BROADCAST(vm); } mtx_unlock(&vmem_list_lock); -- 2.45.0