本文介绍使用AMD CPU的ECS实例更新GuestOS内核后,可能出现性能下降问题的原因和解决方案。
问题描述
使用6代及以后的AMD CPU的ECS实例时,在更新Linux操作系统版本或当前操作系统升级内核之后,可能会出现性能降低的问题。
问题原因
最新版本的操作系统默认合入了AMD SRSO漏洞的修复补丁,并启用了SafeRET缓解措施,可能会导致实例性能降低。
SafeRET是一种软件缓解机制,用于修复SRSO漏洞,但会引入额外的安全检查,导致处理器性能下降。在一般的生产环境中,AMD认为SRSO相关的整体安全风险较低,因此建议关闭SafeRET以避免性能影响。更多信息,请参见AMD官方针对SRSO漏洞的说明。
解决方案
您可以通过grep . /sys/devices/system/cpu/vulnerabilities/*
查看当前生效的缓解措施。
spec_rstack_overflow的安全缓解措施中如有SafeRET,即表明使能了内核针对SRSO的安全缓解措施,但这会导致一些应用出现较大幅度的性能下降。
如果您信任用户态应用程序,不希望受到性能影响,可以在内核命令行添加
spec_rstack_overflow=off
内核参数并重启,强制关闭SRSO的安全缓解措施。
使用云助手插件查询、开启、关闭SRSO的安全缓解措施
查询SRSO漏洞情况
sudo acs-plugin-manager -e -P ecs_amd_srso_config -p --status
开启SRSO的安全缓解措施
sudo acs-plugin-manager -e -P ecs_amd_srso_config -p --enable
关闭SRSO的安全缓解措施
sudo acs-plugin-manager -e -P ecs_amd_srso_config -p --disable
手动开启、关闭SRSO的安全缓解措施
Alibaba Cloud Linux 、Anolis、CentOS、CentosStream、AlmaLinux、Rocky Linux、Fedora、RHEL系统
使用grubby命令修改
查看是否存在grubby命令。
RHEL发行版的操作系统中,默认预装了grubby命令行工具,您可以通过以下命令查询。
which grubby
根据业务需要,开启或关闭SRSO安全缓解措施。
开启SRSO安全缓解措施。
sudo grubby --update-kernel="$(grubby --default-kernel)" --remove-args="spec_rstack_overflow=off"
关闭SRSO安全缓解措施。
sudo grubby --update-kernel=ALL --args="spec_rstack_overflow=off"
重置实例,使配置生效。
sudo reboot
使用grub2-mkconfig或grub-mkconfig命令修改
本操作以grub2-mkconfig为例进行说明,使用grub-mkconfig命令操作类似。
查看是否存在grub2-mkconfig命令。
RHEL发行版的操作系统中,默认包含grub2-mkconfig,您可以通过以下命令查询。
which grub2-mkconfig
根据业务需要,开启或关闭SRSO安全缓解措施。
开启SRSO安全缓解措施。
sudo sed -i "s/ spec_rstack_overflow=off//g" /etc/default/grub
关闭SRSO安全缓解措施。
sudo sed -i "/GRUB_CMDLINE_LINUX=\"/s/\"$/ spec_rstack_overflow=off\"/" /etc/default/grub
生成grub配置文件。
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
重置实例,使配置生效。
sudo reboot
Debian、Ubuntu系统
使用update-grub2或update-grub命令修改
本操作以update-grub2为例进行说明,使用update-grub命令操作类似。
查看是否存在update-grub2命令。
which update-grub2
根据业务需要,开启或关闭SRSO安全缓解措施。
开启SRSO安全缓解措施。
sudo sed -i "s/ spec_rstack_overflow=off//g" /etc/default/grub
关闭SRSO安全缓解措施。
sudo sed -i "/GRUB_CMDLINE_LINUX=\"/s/\"$/ spec_rstack_overflow=off\"/" /etc/default/grub
生成grub配置文件。
sudo update-grub2
重置实例,使配置生效。
sudo reboot