diff options
author | alc <alc@FreeBSD.org> | 2015-12-19 18:42:50 +0000 |
---|---|---|
committer | alc <alc@FreeBSD.org> | 2015-12-19 18:42:50 +0000 |
commit | 8343c406db08ecfbfbde5f7677b17a74b24a3645 (patch) | |
tree | 34a147bea7788aca2b0a5376368e87fce8afbfa1 /contrib/llvm/lib/CodeGen/SplitKit.cpp | |
parent | c7cbfde2c233f93325b265b5a732bcebc5be731e (diff) | |
download | FreeBSD-src-8343c406db08ecfbfbde5f7677b17a74b24a3645.zip FreeBSD-src-8343c406db08ecfbfbde5f7677b17a74b24a3645.tar.gz |
Introduce a new mechanism for relocating virtual pages to a new physical
address and use this mechanism when:
1. kmem_alloc_{attr,contig}() can't find suitable free pages in the physical
memory allocator's free page lists. This replaces the long-standing
approach of scanning the inactive and inactive queues, converting clean
pages into PG_CACHED pages and laundering dirty pages. In contrast, the
new mechanism does not use PG_CACHED pages nor does it trigger a large
number of I/O operations.
2. on 32-bit MIPS processors, uma_small_alloc() and the pmap can't find
free pages in the physical memory allocator's free page lists that are
covered by the direct map. Tested by: adrian
3. ttm_bo_global_init() and ttm_vm_page_alloc_dma32() can't find suitable
free pages in the physical memory allocator's free page lists.
In the coming months, I expect that this new mechanism will be applied in
other places. For example, balloon drivers should use relocation to
minimize fragmentation of the guest physical address space.
Make vm_phys_alloc_contig() a little smarter (and more efficient in some
cases). Specifically, use vm_phys_segs[] earlier to avoid scanning free
page lists that can't possibly contain suitable pages.
Reviewed by: kib, markj
Glanced at: jhb
Discussed with: jeff
Sponsored by: EMC / Isilon Storage Division
Differential Revision: https://reviews.freebsd.org/D4444
Diffstat (limited to 'contrib/llvm/lib/CodeGen/SplitKit.cpp')
0 files changed, 0 insertions, 0 deletions