为什么“top”显示某些进程的运行时间比系统正常运行时间还长?

为什么“top”显示某些进程的运行时间比系统正常运行时间还长?

我的系统出了点问题,phantomjs完成任务后仍然在运行。为了调试这个问题,两天前我重启了系统:

显示两天正常运行时间的屏幕截图

今天我跑步的时候top看到了这个:

“顶部”的屏幕截图显示“时间”列中有 130 多个 phantomjs 进程

如果我理解正确的话,这两个phantomjs进程已经存在大约 5 天了。所以它们在重启后仍然幸存下来?

答案1

来自man top“3a. 字段描述”部分:

   29. TIME  --  CPU Time
       Total  CPU  time the task has used since it started.  When Cumulative 
       mode is On, each process is listed with the cpu time that it and its 
       dead children have used.  You toggle Cumulative mode with `S',  which  
       is  both  a  command-line option and an interactive command. 
       See the `S' interactive command for additional information regarding 
       this mode.

   30. TIME+  --  CPU Time, hundredths
       The same as TIME, but reflecting more granularity through hundredths 
       of a second.

CPU 时间意味着单个 CPU 核心忙于处理此任务或(如果启用累积模式)其任何子任务的时间。

这意味着 CPU 时间与挂钟时间完全无关,它当然可以比进程在挂钟时间内运行的时间短(如果它不一直使用完整的 CPU 核心),但它也可以比实际进程运行时间长(如果你有多核 CPU 并且进程使用其中多个)。

答案2

TIME+列不是以小时和分钟为单位的挂钟时间,而是以分钟和秒(以及百分之一秒)为单位的 CPU 时间。您的屏幕截图显示了两个 phantomjs 进程,每个进程都使用了两个多小时的 CPU 时间。

相关内容