我有一个在戴尔服务器中虚拟化的 RHEL6.5 系统之一上运行 20 个线程(增强线程)的 C++ 程序。结果是确定性的,但 cpu 时间和墙时间在不同的运行中变化很大。有时,完成需要 200s cpu 时间,有时可能需要 300s cpu 时间才能完成。这让我很困扰,因为性能是我们测试的标准。
我已经将最初使用的 boost::timer::cpu_timer 更改为 wall/cpu 时间计算,并使用 sys apis 'clock_gettime' 和 'getrusage'。它没有帮助。
是因为管理程序(Vmware)的“窃取时间”吗?'getrusage' 收集的用户/系统时间中是否包含窃取时间?
有人知道这方面的知识吗?非常感谢。