共计 1015 个字符,预计需要花费 3 分钟才能阅读完成。
需求:Centos7 限制服务器可用的的 cpu 及内存与同等配置的虚拟机做对比。
解决方法
方法 1(关闭超线程)
步骤 1:编辑 /etc/default/grub
修改 : quiet mem=66GiB maxcpus=16 possible_cpus=16GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rhgb quiet mem=66GiB maxcpus=16 possible_cpus=16 transparent_hugepage=never"
步骤 2:执行 grub2-mkconfig 命令
grub2-mkconfig -o /boot/grub2/grub.cfg
步骤 3:重启服务器
重启之后配置就会生效
需要注意的点
(1)因为不同服务器挂载的硬件不一样,比如物理机有各种接口,驱动。所以本身系统会占用一定的资源。会导致如果配置与虚拟机相同的内存。可用的内存会比虚拟机少,这个可以给物理机多配置一些。调整看。最终达到服务器本身可用内存保持一致。
(2)GRUB_CMDLINE_LINUX 中的 maxcpus 和 possible_cpus 须保持一致,否则会有内核启动错误一直占用终端,解决可看 https://blog.csdn.net/weixin_33713707/article/details/92368339;
(3)并且 maxcpus 和 possible_cpus 的设置的数量既是物理核的数量也是逻辑核的数量,即超线程将会被关闭,如果想要 cpu 既开启超线程,又使得物理核的数量减少,参考方法 2
方法 2:下线部分 cpu
可以使用如下指令:
# 单个逻辑核下线(3 号逻辑核)
echo 0 > /sys/devices/system/cpu/cpu3/online
# 单个逻辑核上线(3 号逻辑核)
echo 1 > /sys/devices/system/cpu/cpu3/online
不过这里待下线逻辑核序号的选择有讲究,如下图 node0 的 cpu 的逻辑核为 0 -7,20-27,这里已经关闭了 4 个逻辑核(8,9,28,29)(node1 cpu 所有物理核都被关闭了),最终的结果是 node0 cpu 被我们关闭了 2 个物理核,4 个逻辑核,并且剩余的物理核的超线程被保留了。
就是因为是“对称”地关闭以 "," 分割的两段序列,使得关闭的逻辑核是属于同一个物理核的,这就达到我们的目的了。
即关键是要“对称”地关闭逻辑核序号就能保留超线程
文章首发于:https://nebofeng.com/2020/12/24/centos7-limit-cpu-and-memory/