Solaris のシステム管理 (上級編)

システム動作データの自動収集 (sar)

システム動作データを自動的に収集するには、sadcsa1sa2 という3 つのコマンドを使用します。

sadc データ収集ユーティリティは、システム動作に関するデータを定期的に収集し、24 時間ごとに 1つのファイルに 2 進形式で保存します。sadc コマンドを定期的に (通常は 1 時間ごとに) 実行したり、システムがマルチユーザーモードでブートするときにも実行するように設定できます。データファイルは、/var/adm/sa ディレクトリに格納されます。各ファイルには sadd という名前が与えられます。この場合、dd は現在の日付です。このコマンドの書式は次のとおりです。


/usr/lib/sa/sadc [t n] [ofile]

このコマンドは、t 秒 (5 秒より長くする必要があります) 間隔でサンプルデータをn 回収集します。次に、2 進形式 ofile ファイルまたは標準出力に書き込みます。

ブート時に sadc コマンドを実行する

カウンタが 0 にリセットされるときから統計情報を記録するために、sadc コマンドをシステムのブート時に実行する必要があります。sadc をブート時に確実に実行するために、日ごとのデータファイルにレコードを書き込むコマンド行が /etc/init.d/perf ファイルに含まれます。

コマンドエントリの書式は次のとおりです。


/usr/bin/su sys -c "/usr/lib/sa/sadc /var/adm/sa/sàdate +%d`"

sa1 スクリプトを使用して sadc コマンドを定期的に実行する

定期的にレコードを生成するには、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

syscrontab エントリによって、次のように動作します。

これらのデフォルトは、必要に応じて変更できます。

sa2 スクリプトを使用してレポートを生成する

もう 1 つのシェルスクリプト sa2 は、2 進データファイルではなくレポートを生成します。sa2 コマンドは sar コマンドを呼び出して、レポートファイルに ASCII 出力を書き込みます。

データの自動収集を設定する (sar)

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 コマンドのオプションとその動作を示します。

表 24–21 sar コマンドのオプション

オプション 

動作 

-a

ファイルアクセス操作をチェックする 

-b

バッファー動作をチェックする 

-c

システムコールをチェックする 

-d

各ブロックデバイスの動作をチェックする 

-g

ページアウトとメモリーの解放をチェックする 

-k

カーネルメモリーの割り当てをチェックする 

-m

プロセス間通信をチェックする 

-p

スワップとディスパッチ動作をチェックする 

-q

待ち行列動作をチェックする 

-r

未使用メモリーをチェックする 

-u

CPU の使用率をチェックする 

-nv

システムテーブルの状態をチェックする 

-w

ボリュームのスワッピングと切り替えをチェックする 

-y

端末動作をチェックする 

-A

システム全体のパフォーマンスをリポートする (すべてのオプションを入力した場合と同じです) 

オプションを使用しなければ、-u オプションを指定してコマンドを呼び出すのと同じです。

自動データ収集を設定する方法

  1. スーパーユーザーになります。

  2. /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 にリセットされる時間 (ブート時) を示す特殊なレコードを書き込みます。

  3. 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