[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <154145268025.30046.11742652345962594283.stgit@ahduyck-desk1.jf.intel.com>
Date: Mon, 05 Nov 2018 13:19:25 -0800
From: Alexander Duyck <alexander.h.duyck@...ux.intel.com>
To: akpm@...ux-foundation.org, linux-mm@...ck.org
Cc: sparclinux@...r.kernel.org, linux-kernel@...r.kernel.org,
linux-nvdimm@...ts.01.org, davem@...emloft.net,
pavel.tatashin@...rosoft.com, mhocko@...e.com, mingo@...nel.org,
kirill.shutemov@...ux.intel.com, dan.j.williams@...el.com,
dave.jiang@...el.com, alexander.h.duyck@...ux.intel.com,
rppt@...ux.vnet.ibm.com, willy@...radead.org, vbabka@...e.cz,
khalid.aziz@...cle.com, ldufour@...ux.vnet.ibm.com,
mgorman@...hsingularity.net, yi.z.zhang@...ux.intel.com,
alexander.h.duyck@...ux.intel.com
Subject: [mm PATCH v5 0/7] Deferred page init improvements
This patchset is essentially a refactor of the page initialization logic
that is meant to provide for better code reuse while providing a
significant improvement in deferred page initialization performance.
In my testing on an x86_64 system with 384GB of RAM and 3TB of persistent
memory per node I have seen the following. In the case of regular memory
initialization the deferred init time was decreased from 3.75s to 1.06s on
average. For the persistent memory the initialization time dropped from
24.17s to 19.12s on average. This amounts to a 253% improvement for the
deferred memory initialization performance, and a 26% improvement in the
persistent memory initialization performance.
I have called out the improvement observed with each patch.
v1->v2:
Fixed build issue on PowerPC due to page struct size being 56
Added new patch that removed __SetPageReserved call for hotplug
v2->v3:
Rebased on latest linux-next
Removed patch that had removed __SetPageReserved call from init
Added patch that folded __SetPageReserved into set_page_links
Tweaked __init_pageblock to use start_pfn to get section_nr instead of pfn
v3->v4:
Updated patch description and comments for mm_zero_struct_page patch
Replaced "default" with "case 64"
Removed #ifndef mm_zero_struct_page
Fixed typo in comment that ommited "_from" in kerneldoc for iterator
Added Reviewed-by for patches reviewed by Pavel
Added Acked-by from Michal Hocko
Added deferred init times for patches that affect init performance
Swapped patches 5 & 6, pulled some code/comments from 4 into 5
v4->v5:
Updated Acks/Reviewed-by
Rebased on latest linux-next
Split core bits of zone iterator patch from MAX_ORDER_NR_PAGES init
---
Alexander Duyck (7):
mm: Use mm_zero_struct_page from SPARC on all 64b architectures
mm: Drop meminit_pfn_in_nid as it is redundant
mm: Implement new zone specific memblock iterator
mm: Initialize MAX_ORDER_NR_PAGES at a time instead of doing larger sections
mm: Move hot-plug specific memory init into separate functions and optimize
mm: Add reserved flag setting to set_page_links
mm: Use common iterator for deferred_init_pages and deferred_free_pages
arch/sparc/include/asm/pgtable_64.h | 30 --
include/linux/memblock.h | 38 ++
include/linux/mm.h | 50 +++
mm/memblock.c | 63 ++++
mm/page_alloc.c | 567 +++++++++++++++++++++--------------
5 files changed, 492 insertions(+), 256 deletions(-)
--
Powered by blists - more mailing lists