15.7.8. 启用和禁用内核相同页合并
内核同页合并 (KSM) 通过在虚拟机 (VM) 间共享相同的内存页面来提高内存密度。因此,启用 KSM 可能会提高虚拟机部署的内存效率。
但是,启用 KSM 也会增加 CPU 使用率,并可能会对总体性能造成负面影响,具体取决于工作负载。
在 RHEL 9 及更高版本中,默认禁用 KSM。要启用 KSM 并测试其对虚拟机性能的影响,请参阅以下说明。
先决条件
- 对主机系统有根访问权限。
流程
启用 KSM:
警告启用 KSM 会增加 CPU 使用率并影响整体 CPU 性能。
安装
ksmtuned服务:# {PackageManagerCommand} install ksmtuned启动服务:
要为单个会话启用 KSM,请使用
systemctl程序启动ksm和ksmtuned服务。# systemctl start ksm # systemctl start ksmtuned要永久启用 KSM,请使用
systemctl程序启用ksm和ksmtuned服务。# systemctl enable ksm Created symlink /etc/systemd/system/multi-user.target.wants/ksm.service/usr/lib/systemd/system/ksm.service # systemctl enable ksmtuned Created symlink /etc/systemd/system/multi-user.target.wants/ksmtuned.service /usr/lib/systemd/system/ksmtuned.service
- 监控主机上虚拟机的性能和资源消耗,以评估激活 KSM 的好处。具体来说,请确保 KSM 的额外的 CPU 使用率不会抵消内存改进,且不会造成额外的性能问题。在延迟敏感的工作负载中,还要注意跨 NUMA 页合并。
可选:如果 KSM 没有提高虚拟机性能,请禁用它:
要为单个会话禁用 KSM,请使用
systemctl工具停止ksm和ksmtuned服务。# systemctl stop ksm # systemctl stop ksmtuned要永久禁用 KSM,请使用
systemctl工具禁用ksm和ksmtuned服务。# systemctl disable ksm Removed /etc/systemd/system/multi-user.target.wants/ksm.service. # systemctl disable ksmtuned Removed /etc/systemd/system/multi-user.target.wants/ksmtuned.service.
取消激活 KSM 前在虚拟机间共享的内存页将保持共享。要停止共享,请使用以下命令删除系统中的所有 PageKSM 页:
# echo 2 > /sys/kernel/mm/ksm/run
但是,这个命令会增加内存使用率,并可能导致主机或虚拟机上出现性能问题。