我有一对 CentOS 7 服务器(2009 年 9 月 7 日),每台服务器有 8 个物理 CPU。其中,我试图隔离核心 4-8(操作系统认为是 3-7)。
我将标签添加isolcpus=3-7
到参数/etc/default/grub
后面GRUB_CMDLINE_LINUX
,运行grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
生成新的配置文件并重新启动。
两台服务器都遵循该设置,如/sys/devices/system/cpu/isolated
- 它显示了我指定的核心 3-7。
然而,关于一在服务器中,只有一个所谓的核心在其上运行系统进程(systemd
等等lvmetad
) - 尽管多次重新启动,操作系统在实践中似乎并不尊重核心隔离。
我使用该numactl
命令查看哪些核心也被隔离,并且服务器之间的输出确实有所不同(命令是numactl -s | grep physcpubind
:
服务器 1(尊重隔离):
physcpubind: 0 1 2 3
服务器 2(不尊重隔离):
physcpubind: 4 5 6 7
我对可能导致此问题的原因以及如何解决此问题感到非常困惑 - 任何提示将不胜感激。
谢谢你!
答案1
第二台服务器上的 CPU 0-3 在哪里?
根据您的 numactl 输出,由于某种原因,您似乎只有 4-7 个在线,如果您将其隔离,那么内核将忽略您的 isolcpus 参数,因为您无法隔离启动 CPU。也许尝试isolcpus=0-3,5-7
或isolcpus=5-7
确认。请注意,隔离最后一个在线 CPU 之后的 CPU 也可以具有相同的效果,但也取决于提供给内核的硬件信息,因此它可能在某些情况下有效,但在其他情况下无效。
lscpu -p
两台服务器的输出将有助于进一步排除故障。启动后还要查看 dmesg 中是否有与 cpus 或 isolcpus 命令行选项相关的任何异常消息。