流程“时间”停止在最前面的确切含义是什么?


11

我将研究为什么我们会收到严重的掉期警报,并且会发现类似以下内容:

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  SWAP COMMAND
14683 user1     30  10 16.0g 772m  744 S  0.3  0.3 277:24.87 6.5g MATLAB
14576 user1     30  10 8125m 1.1g  736 S  0.3  0.4 261:16.73 4.1g MATLAB

这些进程的TIME +列被冻结。

我的问题是,在上面,这意味着什么?

据我了解,停止时间意味着这是一个休眠进程/未被CPU处理。但是,上面的示例显示了0.3%的CPU使用率,因此尽管事实非常小,但时间列是否应该继续增加?

这些过程是否“完成”了?在这种情况下,如何清理它们?启动它们的用户是否需要确认它们或要释放这些资源的某些东西?


1
如果为0.3%,则每3/4秒为1厘秒。你等了足够长的时间吗?
斯特凡Chazelas

1
令人振奋的启示:时间增加是按CPU使用百分比计算的吗?哇。因此,如果CPU是100%,那等于实时?
CptSupermrkt 2014年

5
TIME是自启动以来,CPU(任何CPU)在进程中运行任何线程所花费的累积时间。因此,如果您有多个CPU内核并且该进程是多线程的,它甚至可以比实时更快。
斯特凡Chazelas

Answers:


10

如果您运行诸如的假作业sleep 120,然后观看它,htop您会注意到其状态为S“ SLEEP”,并且该过程TIME在整个过程中始终保持在0:00.00。

这是因为该进程消耗了0个CPU时间,这是该TIME列的意图。它跟踪给定进程已使用的CPU时间。

              SS#1

如果一个进程可以在多个CPU内核上运行,则此计数有时会令人困惑,因为它看起来可能会花费比可用时间更多的时间。所发生的一切就是,如果您有X个核心,那么您的时间可以显示为X * TIME。


4

之所以会出现这样的差异,是因为TIME +列不考虑所列进程的死生成子进程使用的CPU时间。产生几乎快死的孩子..

So, the CPU usage is due to spawned children which do not count in the TIME+ column. 您可以通过'S'开关将top更改为累计时间。

但是我认为您正在寻找错误的指标以进行调查。

strace -p <pid> 是您的朋友,它可以让您了解正在运行的过程以及它到底在做什么。

Strace需要多种选择。一些值得注意的选项包括-f,-ff,-i,v等。Strace是最有用的工具,因此最好执行a man strace并自己寻找它为您提供的用于解决此类问题的选项

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.