Messages in this thread | | | Date | Fri, 24 Apr 2015 10:35:49 -0400 | From | Waiman Long <> | Subject | Re: [PATCH 10/13] x86: mm: Enable deferred struct page initialisation on x86-64 |
| |
On 04/23/2015 05:23 AM, Mel Gorman wrote: > On Wed, Apr 22, 2015 at 04:45:00PM -0700, Andrew Morton wrote: >> On Wed, 22 Apr 2015 18:07:50 +0100 Mel Gorman<mgorman@suse.de> wrote: >> >>> --- a/arch/x86/Kconfig >>> +++ b/arch/x86/Kconfig >>> @@ -32,6 +32,7 @@ config X86 >>> select HAVE_UNSTABLE_SCHED_CLOCK >>> select ARCH_SUPPORTS_NUMA_BALANCING if X86_64 >>> select ARCH_SUPPORTS_INT128 if X86_64 >>> + select ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT if X86_64&& NUMA >> Put this in the "config X86_64" section and skip the "X86_64&&"? >> > Done. > >> Can we omit the whole defer_meminit= thing and permanently enable the >> feature? That's simpler, provides better test coverage and is, we >> hope, faster. >> > Yes. The intent was to have a workaround if there were any failures like > Waiman's vmalloc failures in an earlier version but they are bugs that > should be fixed. > >> And can this be used on non-NUMA? Presumably that won't speed things >> up any if we're bandwidth limited but again it's simpler and provides >> better coverage. > Nothing prevents it. There is less opportunity for parallelism but > improving coverage is desirable. >
Memory access latency can be more than double for local vs. remote node memory. Bandwidth can also be much lower depending on what kind of interconnect is between the 2 nodes. So it is better to do it in a NUMA-aware way. Within a NUMA node, however, we can split the memory initialization to 2 or more local CPUs if the memory size is big enough.
Cheers, Longman
| |