重要な交換通知を受け取った理由を調べたところ、次のようなものが見つかります。
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で処理されないことを意味します。ところで、上記の例ではCPU使用量が0.3%なので、時間列が非常に小さくても引き続き増やすべきではないでしょうか?
これらのプロセスは「完了」されていますか?このような場合は、どのように清掃する必要がありますか?これを開始したユーザーは、これを確認したり、これらのリソースを解放したりするために他の措置を講じる必要がありますか?
答え1
たとえば、偽のジョブを実行してsleep 120
からそれを観察すると、その状態は別名「休止」であり、プロセスは全期間0:00.00に維持されることhtop
がわかります。S
TIME
これは、プロセスがTIME
この列の目的である0 CPU時間を消費するためです。特定のプロセスが使用したCPU時間を追跡します。
プロセスが複数のCPUコアで実行できる場合、この計算は使用可能な時間よりも多くの時間を費やすように見えるため、時折混乱することがあります。 Xコアがある場合、時間はX * TIMEとして表示されます。
答え2
この違いが発生するのは、TIME + 列がリストされたプロセスの終了によって生成されたサブプロセスで使用される CPU 時間を考慮していないためです。だからあなたが示す行は、アプリケーションがほぼ即座に死ぬ子供を生成していることを示します。
So, the CPU usage is due to spawned children which do not count in the TIME+ column.
「S」スイッチを使用して上部を変更して累積時間を実行できます。
しかし、私の考えでは、あなたが調査したいものの間違った指標を探しているようです。
strace -p <pid>
どのプロセスが実行中で、正確に何をしているのかを知らせる友人です。
Straceにはいくつかのオプションがあります。注目すべきオプションには、-f、-ff、-i、vなどがあります。 Straceは最も便利なツールなので、man strace
これらの問題を解決するために提供されているオプションを直接確認することをお勧めします。