summaryrefslogtreecommitdiffstats
path: root/sys/ofed
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2013-08-07 16:36:38 +0000
committerkib <kib@FreeBSD.org>2013-08-07 16:36:38 +0000
commit8de1718b6098ce10c7adafd754331072122d1b3a (patch)
tree958d5d7311cef3751ddc3af3de19306b77bec18d /sys/ofed
parenta3142db9ac39863c9280f1ec60c165e521b66fd3 (diff)
downloadFreeBSD-src-8de1718b6098ce10c7adafd754331072122d1b3a.zip
FreeBSD-src-8de1718b6098ce10c7adafd754331072122d1b3a.tar.gz
Split the pagequeues per NUMA domains, and split pageademon process
into threads each processing queue in a single domain. The structure of the pagedaemons and queues is kept intact, most of the changes come from the need for code to find an owning page queue for given page, calculated from the segment containing the page. The tie between NUMA domain and pagedaemon thread/pagequeue split is rather arbitrary, the multithreaded daemon could be allowed for the single-domain machines, or one domain might be split into several page domains, to further increase concurrency. Right now, each pagedaemon thread tries to reach the global target, precalculated at the start of the pass. This is not optimal, since it could cause excessive page deactivation and freeing. The code should be changed to re-check the global page deficit state in the loop after some number of iterations. The pagedaemons reach the quorum before starting the OOM, since one thread inability to meet the target is normal for split queues. Only when all pagedaemons fail to produce enough reusable pages, OOM is started by single selected thread. Launder is modified to take into account the segments layout with regard to the region for which cleaning is performed. Based on the preliminary patch by jeff, sponsored by EMC / Isilon Storage Division. Reviewed by: alc Tested by: pho Sponsored by: The FreeBSD Foundation
Diffstat (limited to 'sys/ofed')
-rw-r--r--sys/ofed/include/linux/page.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/sys/ofed/include/linux/page.h b/sys/ofed/include/linux/page.h
index 9e15201..748014c 100644
--- a/sys/ofed/include/linux/page.h
+++ b/sys/ofed/include/linux/page.h
@@ -32,6 +32,7 @@
#include <sys/param.h>
+#include <machine/atomic.h>
#include <vm/vm.h>
#include <vm/vm_page.h>
OpenPOWER on IntegriCloud