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数平均分配内存。

原创粉丝点击