cpu时间在虚拟机中跳很多

时间:2019-03-22 07:29:18

标签: linux multithreading virtual-machine cpu-time

我有一个C ++程序,它在Dell服务器中虚拟化的RHEL6.5系统之一上以20个线程(增强线程)运行。结果是确定的,但是cpu时间和墙时间在不同的运行中变化很大。有时需要200秒的CPU时间才能完成,有时可能需要300秒的CPU时间才能完成。性能困扰我们的测试,这让我感到困扰。

我已将最初使用的boost :: timer :: cpu_timer更改为wall / cpu时间计算,并使用sys api'clock_gettime'和'getrusage'。这没有帮助。

是因为管理程序(Vmware)的“窃取时间”吗? “ getrusage”收集的用户/系统时间中是否包含偷窃时间?

有人对此有知识吗?非常感谢。

1 个答案:

答案 0 :(得分:0)

如果您提供了一些额外的信息,它将很有用。例如,您的线程是否依赖?意味着它们之间有同步吗?

由于使用的是虚拟机,因此如何与服务器的其他用户共享CPU。可能甚至是同一单个CPU内核也被共享,因此并不是每次您都具有相同的CPU资源分配时[这就是您上面提到的窃取时间]。

您还提到CPU时间是不同的:这是在用户代码中花费的时间。如果线程之间具有同步(例如互斥锁等),则取决于操作系统如何唤醒线程等,整个时间可能会有所不同。

相关问题