Re: [RFC PATCH part2 0/4] Allow allocating pagetable on local node in movablemem_map.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Yinghai,

Would you please help to review this patch-set ?

And how do you think of the memblock flag idea ?

FYI, Liu Jiang has proposed a similar idea before.
https://lkml.org/lkml/2012/12/6/422

But we may have the following difference:
1) It is a flag, not a tag, which means a range may have several
   different attributes.
2) Mark node-lify-cycle data, and put it on local node, and free
   it when hot-removing.
3) Mark and reserve movable memory, as you did.

Thanks. :)

On 03/21/2013 05:21 PM, Tang Chen wrote:
Hi Yinghai, all,

This patch-set is based on Yinghai's tree:
git://git.kernel.org/pub/scm/linux/kernel/git/yinghai/linux-yinghai.git for-x86-mm

For main line, we need to apply Yinghai's
"x86, ACPI, numa: Parse numa info early" patch-set first.
Please refer to:
v1: https://lkml.org/lkml/2013/3/7/642
v2: https://lkml.org/lkml/2013/3/10/47


In this part2 patch-set, we didi the following things:
1) Introduce a "bool hotpluggable" member into struct numa_memblk so that we are
    able to know which memory ranges in numa_meminfo are hotpluggable.
    All the related apis have been changed.
2) Introduce a new global variable "numa_meminfo_all" to store all the memory ranges
    recorded in SRAT, because numa_cleanup_meminfo() will remove ranges higher than
    max_pfn.
    We need full numa memory info to limit zone_movable_pfn[].
3) Move movablemem_map sanitization after memory mapping is initialized so that
    pagetable allocation will not be limited by movablemem_map.


On the other hand, we may have another way to solve this problem:

Not only pagetable and vmemmap pages, but also all the data whose life cycle is the
same as a node, could be put on local node.

1) Introduce a flag into memblock, such as "LOCAL_NODE_DATA", to mark out which
    ranges have the same life cycle with node.
2) Only keep existing memory ranges in movablemem_map (no need to introduce
    numa_meminfo_all), and exclude these LOCAL_NODE_DATA ranges.
3) When hot-removing, we are able to find out these ranges, and free them first.
    This is very important.

Also, hot-add logic needs to be modified, too. As Yinghai mentioned before, I think
we can make memblock alive when memory is hot-added. And go with the same logic
as it is when booting.

How do you think?


Tang Chen (4):
   x86, mm, numa, acpi: Introduce numa_meminfo_all to store all the numa
     meminfo.
   x86, mm, numa, acpi: Introduce hotplug info into struct numa_meminfo.
   x86, mm, numa, acpi: Consider hotplug info when cleanup numa_meminfo.
   x86, mm, numa, acpi: Sanitize movablemem_map after memory mapping
     initialized.

  arch/x86/include/asm/numa.h     |    3 +-
  arch/x86/kernel/apic/numaq_32.c |    2 +-
  arch/x86/mm/amdtopology.c       |    3 +-
  arch/x86/mm/numa.c              |  161 +++++++++++++++++++++++++++++++++++++--
  arch/x86/mm/numa_internal.h     |    1 +
  arch/x86/mm/srat.c              |  141 +++++-----------------------------
  6 files changed, 178 insertions(+), 133 deletions(-)

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

--
To unsubscribe from this list: send the line "unsubscribe linux-doc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux FS]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux