如何对内核进行基准测试(-Os vs -O2)

如何对内核进行基准测试(-Os vs -O2)

在我看来,在 64 位内核上对其进行编译以优化大小可能总体上会有所帮助。(我选择的发行版使用 -O2)它具有比普通优化代码更多的寄存器和内存以及更少的缓存争用的好处。我有一个像这样编译的内核,它看起来很棒。但我的问题是,我该如何证明这一点?我喜欢使用 Phoronix 进行“真实世界”类型的基准测试,所以我更喜欢测试这样的案例。我应该选择什么来测试?还有其他人有其他选择吗?提前非常感谢。

答案1

如果你的 -Os 编译的内核“看起来很优秀”,我认为你不应该关心对它进行基准测试,原因如下:

基准测试的问题始终在于选择测试哪种类型的负载。
即使Phoronix 测试套件可以突出显示不同内核版本之间的差异,但您不能自己使用它来证明您的内核在您自己的负载下表现更好,因为您不会每天要求它执行相同的操作。

如果您仍想尝试此操作:
也许您可以尝试对您最常使用的应用程序或需要很长时间才能完成的应用程序(3D 渲染/编译/OLAP 样式查询,又名多维数据集/彩虹表生成......)进行基准测试,看看是否可以找到收益。

我个人非常怀疑在现代台式机 CPU 上使用 -Os 是否真的(可测量、可重复)加速(尽管嵌入式 CPU 可以获得一些性能)。使用 -O2 进行稍微激进的优化(源文章) 可能比 -Os 内核的最小尺寸更有趣。

这张图表

如果你需要更多信息或想更深入地讨论 gcc 优化,你可以访问 freenode IRC 上的 #gentoo 频道或gentoo 论坛,但请记住:不要提及“ricer”一词^^

相关内容