random tips on coding, ops, ...

Linux 下的 CPU 和 内存热插拔

在 Linux 作为虚拟机的 Guest 系统运行时,如果内核启用了 CPU 和内存的热插拔支持, 则可以在虚拟机的 Host 环境下动态调整 CPU 和 内存的配置。对 VMware ESXi, 在虚拟机配置的选项里里需要打开 “内存/CPU热插拔”选项,之后即可以在 Guest 系统运行时调整相关配置。实际使用时随宿主机和 Guest 的配置不同会遇到不同的限制 条件(如只能增加而不能减少内存,…),以实际使用时的情况为准。

内核的相关的说明文档请参考 Documentation/cpu-hotplug.txt。 和 Documentation/memory-hotplug.txt

CPU 的热插拔通过 /sys/devices/system/cpu/cpuX/online 来控制。其中 X 对应第 X 个 CPU。通过写入 0 或 1 即可控制启用还是禁用该 CPU。 例如 echo 0 > /sys/devices/system/cpu/cpuX/online 禁用第 X 个CPU。

内存的热插拔则对应文件 /sys/devices/system/memory/memory[number]/state,通过 写入 online/offline 来控制。例如 echo online > /sys/devices/system/memory/memory[number]/state 启用相应的内存 区域。find /sys/devices/system/memory -name state -exec bash -c 'echo online > {}' \; 可以用来启用所有可用的内存区域。


comments powered by Disqus