Hi,
I will not get to review this version before Mar 12 because I am moving
and will be without access to my email and I am pretty sure the time
will not work well for me either.

Sorry about that.

On Tue 27-02-18 22:03:02, Pavel Tatashin wrote:
> Changelog:
>       v5 - v4
>       - Addressed more comments from Ingo Molnar and Michal Hocko.
>       - In the patch "optimize memory hotplug" we are now using
>         struct memory_block to hold node id as suggested by Michal.
>       - In the patch "don't read nid from struct page during hotplug"
>         renamed register_new_memory() to hotplug_memory_register() as
>         suggested by Ingo. Also, in this patch replaced the
>         description with the one provided by Michal.
>       - Fixed other spelling issues found by Ingo.
> 
>       v3 - v4
>       Addressed comments from Ingo Molnar and from Michal Hocko
>       Split 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: add 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      | 40 ++++++++++++++++++++++------------------
>  drivers/base/node.c        | 24 +++++++++++++++++-------
>  include/linux/memory.h     |  3 ++-
>  include/linux/mm.h         |  4 +++-
>  include/linux/node.h       |  4 ++--
>  include/linux/page-flags.h | 22 +++++++++++++++++-----
>  mm/memblock.c              |  2 +-
>  mm/memory_hotplug.c        | 44 +++++++++++++++++---------------------------
>  mm/page_alloc.c            | 28 ++++++++++------------------
>  mm/sparse.c                |  8 +++++++-
>  11 files changed, 127 insertions(+), 85 deletions(-)
> 
> -- 
> 2.16.2
> 

-- 
Michal Hocko
SUSE Labs

Reply via email to