[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
ffff880000000000 - ffffc7ffffffffff (=64 TB) direct mapping of all phys. memory
[S]内核态物理地址和虚拟地址转化过程
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?
内核是否支持Numa overlap的内存布局?
Another advantage is that sparse
doesn’t require each NUMA node’s
ranges to be contiguous.
MOVABLE_ZONE是不是会overlap其它zone?
如今不会,据说Michal以后会同意overlap。
当然我没有想好overlap后会怎么个运作。