托马斯·冯德拉:稳定基准测试

托马斯·冯德拉:稳定基准测试

💡 原文英文,约2800词,阅读约需11分钟。
📝

内容提要

在基准测试中,为确保结果准确需过滤噪声。通过多次长时间运行、冷启动和使用大页等方法可减少噪声影响。同时,需关注二进制布局和调度器对性能的影响。优化基准测试时,去除不必要部分能更清晰地反映代码改动效果。

🎯

关键要点

  • 基准测试中需过滤噪声,以确保结果准确。

  • 多次长时间运行和冷启动可以减少噪声影响。

  • 关注二进制布局和调度器对性能的影响。

  • 优化基准测试时,去除不必要部分能更清晰地反映代码改动效果。

  • 传统方法是多次运行基准测试,确保每次运行足够长。

  • 需要根据基准测试和硬件决定运行次数和时长。

  • 冷启动测试可以消除缓存带来的随机噪声。

  • 使用MAP_POPULATE可以减少页面故障带来的噪声。

  • 使用大页可以减少页面表管理的开销。

  • 透明大页(THP)可能会增加噪声,建议禁用。

  • 二进制的布局会影响性能,使用mold的--shuffle-sections选项可以随机化输出。

  • NUMA调度可能会引入噪声,使用numactl可以将进程绑定到特定CPU。

  • 在基准测试中,避免不必要的操作可以提高测量的准确性。

  • 在基准测试中,使用OFFSET跳过结果可以减少开销。

  • 不同的CPU或编译器版本可能会显著影响基准测试结果。

延伸问答

如何在基准测试中减少噪声的影响?

可以通过多次长时间运行、冷启动、使用MAP_POPULATE和大页等方法来减少噪声影响。

冷启动测试的目的是什么?

冷启动测试的目的是消除缓存带来的随机噪声,以确保基准测试结果的准确性。

使用大页对基准测试有什么影响?

使用大页可以减少页面表管理的开销,从而使基准测试的结果更易于测量。

如何优化基准测试以提高准确性?

优化基准测试时,去除不必要的操作可以更清晰地反映代码改动的效果。

二进制布局如何影响基准测试结果?

二进制布局会影响性能,随机化输出可以减少由布局变化引起的噪声。

NUMA调度对基准测试有什么影响?

NUMA调度可能引入噪声,使用numactl可以将进程绑定到特定的CPU,从而减少这种影响。

➡️

继续阅读