Linux mm相关的问题

[S]为什么High MEM是从896M開始的?

As the running kernel needs these functions, a region of at least
VMALLOC_RESERVE will be reserved at the top of the address space.
VMALLOC_RESERVE is architecture specific but on the x86, it is defined
as 128MiB. This is why ZONE_NORMAL is generally referred to being only
896MiB in size; it is the 1GiB of the upper potion of the linear
address space minus the minimum 128MiB that is reserved for the
vmalloc region.

kernel/process page table是怎么切换的?

物理内存的分部。kernel reserve了哪些,剩下的是怎么给process的。

[S]kernel page table什么时候设置好的?

内核页表成长记

[S]内核页表长什么样子

内核页表成长记

[S]4.9内核最大支持内存为多少?

64 TB

mm.txt

ffff880000000000 - ffffc7ffffffffff (=64 TB) direct mapping of all phys. memory

[S]内核态物理地址和虚拟地址转化过程

_pa() _va()

init_range_memory_mapping()为什么要检測是否重叠

        /*
         * if it is overlapping with brk pgt, we need to
         * alloc pgt buf from memblock instead.
         */
        can_use_brk_pgt = max(start, (u64)pgt_buf_end<<PAGE_SHIFT) >=
                    min(end, (u64)pgt_buf_top<<PAGE_SHIFT);

启用了sparse_mem后,每一个node至少是一个section大小么?

static void set_section_nid(unsigned long section_nr, int nid)
{
    section_to_node_table[section_nr] = nid;
}

那需不须要再alloc node_data的时候检測这个node的大小是否符合要求?

high men?

high map? 内核中还有什么high的?都一样吗?

  • high mem = 896M以上
  • cleanup_highmap(),清理了__START_KERNEL_map以上的映射。这是个虚拟地址的概念。

  • is_highmem_idx(), ZONE_HIGHMEM。这个感觉是物理地址的概念。

[S]how pfn_to_page(), page_to_pfn(), virt_to_page(), page_address() works?

page_to_pfn/pfn_to_page

virt_to_page

内核是否支持Numa overlap的内存布局?

据说能够

Another advantage is that sparse
doesn’t require each NUMA node’s
ranges to be contiguous.

以及对memory hotplug的一个文章

MOVABLE_ZONE是不是会overlap其它zone?

如今不会,据说Michal以后会同意overlap。

当然我没有想好overlap后会怎么个运作。

posted @ 2017-07-24 18:49  brucemengbm  阅读(216)  评论(0编辑  收藏  举报