web-dev-qa-db-ja.com

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

重要なスワップアラートが発生する理由を調べます。次のようなものが見つかります。

  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使用率を示しているため、非常に小さいにもかかわらず、時間列が増加し続けるのではないでしょうか。

これらのプロセスは「終了」していますか?その場合、それらはどのようにクリーンアップされますか?それらを開始したユーザーは、それらを解放するためにそれらを承認する必要がありますか?

11
CptSupermrkt

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

これは、そのプロセスが0 CPU時間を消費しているためです。これがTIME列の目的です。特定のプロセスが使用したCPU時間を追跡します。

ss #1

このカウントは、プロセスが複数のCPUコアで実行できる場合、利用可能な時間よりも多くの時間を消費する可能性があるため、混乱を招くことがあります。ここで起こっていることは、コアの数がXの場合、時間はX * TIMEとして表示されるということです。

10
slm

あなたがそのような格差を得るかもしれない理由は、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は最も便利なツールなので、man straceそして、このような問題のトラブルシューティングに使用できるオプションを探してください

4
Chux Uzoeto