aboutsummaryrefslogtreecommitdiff
path: root/sys/vm/vm_page.c
diff options
context:
space:
mode:
authorJeff Roberson <jeff@FreeBSD.org>2018-03-29 02:54:50 +0000
committerJeff Roberson <jeff@FreeBSD.org>2018-03-29 02:54:50 +0000
commite5818a53dbd212809059bb306775a4b7e0e30c5f (patch)
treecdf1bf9066b6b7230e5cdcbe0f7cab602c1d26a2 /sys/vm/vm_page.c
parentbeb87f6405f778ee38ada79b2fb38f42f20cdb98 (diff)
downloadsrc-e5818a53dbd212809059bb306775a4b7e0e30c5f.tar.gz
src-e5818a53dbd212809059bb306775a4b7e0e30c5f.zip
Implement several enhancements to NUMA policies.
Add a new "interleave" allocation policy which stripes pages across domains with a stride or width keeping contiguity within a multi-page region. Move the kernel to the dedicated numbered cpuset #2 making it possible to assign kernel threads and memory policy separately from user. This also eliminates the need for the complicated interrupt binding code. Add a sysctl API for viewing and manipulating domainsets. Refactor some of the cpuset_t manipulation code using the generic bitset type so that it can be used for both. This probably belongs in a dedicated subr file. Attempt to improve the include situation. Reviewed by: kib Discussed with: jhb (cpuset parts) Tested by: pho (before review feedback) Sponsored by: Netflix, Dell/EMC Isilon Differential Revision: https://reviews.freebsd.org/D14839
Notes
Notes: svn path=/head/; revision=331723
Diffstat (limited to 'sys/vm/vm_page.c')
-rw-r--r--sys/vm/vm_page.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c
index 873a96be3517..f4de17703706 100644
--- a/sys/vm/vm_page.c
+++ b/sys/vm/vm_page.c
@@ -1660,7 +1660,7 @@ vm_page_alloc_after(vm_object_t object, vm_pindex_t pindex,
vm_page_t m;
int domain;
- vm_domainset_iter_page_init(&di, object, &domain, &req);
+ vm_domainset_iter_page_init(&di, object, pindex, &domain, &req);
do {
m = vm_page_alloc_domain_after(object, pindex, domain, req,
mpred);
@@ -1893,7 +1893,7 @@ vm_page_alloc_contig(vm_object_t object, vm_pindex_t pindex, int req,
vm_page_t m;
int domain;
- vm_domainset_iter_page_init(&di, object, &domain, &req);
+ vm_domainset_iter_page_init(&di, object, pindex, &domain, &req);
do {
m = vm_page_alloc_contig_domain(object, pindex, domain, req,
npages, low, high, alignment, boundary, memattr);
@@ -2092,7 +2092,7 @@ vm_page_alloc_freelist(int freelist, int req)
vm_page_t m;
int domain;
- vm_domainset_iter_page_init(&di, kernel_object, &domain, &req);
+ vm_domainset_iter_page_init(&di, NULL, 0, &domain, &req);
do {
m = vm_page_alloc_freelist_domain(domain, freelist, req);
if (m != NULL)
@@ -2691,7 +2691,7 @@ vm_page_reclaim_contig(int req, u_long npages, vm_paddr_t low, vm_paddr_t high,
int domain;
bool ret;
- vm_domainset_iter_page_init(&di, kernel_object, &domain, &req);
+ vm_domainset_iter_page_init(&di, NULL, 0, &domain, &req);
do {
ret = vm_page_reclaim_contig_domain(domain, req, npages, low,
high, alignment, boundary);