Linux プロセス アカウンティング - 「cp」フィールドと「cpu」フィールドの違いは何ですか?

Linux プロセス アカウンティング - 「cp」フィールドと「cpu」フィールドの違いは何ですか?

私は、定期的に top をスクレイピングするなどの操作を行う代わりに、プロセス アカウンティングを使用して、私たちの環境で問題となるスクリプトを実行しているさまざまなユーザーとサイトを追跡することを検討してきました。

特に明確でないのは、どの分野が本当に使用された CPU の秒数/分数を示します。私が読んだマニュアル ページには、「cpu」列は消費された秒数を表すと書かれていますが、-m - で表示される「cp」列もあり、異なる合計値が表示されることがあります。たとえば、次のようになります。

-mフラグを使用すると、

 $sa -m | grep username
 username 14944      65.53re      29.90cp     5308k

-u フラグを使用して「cpu」の列を合計すると、次のようになります。

 sa -u |grep username|awk 'BEGIN{TOTAL=0}{TOTAL=TOTAL+$2}END{print TOTAL}'
 1032.86

これら 2 つの異なるモードの「cp」列と「cpu」列の違いを理解できる人はいますか?

ありがとう!

答え1

上記の結果が何を示しているかを説明するために、例を挙げてみましょう。

まず、ユーザーに patrickr として実行し、システムに目に見えるほどの負荷をかけることを目的とした bash スクリプトを作成しました。

#!/bin/bash
#this file is named loop_script.sh
for i in {1..5000}
do
   echo "Welcome $i times"
done

2 つ目: acct をアンインストールしてから再インストールしたので、/var/log/acct のファイルは最新の状態になっています。/var/log/acct/pacct ファイルのコピーを作成しておけば、今後は適切にフォーマットされたファイルで簡単に切り捨てることができます (ファイルを削除して再作成するだけではだめです。そうすると sa が機能しなくなります)。このファイルはシステム上のすべてのコマンドのログであり、私が知る限り、期間に基づいてログの一部を取り出す方法はないことに注意してください。

3番目: その後、このスクリプトをpatrickrとして2回実行しました。

patrickr@hostname:~$ bash loop_script.sh

結果をお伝えし、それについて説明します。

root (またはpatrickr以外のユーザー)として実行 patrickrとして最初のループの後:

**sa -m**
                            24       0.09re       0.03cp         0avio       894k
root                        22       0.07re       0.02cp         0avio       853k
patrickr                    2       0.02re       0.01cp         0avio      1336k

**sa -u |grep patrickr**

patrickr   0.38 cpu     1336k mem      0 io bash             

patrickr として 2 回目のループを実行した後:

**sa -m**
                            30       0.09re       0.03cp         0avio       850k
root                        27       0.07re       0.02cp         0avio       814k
patrickr                    3       0.02re       0.01cp         0avio      1178k

**sa -u |grep patrickr**

patrickr   0.38 cpu     1336k mem      0 io bash            
patrickr   0.35 cpu     1336k mem      0 io bash            
patrickr   0.00 cpu      863k mem      0 io ls  (I happened to also run ls at patrickr)

**sa -u**

The results returned 106 results for a total of 2.86cpu that averaged to 0.03cp

表示される内容は次のとおりです:

sa -m は、このサーバーのすべてのアクティビティの平均を時間経過とともに表示します。このファイルは、実行されるコマンドが増えるにつれて、時間の経過とともに大きくなります。

sa -u | grep patrickr は、特定のコマンドのシステム時間とユーザー時間の合計を CPU 分単位で表示します。

実行中: sa -u |grep patrickr|awk 'BEGIN{TOTAL=0}{TOTAL=TOTAL+$2}END{print TOTAL}'

ユーザー patrick の合計が表示されますが、sa -m コマンドは実際には平均値を表示します。2 番目の例が必要な場合は、メモリ値を確認してください。これらも平均値です。

patrickr について上記にリストした 3 つの結果 (.35 + .37 + .0) を加算し、106 で割って小数点第 1 位に丸めると、0.01cp になります。

0.01cp の結果は、acct アプリケーションがインストールされた時点 (つまり、ファイル /var/log/acct/pacct が追跡を開始してから) からのシステム上のすべての負荷と比較した、システム上のユーザー patrickr の平均負荷です。

Output Fields
cpu   -  sum of system and user time in cpu minutes
re    -  actual time in minutes
k     -  cpu-time averaged core usage, in 1k units
k*sec -  cpu storage integral (kilo-core seconds)
u     -  user cpu time in cpu minutes
s     -  system time in cpu minutes

役に立つ良いリソースは詳しくはこちら(元のリンクが見つかりましたここ)。

関連情報