AMD实例更新GuestOS内核后, 可能出现性能下降问题的说明

本文介绍使用AMD CPUECS实例更新GuestOS内核后,可能出现性能下降问题的原因和解决方案。

问题描述

使用6代及以后的AMD CPUECS实例时,在更新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命令修改
  1. 查看是否存在grubby命令。

    RHEL发行版的操作系统中,默认预装了grubby命令行工具,您可以通过以下命令查询。

    which grubby
  2. 根据业务需要,开启或关闭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"
  3. 重置实例,使配置生效。

    sudo reboot
使用grub2-mkconfiggrub-mkconfig命令修改

本操作以grub2-mkconfig为例进行说明,使用grub-mkconfig命令操作类似。

  1. 查看是否存在grub2-mkconfig命令。

    RHEL发行版的操作系统中,默认包含grub2-mkconfig,您可以通过以下命令查询。

    which grub2-mkconfig
  2. 根据业务需要,开启或关闭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
  3. 生成grub配置文件。

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
  4. 重置实例,使配置生效。

    sudo reboot

Debian、Ubuntu系统

使用update-grub2update-grub命令修改

本操作以update-grub2为例进行说明,使用update-grub命令操作类似。

  1. 查看是否存在update-grub2命令。

    which update-grub2
  2. 根据业务需要,开启或关闭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
  3. 生成grub配置文件。

    sudo update-grub2
  4. 重置实例,使配置生效。

    sudo reboot