web-dev-qa-db-ja.com

「トップ」に、システムの稼働時間よりも長く実行されているプロセスが表示されるのはなぜですか?

システムに問題があり、phantomjsがジョブの終了後も実行されたままになります。この問題をデバッグするために、2日前にシステムを再起動しました。

Screen shot showing two days of uptime

今日topを実行したとき、私はこれを見ました:

screen shot of "top" showing phantomjs processes with 130+ in the "time" column

正しく理解すれば、これら2つのphantomjsプロセスは約5日間存在していました。それで、彼らはどういうわけか再起動を生き残りましたか?

5
shenkwen

TIME+列は、時間と分での実時間ではなく、分と秒(および100分の1秒)で消費されるCPU時間です。スクリーンショットは、それぞれ2時間以上のCPU時間を使用した2つのphantomjsプロセスを示しています。

10
user4556274

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時間とは、1つのCPUコアがこのタスクの処理でビジーであった時間、または(累積モードがオンの場合)ここでその子のいずれかを意味します。

つまり、CPU時間はウォール時間とはまったく関係がなく、もちろん、プロセスがウォール時間で実行されている時間よりも短くなる可能性があります(常にフルCPUコアを使用しない場合)。実際のプロセスランタイムよりも長い(マルチコアCPUがあり、プロセスが複数のCPUを使用する場合)。

11
Byte Commander