我正在使用 JMH 运行微基准测试评估不同 Java 算法实现的性能。然而,我观察到不一致的吞吐量取决于英特尔 CPU 涡轮增压是否运行的天气。由于涡轮增压是根据环境条件激活的,因此有时它会在某些台架测试中激活,而在其他测试中则不会。因此,一些结果显示出更好的吞吐量只是因为涡轮增压被激活,而不是因为其更高的效率。
因此,我试图通过使用 @GroupThreads(threadsNumber)
和一个等于可用处理器数量的 threadsNumber
注释我的所有测试来避免涡轮增压的影响因此期望在整个基准测试执行期间以满负荷运行所有处理器并激活涡轮增压。
这是正确的方法吗?是否有更可靠的替代方案来避免涡轮增压的影响?
更新:根据@Andreas answer ,另一种方法是在 BIOS 或操作系统设置中关闭涡轮增压。然而,由于 CPU 时钟频率可能会改变,我认为关闭它是不够的,因为 CPU 速度变化也会影响基准测试。因此,也许更可靠的做法是让它保持打开状态,强制运行涡轮增压并将所有线程设置为基准。
哪种方法可以更好地避免涡轮增压的影响?
最佳答案
要阻止 Turbo Boost,请在 BIOS 或操作系统设置中将其关闭。
谷歌 disable turbo boost
至于如何,取决于你的系统。
关于java - 如何在基准测试中避免 Intel turbo boost 的副作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43787550/