gpt4 book ai didi

linux - cpu时间在虚拟机中跳跃很多

转载 作者:太空宇宙 更新时间:2023-11-04 11:53:25 25 4
gpt4 key购买 nike

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

我已经将最初使用的 boost::timer::cpu_timer 更改为 wall/cpu time calc 并使用 sys apis 'clock_gettime' 和 'getrusage'。这没有帮助。

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

有人知道这方面的知识吗?非常感谢。

最佳答案

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

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

您还提到 CPU 时间不同:这是花在用户代码上的时间。如果您在线程之间进行同步(例如互斥锁等),那么根据操作系统唤醒线程的方式等,整个时间可能会有所不同。

关于linux - cpu时间在虚拟机中跳跃很多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55294769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com