システム動作データを自動的に収集するには、sadc、sa1、sa2 という3 つのコマンドを使用します。
sadc データ収集ユーティリティは、システム動作に関するデータを定期的に収集し、24 時間ごとに 1つのファイルに 2 進形式で保存します。sadc コマンドを定期的に (通常は 1 時間ごとに) 実行したり、システムがマルチユーザーモードでブートするときにも実行するように設定できます。データファイルは、/var/adm/sa ディレクトリに格納されます。各ファイルには sadd という名前が与えられます。この場合、dd は現在の日付です。このコマンドの書式は次のとおりです。
/usr/lib/sa/sadc [t n] [ofile] |
このコマンドは、t 秒 (5 秒より長くする必要があります) 間隔でサンプルデータをn 回収集します。次に、2 進形式 ofile ファイルまたは標準出力に書き込みます。
カウンタが 0 にリセットされるときから統計情報を記録するために、sadc コマンドをシステムのブート時に実行する必要があります。sadc をブート時に確実に実行するために、日ごとのデータファイルにレコードを書き込むコマンド行が /etc/init.d/perf ファイルに含まれます。
/usr/bin/su sys -c "/usr/lib/sa/sadc /var/adm/sa/sàdate +%d`" |
定期的にレコードを生成するには、sadc コマンドを定期的に実行する必要があります。そのためには、/var/spool/cron/crontab/sysファイルの次の行をコメント解除するのが最も簡単な方法です。
# 0 * * * 0-6 /usr/lib/sa/sa1 # 20,40 8-17 * * 1-5 /usr/lib/sa/sa1 # 5 18 * * 1-5 /usr/lib/sa/sa2 -s 8:00 -e 18:01 -i 1200 -A |
sys の crontab エントリによって、次のように動作します。
最初の 2 つの crontab エントリによって、月曜から金曜までは午前 8 時から午後 5 時まで 20 分ごとに、それ以外の曜日は 1 時間ごとに、レコードが /var/adm/sa/sa dd に書き込まれます。
3 番目のエントリは、月曜から金曜までは 1 時間ごとに、レコードを /var/adm/sa/sar dd ファイルに書き込み、すべての sar オプションが含まれます。
これらのデフォルトは、必要に応じて変更できます。
もう 1 つのシェルスクリプト sa2 は、2 進データファイルではなくレポートを生成します。sa2 コマンドは sar コマンドを呼び出して、レポートファイルに ASCII 出力を書き込みます。
sar コマンドを使用すると、システム動作データそのものを収集するか、sadc コマンドで作成された日ごとの動作ファイルに収集された情報をレポートできます。
sar コマンドの書式は次のとおりです。
sar [-aAbcdgkmpqruvwy] [-o file] t [n] |
sar [-aAbcdgkmpqruvwy] [-s time] [-e time] [-i sec] [-f file] |
次の sar コマンドは、オペレーティングシステム内の累積動作カウンタから t 秒間隔で n 回データを収集します。t は、5 秒以上の値にします。それ以外の値にすると、コマンドそのものがサンプルに影響を与えることがあります。また、サンプルの収集間隔を指定する必要があります。 指定しないと、このコマンドは第 2 の書式に従って動作します。n のデフォルト値は 1 です。次の例では、10 秒間隔で 2 つのサンプルが収集されます。-o オプションを指定すると、サンプルは 2 進形式でファイルに保存されます。
$ sar -u 10 2 |
その他に、sar では次の点に注意する必要があります。
サンプル間隔またはサンプル数を指定しなければ、sar コマンドはデータを以前に記録されたファイルから抽出します。その場合は、-f オプションで指定したファイル、またはデフォルトでは最新日付分の標準の日ごとの動作ファイル /var/adm/sa/sadd から抽出されます。
-s オプションと -e オプションでは、レポートの開始時刻と終了時刻を定義します。開始時刻と終了時刻の書式は hh[:mm[ :ss]] です (この場合、h、m、 s は、それぞれ時間、分、秒を表します)。
次の表に sar コマンドのオプションとその動作を示します。
表 24–21 sar コマンドのオプション
オプション |
動作 |
---|---|
-a |
ファイルアクセス操作をチェックする |
-b |
バッファー動作をチェックする |
-c |
システムコールをチェックする |
-d |
各ブロックデバイスの動作をチェックする |
-g |
ページアウトとメモリーの解放をチェックする |
-k |
カーネルメモリーの割り当てをチェックする |
-m |
プロセス間通信をチェックする |
-p |
スワップとディスパッチ動作をチェックする |
-q |
待ち行列動作をチェックする |
-r |
未使用メモリーをチェックする |
-u |
CPU の使用率をチェックする |
-nv |
システムテーブルの状態をチェックする |
-w |
ボリュームのスワッピングと切り替えをチェックする |
-y |
端末動作をチェックする |
-A |
システム全体のパフォーマンスをリポートする (すべてのオプションを入力した場合と同じです) |
オプションを使用しなければ、-u オプションを指定してコマンドを呼び出すのと同じです。
/etc/init.d/perf ファイルを編集して次の行をコメント解除します。
# if [ -z "$_INIT_RUN_LEVEL" ]; then # set -- `/usr/bin/who -r` # _INIT_RUN_LEVEL="$7" # _INIT_RUN_NPREV="$8" # _INIT_PREV_LEVEL="$9" # fi # # if [ $_INIT_RUN_LEVEL -ge 2 -a $_INIT_RUN_LEVEL -le 4 -a \ # $_INIT_RUN_NPREV -eq 0 -a \( $_INIT_PREV_LEVEL = 1 -o \ # $_INIT_PREV_LEVEL = S \) ]; then # # /usr/bin/su sys -c "/usr/lib/sa/sadc /var/adm/sa/sàdate +%d`" # fi |
このバージョンの sadc コマンドは、カウンタが 0 にリセットされる時間 (ブート時) を示す特殊なレコードを書き込みます。
crontab ファイル /var/spool/cron/crontabs/sys の次の行をコメント解除します。
# 0 * * * 0-6 /usr/lib/sa/sa1 # 20,40 8-17 * * 1-5 /usr/lib/sa/sa1 # 5 18 * * 1-5 /usr/lib/sa/sa2 -s 8:00 -e 18:01 -i 1200 -A |