プロセスの「時間」が最上位で停止したとはどういう意味ですか?


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

回答:


10

などの偽のジョブを実行し、sleep 120それを監視すると、htopその状態がS別名「SLEEP」であり、プロセスTIMEがその間0:00.00のままであることがわかります。

これは、そのプロセスがCPU時間を0消費しているためです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、このような問題のトラブルシューティングに役立つオプションを確認することをお勧めします

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.