2

特定のサーバー上の複数のプロセスの CPU 使用率を計算する必要があります。オプションのいくつかは以下のとおりです

a) psを使用してプロセスの CPU 使用率を見つけることができますが、ps はプロセスの存続期間中の CPU 使用率を示します。任意の時点で、CPU がプロセスによって使用されているかどうか。

b) vmstat は、プロセスごとの CPU 使用率を表示しません。

c) top を使用して、プロセスの CPU 使用率を見つけることができます。

トップ -b -n 2 -d 1 | grep 'mysqld' | テール -n 1

n=1 の場合、top コマンドは ps のように動作し、ブート以降のプロセスの CPU 使用率を示します。したがって、n=2 を使用し、最初の行の末尾を無視すると、その瞬間の CPU 使用率が得られます。

https://superuser.com/questions/609949/what-are-the-methods-available-to-get-the-cpu-usage-in-linux-command-line

ただし、最初の数行を無視すると、複数の grep 文字列 (プロセス名) では機能せず、状態が変化し続けるため、プロセスのどこが常に先頭に表示されるとは限りません。

トップ -b -n 2 -d 1 | grep 'mysqld\|Apache' | テール -n 1

したがって、複数のプロセスに対してこれを行う1つの方法は、マップのような構造を維持し、2回目にのみ表示されるプロセスのCPU使用率のみを取得することです.しかし、これが効率的かどうかはわかりません.特定のプロセスは明らかに十分に効率的ではありません.1つのトップに複数のプロセスがあるgrepと同じだと思います。

4) top は /proc/stats 情報を内部的に使用するため、このロジックを自分で明示的に実装できます。

CからLinuxでPIDによってプロセスのCPU使用率を計算する方法は?

どちらがより良い選択肢でしょうか?

4

1 に答える 1