我可以在 Ubuntu 18.04LTS 中禁用 Spectre 和 Meltdown 缓解功能吗?
我想测试一下,当我在Linux中禁用这两个功能时,我能获得多少性能提升,如果性能很大,就永久保持它。
答案1
许多内核启动参数可用于禁用或微调硬件漏洞缓解措施:
- 适用于 Spectre v1 和 v2:
nospectre_v1
(x86、PowerPC)、nospectre_v2
(x86、PowerPC、S/390、ARM64)、spectre_v2_user=off
(x86) - 对于 SSB:
spec_store_bypass_disable=off
(x86、PowerPC)、ssbd=force-off
(ARM64) - 对于 L1TF:
l1tf=off
(x86) - 对于MDS:
mds=off
(x86) - 对于TAA:
tsx_async_abort=off
- 对于 iTLB 多重命中:
kvm.nx_huge_pages=off
- 对于SRBDS:
srbds=off
- 对于再出血:
retbleed=off
- KPTI
nopti
可以通过(x86、PowerPC)或kpti=0
(ARM64)禁用
mitigations
引入了元参数 ,在5.2中并向后移植到 5.1.2、5.0.16 和 4.19.43(或许还有其他版本)。它可用于控制所有架构上的所有缓解措施,如下所示:
mitigations=off
将禁用所有可选的 CPU 缓解措施;mitigations=auto
(默认设置)将缓解所有已知的 CPU 漏洞,但保持 SMT 启用(如果已启用);mitigations=auto,nosmt
将缓解所有已知的 CPU 漏洞并在适当的情况下禁用 SMT。
其中一些可以在运行时切换;有关详细信息,请参阅链接的文档。
答案2
使用内核 5.1.13 或更高版本:
在启动参数上您可以使用
mitigations=off
使用早于 5.1.13 的内核:
noibrs noibpb nopti nospectre_v2 nospectre_v1 l1tf=off nospec_store_bypass_disable no_stf_barrier mds=off mitigations=off
mitigations=off
将其中一个或那个长单行添加到您的文件中/etc/sysconfig/grub
,并使用以下命令重新生成 grub 的配置文件
grub2-mkconfig
(您的分配程序会有所不同)。
Debian/Ubuntu 衍生发行版:
编辑文件/etc/default/grub
然后运行
update-grub
答案3
在 Fedora 37 上,具有足够新的内核,可以通过打印/sys/devices/system/cpu/vulnerabilities/
.
$ grep . /sys/devices/system/cpu/vulnerabilities/*
/sys/devices/system/cpu/vulnerabilities/itlb_multihit:KVM: Mitigation: VMX disabled
/sys/devices/system/cpu/vulnerabilities/l1tf:Not affected
/sys/devices/system/cpu/vulnerabilities/mds:Not affected
/sys/devices/system/cpu/vulnerabilities/meltdown:Not affected
/sys/devices/system/cpu/vulnerabilities/mmio_stale_data:Mitigation: Clear CPU buffers; SMT vulnerable
/sys/devices/system/cpu/vulnerabilities/retbleed:Mitigation: Enhanced IBRS
/sys/devices/system/cpu/vulnerabilities/spec_store_bypass:Mitigation: Speculative Store Bypass disabled via prctl
/sys/devices/system/cpu/vulnerabilities/spectre_v1:Mitigation: usercopy/swapgs barriers and __user pointer sanitization
/sys/devices/system/cpu/vulnerabilities/spectre_v2:Mitigation: Enhanced IBRS, IBPB: conditional, RSB filling, PBRSB-eIBRS: SW sequence
/sys/devices/system/cpu/vulnerabilities/srbds:Mitigation: Microcode
/sys/devices/system/cpu/vulnerabilities/tsx_async_abort:Not affected
要一次性禁用缓解措施,请执行以下操作
sudo grubby --update-kernel=ALL --args="mitigations=off"
看看重启后打印输出如何变化
$ grep . /sys/devices/system/cpu/vulnerabilities/*
/sys/devices/system/cpu/vulnerabilities/itlb_multihit:KVM: Mitigation: VMX disabled
/sys/devices/system/cpu/vulnerabilities/l1tf:Not affected
/sys/devices/system/cpu/vulnerabilities/mds:Not affected
/sys/devices/system/cpu/vulnerabilities/meltdown:Not affected
/sys/devices/system/cpu/vulnerabilities/mmio_stale_data:Vulnerable
/sys/devices/system/cpu/vulnerabilities/retbleed:Vulnerable
/sys/devices/system/cpu/vulnerabilities/spec_store_bypass:Vulnerable
/sys/devices/system/cpu/vulnerabilities/spectre_v1:Vulnerable: __user pointer sanitization and usercopy barriers only; no swapgs barriers
/sys/devices/system/cpu/vulnerabilities/spectre_v2:Vulnerable, IBPB: disabled, STIBP: disabled, PBRSB-eIBRS: Vulnerable
/sys/devices/system/cpu/vulnerabilities/srbds:Vulnerable
/sys/devices/system/cpu/vulnerabilities/tsx_async_abort:Not affected
当心:Spectre 概念验证漏洞可在浏览器 JavaScript 中运行
作为leaky.page 概念验证表明,可以从浏览器 JavaScript 代码中利用此漏洞。因此,只要您使用网络浏览器,保持缓解措施就有价值。