diff options
author | Jeff Roberson <jeff@FreeBSD.org> | 2018-02-12 22:53:00 +0000 |
---|---|---|
committer | Jeff Roberson <jeff@FreeBSD.org> | 2018-02-12 22:53:00 +0000 |
commit | e958ad4cf3cc9e2624eba7634b972c18d5079a83 (patch) | |
tree | a8e1202a0bea71fdfbe01e46adc415772d0f708c /sys/amd64/amd64/efirt_machdep.c | |
parent | 487340b00406d7e8fc8e4963e130c3919102076b (diff) | |
download | src-e958ad4cf3cc9e2624eba7634b972c18d5079a83.tar.gz src-e958ad4cf3cc9e2624eba7634b972c18d5079a83.zip |
Make v_wire_count a per-cpu counter(9) counter. This eliminates a
significant source of cache line contention from vm_page_alloc(). Use
accessors and vm_page_unwire_noq() so that the mechanism can be easily
changed in the future.
Reviewed by: markj
Discussed with: kib, glebius
Tested by: pho (earlier version)
Sponsored by: Netflix, Dell/EMC Isilon
Differential Revision: https://reviews.freebsd.org/D14273
Notes
Notes:
svn path=/head/; revision=329187
Diffstat (limited to 'sys/amd64/amd64/efirt_machdep.c')
-rw-r--r-- | sys/amd64/amd64/efirt_machdep.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/sys/amd64/amd64/efirt_machdep.c b/sys/amd64/amd64/efirt_machdep.c index 053804b54450..160ad489b5b9 100644 --- a/sys/amd64/amd64/efirt_machdep.c +++ b/sys/amd64/amd64/efirt_machdep.c @@ -74,8 +74,7 @@ efi_destroy_1t1_map(void) VM_OBJECT_RLOCK(obj_1t1_pt); TAILQ_FOREACH(m, &obj_1t1_pt->memq, listq) m->wire_count = 0; - atomic_subtract_int(&vm_cnt.v_wire_count, - obj_1t1_pt->resident_page_count); + vm_wire_sub(obj_1t1_pt->resident_page_count); VM_OBJECT_RUNLOCK(obj_1t1_pt); vm_object_deallocate(obj_1t1_pt); } |