openSUSE默认使用IBRS作为其Spectre Variant 2缓解方法而不是Retpolines,这是该发行版与其他Linux发行版相比开箱即用性能较慢的原因之一。 |
这个opensuse-factory邮件列表引用了联想笔记本电脑在使用openSUSE时“巨大的单核性能损失”。围绕Spectre Variant 2 缓解措施的单线程性能损失约21%,这本身并不令人惊讶,因为我们已经多次说明了Spectre/Meltdown缓解的性能成本。
openSUSE的内核正在使用IBRS(间接分支限制投机)和最新的英特尔CPU微代码映像,而大多数Linux发行版依赖于Retpolines作为返回trampolines。与Retpolines相比,IBRS缓解技术可能会导致更多的性能损失,据报道,与更新的Intel CPU微代码相匹配时,由于更严格的推测行为,会产生更大的性能损失。
根据邮件列表讨论,切换到Retpolines以查找有问题的工作负载可以恢复性能。
希望使用非默认方法的openSUSE用户可以使用spectre_v2=retpoline来选择它,这是一个通用内核命令行参数,与大多数其他Linux发行版内核的行为相匹配。
至于openSUSE更改他们的默认值,至少从之前的邮件列表讨论来看,他们的内核工程师似乎没有兴趣更改Spectre的缓解默认值,但只是将英特尔的糟糕表现归咎于他们的问题。
有些人还建议openSUSE安装程序在其安装程序中选择一个切换,以便通知用户安全性与性能偏好,从而更好地提供合理/明智的默认设置,但到目前为止,我们还没有看到采取任何措施来实现这一点。虽然考虑到一些openSUSE的保守默认值与大多数其他Linux发行版相比确实存在性能影响。
以前Retpolines使用的障碍需要Retpolines编译器支持,但这种支持现在已经有一段时间了。据报道,Skylake过去曾报道过Retpolines问题,但这些问题似乎也得到了解决。