首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行时间大大超过user+kernel时间的原因是什么?

运行时间大大超过user+kernel时间的原因是什么?
EN

Stack Overflow用户
提问于 2011-08-03 08:52:13
回答 2查看 1.6K关注 0票数 0

我看到很多线程询问运行时间(挂起时间)小于user+kernel时间的情况,我理解多线程是如何导致这种情况的。但是,当通过以下方式对某些MPI代码的执行进行计时时:

$ time mpirun -n 4 ./a.out

我看到的运行时间从4-5分钟不等,用户时间约为40秒,内核时间约为40秒。我在想,进程之间的屏障同步可能是部分原因,或者可能是时间只能获得关于单个MPI进程的信息,但我仍然无法确切地解释是什么导致了我的读数。有谁能解释一下吗?

非常感谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-03 09:11:39

对于许多进程,我预计挂钟时间会大大超过总CPU时间。很少有进程受CPU限制,因此它们将花费大量时间等待。幸运的是,等待时间不再计入进程的费用。导致等待的事情:

任何类型(磁盘、网络、进程间管道、分配给其他进程的processes.

  • Time切片之间的etc.).

  • Resource同步)的
  • I/O。
  • 内存交换(不是很常见的任何其他类型的days).
  • Interrupts。

即使是繁重的统计软件也可能进行I/O,这将导致CPU利用率低于时钟时间。

一个极端的例子是将一个大文件从磁盘上的一个分区复制到同一磁盘上的另一个分区。这会占用大量的挂载时间和很少的CPU时间。如果您能够使用ionice,则可以在磁盘忙于其他工作时设置更长的挂起时间。

下面的命令显示的实际(挂钟)时间可能比用户时间和系统时间的总和要高得多。

代码语言:javascript
复制
time bash -c "read ans"
票数 3
EN

Stack Overflow用户

发布于 2011-08-03 09:06:33

用户/内核时间仅在处理器使用时递增。如果您的代码主要在等待诸如磁盘或网络IO之类的东西,则实际运行时间将远远大于CPU时间。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6920504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档