ZONE_MOVABLE
来源:互联网 发布:日本动漫制作软件 编辑:程序博客网 时间:2024/06/05 16:43
ZONE_MOVABLE是内核中内存热插拔相关的重要概念之一。
之前从来没有弄明白过,在这里尝试理理思路。
相关内核配置选项
以下两个选项和movable_node相关:
- MOVABLE_NODE
- MEMORY_HOTREMOVE
获取ZONE_MOVABLE的分布
内核默认在日志中打印了MOVALBE ZONE的分布,只是如果没有开启的话,该信息为空。
dmesg | grep -A 5 "Movalbe zone start"
就可以获得该信息。
启用ZONE_MOVABLE的启动参数
内核在默认情况下不会有movable的区域,需要传入内核参数来启用。
这部分的工作集中在函数find_zone_movable_pfns_for_nodes()中。不过变态的是还有好几个内核参数来控制,下面将按照参数的优先级顺序来介绍。
movable_node
该功能从文档中看意思是能够将整个node都热拔,当然有点恐怖。
在这个阶段,我们看到这个参数的作用是按照BIOS/FW的信息作为MOVABLE ZONE的分界。如果BIOS/FW中标出某memblock是可热插拔的,则被划入MOVABLE ZONE。
kernelcore=mirror
该参数的作用是按照mirror的标志为来判断MOVABLE ZONE的分界。
具体什么意思,不清楚。
movablecore=nn[KMG] || kernel_core=nn[KMG]
这两个内核参数可以同时使用,但是只有经过计算后那个大的值起作用。对这两个参数意义的描述在文档memory-hotplug.txt
如果这两个参数的一个生效,那么会按照node数平均分配内存。