Changelog: v3 - v4 Addressed comments from Ingo Molnar and from Michal Hocko Splitted 4th patch into three patches Instead of using section table to save node ids, saving node id in the first page of every section. v2 - v3 Fixed two issues found during testing Addressed Kbuild warning reports v1 - v2 Added struct page poisoning checking in order to verify that struct pages are never accessed until initialized during memory hotplug This patchset: - Improves hotplug performance by eliminating a number of struct page traverses during memory hotplug. - Fixes some issues with hotplugging, where boundaries were not properly checked. And on x86 block size was not properly aligned with end of memory - Also, potentially improves boot performance by eliminating condition from __init_single_page(). - Adds robustness by verifying that that struct pages are correctly poisoned when flags are accessed. The following experiments were performed on Xeon(R) CPU E7-8895 v3 @ 2.60GHz with 1T RAM: booting in qemu with 960G of memory, time to initialize struct pages: no-kvm: TRY1 TRY2 BEFORE: 39.433668 39.39705 AFTER: 36.903781 36.989329 with-kvm: BEFORE: 10.977447 11.103164 AFTER: 10.929072 10.751885 Hotplug 896G memory: no-kvm: TRY1 TRY2 BEFORE: 848.740000 846.910000 AFTER: 783.070000 786.560000 with-kvm: TRY1 TRY2 BEFORE: 34.410000 33.57 AFTER: 29.810000 29.580000 Pavel Tatashin (6): mm/memory_hotplug: enforce block size aligned range check x86/mm/memory_hotplug: determine block size based on the end of boot memory mm: uninitialized struct page poisoning sanity checking mm/memory_hotplug: optimize probe routine mm/memory_hotplug: don't read nid from struct page during hotplug mm/memory_hotplug: optimize memory hotplug arch/x86/mm/init_64.c | 33 +++++++++++++++++++++++++++++---- drivers/base/memory.c | 38 +++++++++++++++++++++----------------- drivers/base/node.c | 22 +++++++++++++++------- include/linux/mm.h | 4 +++- include/linux/node.h | 4 ++-- include/linux/page-flags.h | 22 +++++++++++++++++----- mm/memblock.c | 2 +- mm/memory_hotplug.c | 36 ++++++++++++++---------------------- mm/page_alloc.c | 28 ++++++++++------------------ mm/sparse.c | 9 ++++++++- 10 files changed, 120 insertions(+), 78 deletions(-) -- 2.16.1 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>