[RFC mm PATCH 0/5] mm: Deferred page init improvements

From: Alexander Duyck
Date: Wed Sep 26 2018 - 19:29:12 EST


This patchset is essentially a refactor of the page initialization logic
to provide for better code reuse while providing a significant improvement
in deferred page initialization performance.

In my testing I have seen a 3:1 reduction in the time needed for deferred
memory initialization on two different x86_64 based test systems I have.

In addition this provides a very slight improvement for the hotplug memory
initialization, although the improvement doesn't exceed 5% from what I can
tell and that is to be expected since most of the changes related to
hotplug initialization are just code clean-up to allow for reuse. I had
been considering using a large memset for the entire pageblock I was
initializing which showed a significant speedup for persistent memory init
however that showed no improvements to a slight regression for regular
deferred initialization of standard memory.

---

Alexander Duyck (5):
mm: Use mm_zero_struct_page from SPARC on all 64b architectures
mm: Drop meminit_pfn_in_nid as it is redundant
mm: Use memblock/zone specific iterator for handling deferred page init
mm: Move hot-plug specific memory init into separate functions and optimize
mm: Use common iterator for deferred_init_pages and deferred_free_pages


arch/sparc/include/asm/pgtable_64.h | 30 --
include/linux/memblock.h | 58 ++++
include/linux/mm.h | 33 ++
mm/memblock.c | 63 ++++
mm/page_alloc.c | 555 +++++++++++++++++++++--------------
5 files changed, 485 insertions(+), 254 deletions(-)

--