#
b18a4cca |
| 05-Mar-2019 |
Enji Cooper <ngie@FreeBSD.org> |
MFhead@r344786
|
#
844fc3e9 |
| 04-Mar-2019 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r344549 through r344775.
|
#
75d6d576 |
| 27-Feb-2019 |
Mateusz Guzik <mjg@FreeBSD.org> |
vm: remove seq.h inclusion made obsolete by NUMA rewrite
Sponsored by: The FreeBSD Foundation
|
#
f2a496d6 |
| 18-Jan-2019 |
Konstantin Belousov <kib@FreeBSD.org> |
MI VM: Make it possible to set size of superpage at boot instead of compile time.
In order to allow single kernel to use PAE pagetables on i386 if hardware supports it, and fall back to classic two-
MI VM: Make it possible to set size of superpage at boot instead of compile time.
In order to allow single kernel to use PAE pagetables on i386 if hardware supports it, and fall back to classic two-level paging structures if not, superpage code should be able to adopt to either 2M or 4M superpages size. There I make MI VM structures large enough to track the biggest possible superpage, by allowing architecture to define VM_NFREEORDER_MAX and VM_LEVEL_0_ORDER_MAX constants. Corresponding VM_NFREEORDER and VM_LEVEL_0_ORDER symbols can be defined as runtime values and must be less than the _MAX constants. If architecture does not define _MAXs, it is assumed that _MAX == normal constant.
Reviewed by: markj Tested by: pho (as part of the larger patch) Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D18853
show more ...
|
Revision tags: release/12.0.0 |
|
#
c6879c6c |
| 23-Oct-2018 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r339015 through r339669.
|
#
87ab1a10 |
| 23-Oct-2018 |
Mark Johnston <markj@FreeBSD.org> |
Initialize static domainsets regardless of whether an SRAT is present.
Reported by: yuripv X-MFC with: r339452 Sponsored by: The FreeBSD Foundation
|
#
b61f3142 |
| 22-Oct-2018 |
Mark Johnston <markj@FreeBSD.org> |
Make it possible to disable NUMA support with a tunable.
This provides a chicken switch for anyone negatively impacted by enabling NUMA in the amd64 GENERIC kernel configuration. With NUMA disabled
Make it possible to disable NUMA support with a tunable.
This provides a chicken switch for anyone negatively impacted by enabling NUMA in the amd64 GENERIC kernel configuration. With NUMA disabled at boot-time, information about the NUMA topology is not exposed to the rest of the kernel, and all of physical memory is viewed as coming from a single domain.
This method still has some performance overhead relative to disabling NUMA support at compile time.
PR: 231460 Reviewed by: alc, gallatin, kib MFC after: 1 week Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D17439
show more ...
|
#
662e7fa8 |
| 20-Oct-2018 |
Mark Johnston <markj@FreeBSD.org> |
Create some global domainsets and refactor NUMA registration.
Pre-defined policies are useful when integrating the domainset(9) policy machinery into various kernel memory allocators.
The refactori
Create some global domainsets and refactor NUMA registration.
Pre-defined policies are useful when integrating the domainset(9) policy machinery into various kernel memory allocators.
The refactoring will make it easier to add NUMA support for other architectures.
No functional change intended.
Reviewed by: alc, gallatin, jeff, kib Tested by: pho (part of a larger patch) MFC after: 3 days Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D17416
show more ...
|
#
01d4e214 |
| 05-Oct-2018 |
Glen Barber <gjb@FreeBSD.org> |
MFH r338661 through r339200.
Sponsored by: The FreeBSD Foundation
|
#
ce44d808 |
| 27-Sep-2018 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r338731 through r338987.
|
#
463406ac |
| 24-Sep-2018 |
Mark Johnston <markj@FreeBSD.org> |
Add more NUMA-specific low memory predicates.
Use these predicates instead of inline references to vm_min_domains. Also add a global all_domains set, akin to all_cpus.
Reviewed by: alc, jeff, kib A
Add more NUMA-specific low memory predicates.
Use these predicates instead of inline references to vm_min_domains. Also add a global all_domains set, akin to all_cpus.
Reviewed by: alc, jeff, kib Approved by: re (gjb) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D17278
show more ...
|
#
3af64f03 |
| 11-Sep-2018 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r338392 through r338594.
|
#
72aebdd7 |
| 02-Sep-2018 |
Alan Cox <alc@FreeBSD.org> |
Recent changes have created, for the first time, physical memory segments that can be coalesced. To be clear, fragmentation of phys_avail[] is not the cause. This fragmentation of vm_phys_segs[] ar
Recent changes have created, for the first time, physical memory segments that can be coalesced. To be clear, fragmentation of phys_avail[] is not the cause. This fragmentation of vm_phys_segs[] arises from the "special" calls to vm_phys_add_seg(), in other words, not those that derive directly from phys_avail[], but those that we create for the initial kernel page table pages and now for the kernel and modules loaded at boot time. Since we sometimes iterate over the physical memory segments, coalescing these segments at initialization time is a worthwhile change.
Reviewed by: kib, markj Approved by: re (rgrimes) MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D16976
show more ...
|
#
14b841d4 |
| 11-Aug-2018 |
Kyle Evans <kevans@FreeBSD.org> |
MFH @ r337607, in preparation for boarding
|
#
67d33338 |
| 27-Jul-2018 |
Warner Losh <imp@FreeBSD.org> |
Rename VM_FREELIST_ISADMA to VM_FREELIST_LOWMEM.
There's no differene between VM_FREELIST_ISADMA and VM_FREELIST_LOWMEM except for the default boundary (16MB on x86 and 256MB on MIPS, but they are o
Rename VM_FREELIST_ISADMA to VM_FREELIST_LOWMEM.
There's no differene between VM_FREELIST_ISADMA and VM_FREELIST_LOWMEM except for the default boundary (16MB on x86 and 256MB on MIPS, but they are otherwise the same). We don't need both for any system we support (there were some really old ARC systems that did have ISA/EISA bus, but we never ran on them and they are too old to ever grow support for).
Differential Review: https://reviews.freebsd.org/D16290
show more ...
|
#
370a338a |
| 05-Jul-2018 |
Alan Cox <alc@FreeBSD.org> |
Allow callers to vm_phys_split_pages() to specify whether insertion should occur at the head or the tail of the page queues.
|
#
7493904e |
| 02-Jul-2018 |
Alan Cox <alc@FreeBSD.org> |
Introduce vm_phys_enq_range(), and call it in vm_phys_alloc_npages() and vm_phys_alloc_seg_contig() instead of vm_phys_free_contig(). In short, vm_phys_enq_range() is simpler and faster than the mor
Introduce vm_phys_enq_range(), and call it in vm_phys_alloc_npages() and vm_phys_alloc_seg_contig() instead of vm_phys_free_contig(). In short, vm_phys_enq_range() is simpler and faster than the more general vm_phys_free_contig(), and in the case of vm_phys_alloc_seg_contig(), vm_phys_free_contig() was placing the excess physical pages at the wrong end of the queues.
In collaboration with: Doug Moore <dougm@rice.edu>
show more ...
|
#
9161b4de |
| 29-Jun-2018 |
Alan Cox <alc@FreeBSD.org> |
Three changes to vm_phys_alloc_seg_contig():
1. Optimize the order computation.
2. Update the pool for all of the chunks that are removed from the free page lists, and not just the first chunk.
Three changes to vm_phys_alloc_seg_contig():
1. Optimize the order computation.
2. Update the pool for all of the chunks that are removed from the free page lists, and not just the first chunk.
3. Simplify the code for returning excess pages to the free page lists.
Reviewed by: Doug Moore <dougm@rice.edu>
show more ...
|
#
32d81f21 |
| 28-Jun-2018 |
Alan Cox <alc@FreeBSD.org> |
Reflow one of the comments describing vm_phys_alloc_npages().
|
#
89ea39a7 |
| 26-Jun-2018 |
Alan Cox <alc@FreeBSD.org> |
Update the physical page selection strategy used by vm_page_import() so that it does not cause rapid fragmentation of the free physical memory.
Reviewed by: jeff, markj (an earlier version) Differen
Update the physical page selection strategy used by vm_page_import() so that it does not cause rapid fragmentation of the free physical memory.
Reviewed by: jeff, markj (an earlier version) Differential Revision: https://reviews.freebsd.org/D15976
show more ...
|
Revision tags: release/11.2.0 |
|
#
5cd29d0f |
| 24-Apr-2018 |
Mark Johnston <markj@FreeBSD.org> |
Improve VM page queue scalability.
Currently both the page lock and a page queue lock must be held in order to enqueue, dequeue or requeue a page in a given page queue. The queue locks are a scalabi
Improve VM page queue scalability.
Currently both the page lock and a page queue lock must be held in order to enqueue, dequeue or requeue a page in a given page queue. The queue locks are a scalability bottleneck in many workloads. This change reduces page queue lock contention by batching queue operations. To detangle the page and page queue locks, per-CPU batch queues are used to reference pages with pending queue operations. The requested operation is encoded in the page's aflags field with the page lock held, after which the page is enqueued for a deferred batch operation. Page queue scans are similarly optimized to minimize the amount of work performed with a page queue lock held.
Reviewed by: kib, jeff (previous versions) Tested by: pho Sponsored by: Dell EMC Isilon Differential Revision: https://reviews.freebsd.org/D14893
show more ...
|
#
c33e3a64 |
| 01-Apr-2018 |
Jeff Roberson <jeff@FreeBSD.org> |
Add a uma cache of free pages in the DEFAULT freepool. This gives us per-cpu alloc and free of pages. The cache is filled with as few trips to the phys allocator as possible by the use of a new vm_
Add a uma cache of free pages in the DEFAULT freepool. This gives us per-cpu alloc and free of pages. The cache is filled with as few trips to the phys allocator as possible by the use of a new vm_phys_alloc_npages() function which allocates as many as N pages.
This code was originally by markj with the import function rewritten by me.
Reviewed by: markj, kib Tested by: pho Sponsored by: Netflix, Dell/EMC Isilon Differential Revision: https://reviews.freebsd.org/D14905
show more ...
|
#
cdfeced8 |
| 22-Mar-2018 |
Jeff Roberson <jeff@FreeBSD.org> |
Use read_mostly and alignment tags to eliminate or limit false sharing.
Reviewed by: markj (Part of D14707) Sponsored by: Netflix, Dell/EMC Isilon
|
#
79e9552e |
| 20-Mar-2018 |
Konstantin Belousov <kib@FreeBSD.org> |
Check for wrap-around in vm_phys_alloc_seg_contig().
It is possible to provide insane values for size in contigmalloc(9) request, which usually not reaches the phys allocator due to failing KVA allo
Check for wrap-around in vm_phys_alloc_seg_contig().
It is possible to provide insane values for size in contigmalloc(9) request, which usually not reaches the phys allocator due to failing KVA allocation. But with the forthcoming 4/4 i386, where 32bit architecture has almost 4G KVA, contigmalloc(1G) is not unreasonable outright and KVA might be available sometimes.
Then, the calculation of pa_end could wrap around, depending on the physical address, and the checks in vm_phys_alloc_seg_contig() would pass while the iteration in the loop after the 'done' label goes out of the vm_page_array bounds.
Fix it by detecting the wrap.
Reported and tested by: pho Reviewed by: alc, markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D14767
show more ...
|
#
e2068d0b |
| 06-Feb-2018 |
Jeff Roberson <jeff@FreeBSD.org> |
Use per-domain locks for vm page queue free. Move paging control from global to per-domain state. Protect reservations with the free lock from the domain that they belong to. Refactor to make vm d
Use per-domain locks for vm page queue free. Move paging control from global to per-domain state. Protect reservations with the free lock from the domain that they belong to. Refactor to make vm domains more of a first class object.
Reviewed by: markj, kib, gallatin Tested by: pho Sponsored by: Netflix, Dell/EMC Isilon Differential Revision: https://reviews.freebsd.org/D14000
show more ...
|