システム動作についてのデータを編成し表示する
特殊な要求に基づいて、システム動作データにアクセスする
システム性能を測定および監視するレポートを自動的に生成する。また、特定の性能障害を正確に突き止めるための、特殊な要求レポートも生成する。「システム動作データの自動収集 (sar)」を参照
このコマンドの詳細は、sar(1) のマニュアルページを参照してください。
sar -a コマンドを使用すると、ファイルアクセス操作の統計情報が表示されます。
$ sar -a SunOS venus 5.7 Generic sun4m 06/17/98 00:00:01 iget/s namei/s dirbk/s 01:00:01 0 1 0 02:00:01 0 1 0 03:00:00 0 1 0 04:00:01 0 1 0 05:00:01 0 1 0 06:00:01 0 1 0 07:00:01 0 1 0 08:00:01 0 1 0 08:20:01 0 1 0 08:40:00 0 0 0 09:00:01 0 1 0 09:20:00 0 3 0 09:40:00 0 3 0 10:00:02 0 3 1 10:20:02 0 11 7 Average 0 1 0
表 26-7 に、レポートされるオペレーティングシステムのルーチンを示します。
表 26-7 sar -a コマンドからの出力
フィールド名 |
説明 |
---|---|
iget/s |
ディレクトリ名検索キャッシュ (dnlc) 内に入っていない i ノードに対して出された要求数 |
namei/s |
1 秒当りのファイルシステムパスの検索数。namei で dnlc 内にディレクトリ名が見つからない場合は、iget が呼び出され、ファイルまたはディレクトリの i ノードが取得される。したがって、ほとんどの igets は dnlc が欠落した結果である |
dirbk/s |
1 秒間に実行されたディレクトリブロックの読み取り回数 |
表示される値が大きいほど、カーネルはユーザーファイルへのアクセスに長い時間を費やしています。この時間には、プログラムとアプリケーションによるファイルシステムの使用量が反映されます。-a オプションを使用すると、アプリケーションのディスク依存度を表示できるので便利です。
sar -b コマンドを使用すると、バッファー動作の統計情報が表示されます。
バッファーは、i ノード、シリンダグループブロック、間接ブロックなどのメタデータをキャッシュに書き込むために使用されます。
$ sar -b 0:0:03 bread/s lread/s %rcache bwrit/s lwrit/s %wcache pread/s pwrit/s 1:0:02 0 0 100 0 0 57 0 0
表 26-8 は、-b オプションを指定したときに表示されるバッファー動作を示します。最も重要なエントリは、キャッシュヒット率 %rcache と %wcache です。この 2 つのエントリは、システムバッファーリングの効率を測定します。%rcache が 90 未満の場合や、%wcache が 65 未満の場合は、バッファー領域を大きくすれば性能を改善できる可能性があります。
表 26-8 sar -b コマンドからの出力
フィールド名 |
説明 |
---|---|
bread/s |
ディスクからバッファーキャッシュに投入された 1 秒当りの平均読み取り数 |
lread/s |
バッファーキャッシュからの 1 秒当りの平均論理読み取り数 |
%rcache |
バッファーキャッシュ内で見つかった論理読み込み数の小数部 (lread/s に対する bread/s の比を 100% から差し引いた値) |
bwrit/s |
バッファーキャッシュからディスクに書き込まれた 1 秒当りの平均物理ブロック数 (512 ブロック) |
lwrite/s |
バッファーキャッシュへの 1 秒当りの平均論理書き込み数 |
%wcache |
バッファーキャッシュ内で見つかった論理書き込み数の小数部 (lwrit/s に対する bwrit/s の比を 100% から差し引いた値) |
pread/s |
キャラクタ型デバイスインタフェースを使用する 1 秒当りの平均物理読み取り数 |
pwrit/s |
キャラクタ型デバイスインタフェースを使用する 1 秒当りの平均物理書き込み要求数 |
次の sar -b 出力の例は、すべてのデータは許容範囲に収まっているので、%rcache バッファーと %wcache バッファーが処理速度低下の原因ではないことを示します。
$ sar -b SunOS venus 5.7 Generic sun4m 06/17/98 00:00:01 bread/s lread/s %rcache bwrit/s lwrit/s %wcache pread/s pwrit/s 01:00:01 0 0 100 0 0 56 0 0 02:00:01 0 0 100 0 0 55 0 0 03:00:00 0 0 99 0 0 58 0 0 04:00:01 0 0 100 0 0 55 0 0 05:00:01 0 0 100 0 0 55 0 0 06:00:01 0 0 100 0 0 55 0 0 07:00:01 0 0 100 0 0 55 0 0 08:00:01 0 0 100 0 0 56 0 0 08:20:01 0 0 100 0 0 56 0 0 08:40:00 0 0 100 0 0 56 0 0 09:00:01 0 0 100 0 0 57 0 0 09:20:00 0 1 98 0 1 59 0 0 09:40:00 0 1 99 0 1 59 0 0 10:00:02 0 0 96 0 0 57 0 0 10:20:02 0 1 99 0 1 60 0 0 Average 0 0 99 0 0 57 0 0
sar -c コマンドを使用すると、システムコールの統計情報が表示されます。
$ sar -c 00:00:01 scall/s sread/s swrit/s fork/s exec/s rchar/s wchar/s 01:00:01 2071 231 230 0.01 0.00 923483 923298
表 26-9 に、-c オプションでレポートされる次のシステムコールのカテゴリを示します。一般に、reads と writes はシステムコール合計の約半分ですが、割合はシステムで実行中の動作によって大幅に変動します。
表 26-9 sar -c コマンドからの出力
フィールド名 |
説明 |
---|---|
scall/s |
1 秒当りのすべてのタイプのシステムコール数 (通常は、ビジーな 4 ないし 6 ユーザーのシステム上で 1 秒当り約 30) |
sread/s |
1 秒当りの read システムコール数 |
swrit/s |
1 秒当りの write システムコール数 |
fork/s |
1 秒当りの fork システムコール数 (4 ないし 6 ユーザーのシステム上で毎秒約 0.5)。この数値は、シェルスクリプトの実行中は大きくなる |
exec/d |
1 秒当りの exec システムコール数。exec/s を fork/s で割った値が 3 より大きい場合は、効率の悪い PATH 変数を調べる |
rchar/s |
read システムコールによって転送される 1 秒当りの文字 (バイト) 数 |
wchar/s |
write システムコールによって転送される 1 秒当りの文字 (バイト) 数 |
次の例に、sar -c コマンドからの出力を示します。
$ sar -c SunOS venus 5.7 Generic sun4m 06/17/98 00:00:01 scall/s sread/s swrit/s fork/s exec/s rchar/s wchar/s 01:00:01 2071 231 230 0.01 0.00 923483 923298 02:00:01 2071 231 230 0.01 0.00 923789 923603 03:00:00 2070 231 229 0.02 0.02 922355 922140 04:00:01 2073 231 230 0.01 0.00 924497 924312 05:00:01 2071 231 230 0.01 0.00 923577 923392 06:00:01 2071 231 230 0.01 0.00 923740 923554 07:00:01 2071 231 230 0.01 0.00 923545 923360 08:00:01 2074 231 230 0.01 0.00 924737 924552 08:20:01 2071 231 229 0.01 0.01 923096 922884 08:40:00 2071 231 230 0.00 0.00 923610 923438 09:00:01 2071 231 229 0.01 0.01 923343 923163 09:20:00 571 70 58 0.03 0.03 226013 218929 09:40:00 197 38 16 0.02 0.03 11321 3021 10:00:02 207 41 14 0.08 0.07 28534 5795 10:20:02 782 183 30 0.49 0.49 148126 14726 Average 1861 212 204 0.03 0.03 9691 3994
sar -d コマンドを使用すると、ディスク動作の統計情報が表示されます。
$ sar -d 00:00:01 device %busy avque r+w/s blks/s avwait avserv 01:00:01 fd0 0 0.0 0 0 0.0 0.0
表 26-10 は、-d オプションを使用したときに表示されるディスクデバイス動作を示します。待ち行列内に何かがあるときは、待ち行列の長さと待ち時間が計測されるので注意してください。%busy の値が小さい場合に、待ち行列とサービス時間が大きければ、変更されたブロックをディスクに随時書き込むために、システムが定期的に処理していることを示す場合があります。
表 26-10 sar -d コマンドからの出力
フィールド名 |
説明 |
---|---|
device |
監視中のディスクデバイス名 |
%busy |
デバイスが転送要求のサービスに費やす時間の割合 |
avque |
平均待ち時間と平均サービス時間の合計 |
r+w/s |
デバイスへの 1 秒当りの読み取り転送数と書き込み転送数 |
blks/s |
デバイスに転送される 1 秒当りの 512 バイトブロック数 |
avwait |
待ち行列内でアイドル状態で待機中の要求を転送する平均ミリ秒数 (待ち行列に要求が入っているときのみ計測) |
avserv |
デバイスが転送要求を完了するまでの平均ミリ秒数 (ディスクの場合は、この値にシークタイム、回転待ち時間、データ転送時間が含まれる) |
次の 2 つの例は、sar -d コマンドの例を示します。第 1 の例は、SCSI (Small Computer System Interface、「スカジー」と発音します) 以外の統合ディスク、つまり SCSI インタフェースを使用しないディスクを持つコンピュータからのものです。この例は、データをハードディスク (hdsk-0) からフロッピーディスク (fdsk-0) に転送中であることを示します。
$ sar -d SunOS venus 5.7 Generic sun4m 06/17/98 00:00:01 device %busy avque r+w/s blks/s avwait avserv 01:00:01 fd0 0 0.0 0 0 0.0 0.0 nfs1 0 0.0 0 0 0.0 0.0 nfs31 0 0.0 0 0 1.4 5.5 nfs32 0 0.0 0 0 0.0 0.0 nfs179 0 0.0 0 0 0.0 0.0 nfs202 0 0.0 0 0 0.0 0.0 sd3 0 0.0 0 2 0.0 53.9 sd3,a 0 0.0 0 1 0.0 59.6 sd3,b 0 0.0 0 0 0.0 14.2 sd3,c 0 0.0 0 0 0.0 0.0 sd3,d 0 0.0 0 0 0.0 0.0 sd3,e 0 0.0 0 0 0.0 0.0 sd3,f 0 0.0 0 0 0.0 0.0 sd3,g 0 0.0 0 0 0.0 77.6 sd3,h 0 0.0 0 0 0.0 0.0
次の例は、SCSI 統合ディスク、つまり SCSI インタフェースを使用するディスクを持つコンピュータからのものです。この例は、ある SCSI ハードディスク (sd00-0) から別の SCSI 統合ディスク (sd00-1) にデータを転送中であることを示します。
$ sar -d SunOS venus 5.7 Generic sun4m 06/17/98 14:16:24 device %busy avque r+w/s blks/s avwait avserv 14:16:52 sd00-0 2 1.0 1 3 0.0 17.9 sd00-1 6 1.1 3 5 2.0 23.9 14:17:21 sd00-0 2 1.0 1 2 0.0 19.6 sd00-1 6 1.1 3 5 0.2 24.3 14:17:48 sd00-0 3 1.0 1 3 0.3 18.3 sd00-1 7 1.1 3 5 1.3 25.4 14:18:15 sd00-0 3 1.0 1 3 0.0 17.2 sd00-1 5 1.0 2 5 0.0 21.6 Average sd00-0 2 1.0 1 3 0.1 18.2 sd00-1 6 1.0 3 5 0.9 23.0
sar -g オプションを使用すると、ページアウトとメモリー解放動作が (平均値として) 表示されます。
$ sar -g 00:00:01 pgout/s ppgout/s pgfree/s pgscan/s %ufs_ipf 01:00:01 0.00 0.00 0.00 0.00 0.00
sar -g で表示される出力は、より多くのメモリーが必要かどうかを判断するのに役立ちます。ps -elf コマンドを使用すると、ページデーモンに使用される CPU サイクル数が表示されます。サイクル数が大きく、pgfree/s と pgscan/s の値が大きければ、メモリー不足を示します。
また、sar -g を使用すると、i ノードの再利用間隔が短すぎるために、再利用可能なページが失われているかどうかも表示されます。
表 26-11 に、-g オプションからの出力を示します。
表 26-11 sar -g コマンドからの出力
次の例に、sar -g コマンドからの出力を示します。
$ sar -g SunOS venus 5.7 Generic sun4m 06/17/98 00:00:01 pgout/s ppgout/s pgfree/s pgscan/s %ufs_ipf 01:00:01 0.00 0.00 0.00 0.00 0.00 02:00:01 0.00 0.00 0.00 0.00 0.00 03:00:00 0.00 0.00 0.00 0.00 0.00 04:00:01 0.00 0.00 0.00 0.00 0.00 05:00:01 0.00 0.00 0.00 0.00 0.00 06:00:01 0.00 0.00 0.00 0.00 0.00 07:00:01 0.00 0.00 0.00 0.00 0.00 08:00:01 0.00 0.00 0.00 0.00 0.00 08:20:01 0.00 0.00 0.00 0.00 0.00 08:40:00 0.00 0.00 0.00 0.00 0.00 09:00:01 0.00 0.00 0.00 0.00 0.00 09:20:00 0.02 0.07 0.23 6.01 0.00 09:40:00 0.06 0.58 1.57 5.83 0.00 10:00:02 0.58 2.49 5.72 13.69 0.00 10:20:02 0.49 4.66 14.11 31.06 0.00 Average 0.04 0.25 0.70 1.83 0.00
sar -k コマンドを使用すると、Kernel Memory Allocator (KMA) に関して次の動作が表示されます。
KMA を使用すると、カーネルサブシステムは必要に応じてメモリーを割り当て、解放できます。最大量のメモリーを静的に割り当てるのではなく、ピークを下回る負荷を要求するのが予想されるため、KMA はメモリー要求を「小」 (256 バイト未満)、「大」 (512 バイト〜 4K バイト)、「サイズ超過」 (4K バイト超) という 3 つのカテゴリに分けます。また、2 つのメモリープールを管理して、「小」要求と「大」要求を満たします。「サイズ超過」要求は、システムページアロケータからメモリーを割り当てることで満たされます。
KMA 資源を使用するドライブや STREAMS の作成に使用中のシステムを調査する場合は、sar -k を使用すると便利です。それ以外の場合は、このコマンドで提供される情報は不要です。KMA 資源を使用するが、終了前には特に資源を返さないドライバやモジュールがあると、メモリーのリークが生じることがあります。メモリーリークが発生すると、KMA によって割り当てられるメモリーは時間が経つにつれて増大します。したがって、sar -k の alloc フィールドの値が時間が経つにつれ増える場合は、メモリーリークの可能性があります。メモリーリークのもう 1 つの兆候は、要求が失敗することです。この問題が発生した場合は、メモリーリークのために KMA がメモリーを予約したり割り当てたりできなくなっている可能性があります。
メモリーリークが発生した場合は、KMA からメモリーを要求したが返していないドライバや STREAMS がないかどうかをチェックする必要があります。
$ sar -k 00:00:01 sml_mem alloc fail lg_mem alloc fail ovsz_alloc fail 01:00:01 1949696 1444668 0 5578752 4254136 0 2826240 0
表 26-12 に、-k オプションからの出力を示します。
表 26-12 sar -k コマンドからの出力
フィールド名 |
説明 |
---|---|
sml_mem |
KMA が小メモリー要求プール内で使用できるメモリーのバイト数 (小要求は 256 バイト未満) |
alloc |
KMA が小メモリー要求プールから小メモリー要求に割り当てたメモリーのバイト数 |
fail |
小量のメモリーで失敗した要求数 |
lg_mem |
KMA が大メモリー要求プール内で使用できるメモリーのバイト数 (大要求は 512 バイトから 4K バイトまで) |
alloc |
KMA が大メモリー要求プールから大メモリー要求に割り当てたメモリーのバイト数 |
fail |
大メモリーで失敗した要求数 |
ovsz_alloc |
サイズ超過要求 (4K バイトを超える要求) に割り当てられたメモリーの容量。これらの要求はページアロケータによって満たされるので、プールはない |
fail |
サイズ超過メモリーで失敗した要求数 |
$ sar -k SunOS venus 5.7 Generic sun4m 06/17/98 00:00:01 sml_mem alloc fail lg_mem alloc fail ovsz_alloc fail 01:00:01 1949696 1444668 0 5578752 4254136 0 2826240 0 02:00:01 1949696 1444800 0 5578752 4254136 0 2826240 0 03:00:00 1949696 1445144 0 5578752 4258872 0 2826240 0 04:00:01 1949696 1446208 0 5578752 4259784 0 2826240 0 05:00:01 1949696 1445528 0 5578752 4256160 0 2826240 0 06:00:01 1949696 1445488 0 5578752 4259784 0 2826240 0 07:00:01 1949696 1445460 0 5578752 4259784 0 2826240 0 08:00:01 1949696 1446308 0 5578752 4258872 0 2826240 0 08:20:01 1949696 1440708 0 5578752 4250976 0 2826240 0 08:40:00 1949696 1440664 0 5578752 4250976 0 2826240 0 09:00:01 1949696 1445280 0 5578752 4259784 0 2826240 0 09:20:00 1929216 1369988 0 5324800 4122928 0 2826240 0 09:40:00 1929216 1380628 0 5320704 4065992 0 2826240 0 10:00:02 1916928 1442364 0 5345280 4142184 0 2826240 0 10:20:02 1916928 1415932 0 5373952 4100360 0 2826240 0 Average 1942596 1433278 0 5515401 4216982 0 2826240 0
sar -m コマンドを使用すると、プロセス間通信の動作が表示されます。
$ sar -m 00:00:01 msg/s sema/s 01:00:01 0.00 0.00
通常、これらの数字は、メッセージやセマフォを使用するアプリケーションを実行していない限りゼロ (0.00) です。
表 26-13 に、-m オプションからの出力を示します。
表 26-13 sar -m コマンドからの出力
フィールド名 |
説明 |
---|---|
msg/s |
1 秒当りのメッセージ処理 (送受信) 数 |
sema/s |
1 秒当りのセマフォ処理数 |
次の例は、sar -m コマンドからの出力を示します。
$ sar -m SunOS venus 5.7 Generic sun4m 06/17/98 00:00:01 msg/s sema/s 01:00:01 0.00 0.00 02:00:01 0.00 0.00 03:00:00 0.00 0.00 04:00:01 0.00 0.00 05:00:01 0.00 0.00 06:00:01 0.00 0.00 07:00:01 0.00 0.00 08:00:01 0.00 0.00 08:20:01 0.00 0.00 08:40:00 0.00 0.00 09:00:01 0.00 0.00 09:20:00 0.00 0.00 09:40:00 0.00 0.00 10:00:02 0.00 0.00 10:20:02 0.00 0.00 Average 0.00 0.00
sar -p コマンドを使用すると、保護フォルトや変換フォルトを含むページイン動作が表示されます。
$ sar -p 00:00:01 atch/s pgin/s ppgin/s pflt/s vflt/s slock/s 01:00:01 0.00 0.04 0.05 0.38 0.67 0.00
表 26-14 は、-p オプションを指定したときに表示される統計情報を示します。
表 26-14 sar -p コマンドからの出力
フィールド名 |
説明 |
---|---|
atch/s |
現在メモリーに入っているページを回収して満たされる 1 秒当りのページフォルト数 (1 秒当りの付加数)。この例には、空きリストから無効なページを回収し、別のプロセスに現在使用中のテキストページを共有する処理が含まれる (たとえば、複数のプロセスが同じプログラムテキストにアクセスしている場合など) |
pgin/s |
ファイルシステムがページイン要求を受信する 1 秒当りの回数 |
ppgin/s |
ページインされる 1 秒当りのページ数。ソフトロック要求 (slock/s を参照) などの 1 つのページイン要求や、大型ブロックサイズでは、複数のページがページインされることがある |
pflt/s |
保護エラーによるページフォルト数。保護フォルトの例には、ページへの不正なアクセスや、「書き込み時コピー」などがある。通常、この数値は主に「書き込み時コピー」からなっている |
vflt/s |
1 秒当りのアドレス変換ページフォルト数。これは、有効性フォルトと呼ばれ、所定の仮想アドレスに有効なプロセステーブルエントリが存在しないときに発生する |
slock/s |
物理入出力を要求するソフトウェアロック要求によって発生する 1 秒当りのフォルト数。ソフトロック要求の発生例には、ディスクからメモリーへのデータ転送などがある。システムはデータを受信しないページをロックするので、別のプロセスはそれを回収して使用できない |
$ sar -p SunOS venus 5.7 Generic sun4m 06/17/98 00:00:01 atch/s pgin/s ppgin/s pflt/s vflt/s slock/s 01:00:01 0.00 0.04 0.05 0.38 0.67 0.00 02:00:01 0.00 0.00 0.00 0.37 0.61 0.00 03:00:00 0.00 0.05 0.07 0.99 1.70 0.00 04:00:01 0.00 0.00 0.00 0.38 0.63 0.00 05:00:01 0.00 0.00 0.00 0.36 0.60 0.00 06:00:01 0.00 0.00 0.00 0.39 0.66 0.00 07:00:01 0.00 0.00 0.00 0.38 0.63 0.00 08:00:01 0.00 0.00 0.00 0.38 0.63 0.00 08:20:01 0.00 0.00 0.00 0.76 1.35 0.00 08:40:00 0.00 0.00 0.00 0.24 0.40 0.00 09:00:01 0.00 0.00 0.00 0.48 0.77 0.00 09:20:00 0.02 3.06 6.10 1.58 8.12 0.00 09:40:00 0.19 0.65 0.98 1.36 5.26 0.00 10:00:02 0.09 1.28 3.36 3.12 9.47 0.00 10:20:02 0.60 6.52 13.52 17.00 46.08 0.00 Average 0.03 0.38 0.79 1.14 2.90 0.00
sar -q コマンドを使用すると、待ち行列に要求が入っている平均待ち行列の長さと、その間の時間の割合が表示されます。
$ sar -q 00:00:01 runq-sz %runocc swpq-sz %swpocc 01:00:01 1.0 34
システムに空きメモリーが十分ない場合でも、スワップアウトされた軽量プロセス数が 0 より大きい場合があります。この状態は、休眠中の軽量プロセスがスワップアウトされ処理されない場合 (プロセスや軽量プロセスが休眠中であり、キーボードやマウスの入力を待機中の場合など) に発生します。
表 26-15 は、-q オプションを指定する場合の出力を示します。
表 26-15 sar -q コマンドの出力
フィールド名 |
説明 |
---|---|
runq-sz |
CPU を実行するためにメモリー内で待機中のカーネルスレッド数。通常、この値は 2 未満になる。値が常に 2 より大きい場合は、システムが CPU の限界に到達している可能性がある |
%runocc |
ディスパッチ待ち行列が使用されている時間の割合 |
swpq-sz |
スワップアウトされた平均軽量プロセス数 |
%swpocc |
軽量プロセスがスワップアウトされた時間の割合 |
次の例は、sar -q コマンドからの出力を示します。%runocc の値が大きく (90 パーセント超)、runq-sz が 2 より大きい場合は、CPU の負荷が大きく、応答速度が低下しています。この場合は、CPU の容量を増やしてシステムの応答速度を適正化する必要があります。
$ sar -q SunOS venus 5.7 Generic sun4m 06/17/98 00:00:01 runq-sz %runocc swpq-sz %swpocc 01:00:01 1.0 34 02:00:01 1.0 34 03:00:00 1.0 34 04:00:01 1.0 35 05:00:01 1.0 35 06:00:01 1.0 35 07:00:01 1.0 34 08:00:01 1.0 35 08:20:01 1.0 36 08:40:00 1.0 32 09:00:01 1.0 36 09:20:00 1.1 9 09:40:00 1.3 3 10:00:02 1.5 4 10:20:02 1.4 11 10:40:00 1.2 4 Average 1.0 30
sar -r コマンドを使用すると、現在使用されていないメモリーページ数とスワップファイルのディスクブロック数が表示されます。
$ sar -r 00:00:01 freemem freeswap 01:00:01 4184 320108
表 26-16 は、-r オプションを使用する場合の出力を示します。
表 26-16 sar -r コマンドからの出力
フィールド名 |
説明 |
---|---|
freemem |
コマンドによるサンプル収集間隔の間にユーザープロセスに利用できる平均メモリーページ数。ページサイズはマシンに応じて異なる |
freeswap |
ページスワップに使用可能な 512 バイトのディスクブロック数 |
$ sar -r SunOS venus 5.7 Generic sun4m 06/17/98 00:00:01 freemem freeswap 01:00:01 4184 320108 02:00:01 4181 320120 03:00:00 4048 320077 04:00:01 3918 320144 05:00:01 3917 320131 06:00:01 3902 320103 07:00:01 3898 320113 08:00:01 3897 320124 08:20:01 3891 319641 08:40:00 3894 320036 09:00:01 3898 320214 09:20:00 3463 334610 09:40:00 436 332371 10:00:02 337 329243 10:20:02 1610 326295 10:40:00 533 326078 Average 3559 321601
sar -u コマンドを使用すると、CPU の使用状況が表示されます。
$ sar -u 00:00:01 %usr %sys %wio %idle 01:00:01 67 33 0 0
(オプションを指定しない sar コマンドは、sar -u と同じです)。所定の瞬間に、プロセッサはビジー状態またはアイドル状態になっています。ビジー状態のときは、プロセッサはユーザーモードまたはシステムモードになっています。アイドル状態のときは、プロセッサは入出力の完了を待っているか、何も処理することがないので「待機」している状態です。
表 26-17 は、-u オプションを使用する場合の出力を示します。
表 26-17 sar -u コマンドからの出力
フィールド名 |
説明 |
---|---|
%sys |
プロセッサがシステムモードになっている時間の割合が表示される |
%user |
プロセッサがユーザーモードになっている時間の割合が表示される |
%wio |
プロセッサがアイドル状態で入出力の完了を待っている時間の割合が表示される |
%idle |
プロセッサがアイドル状態で入出力を待っていない時間の割合が表示される |
一般に、%wio の値が大きい場合は、ディスクの処理速度が低下していることを意味します。
$ sar -u SunOS venus 5.7 Generic sun4m 06/17/98 00:00:01 %usr %sys %wio %idle 01:00:01 67 33 0 0 02:00:01 67 33 0 0 03:00:00 67 33 0 0 04:00:01 67 33 0 0 05:00:01 67 33 0 0 06:00:01 67 33 0 0 07:00:01 67 33 0 0 08:00:01 67 33 0 0 08:20:01 67 33 0 0 08:40:00 67 33 0 0 09:00:01 67 33 0 0 09:20:00 19 9 3 69 09:40:00 5 2 1 92 10:00:02 10 3 0 87 10:20:02 23 9 2 66 10:40:00 6 3 0 90 Average 59 28 0 13
sar -v コマンドを使用すると、プロセステーブル、i ノードテーブル、ファイルテーブル、共有メモリーレコードテーブルの状態が表示されます。
$ sar -v 00:00:01 proc-sz ov inod-sz ov file-sz ov lock-sz 01:00:01 69/874 0 2698/4032 0 519/519 0 0/0
表 26-18 は、-v オプションを使用する場合の出力を示します。
表 26-18 sar -v コマンドからの出力
フィールド名 |
説明 |
---|---|
proc-sz |
現在カーネル内で使用されているか、割り当てられているプロセスエントリ (proc 構造) の数 |
inod-sz |
メモリー内の合計 i ノード数とカーネル内で割り当て済みの最大 i ノード数の比。これは厳密な上限ではなく、超えることもできる |
file-sz |
開いているシステムファイルテーブルのサイズ。ファイルテーブルには領域が動的に割り当てられるので、sz は 0 として表示される |
ov |
現在カーネル内で使用されているか割り当てられている共有メモリーレコードテーブルのエントリ数。共有メモリーレコードテーブルには領域が動的に割り当てられるので、sz は 0 として表示される |
lock-sz |
現在カーネル内で使用されているか割り当てられている共有メモリーレコードテーブルのエントリ数。共有メモリーレコードテーブルには領域が動的に割り当てられるので、sz は 0 として表示される |
次の例は、sar -v コマンドからの出力を示します。この例は、すべてのテーブルに十分なサイズがあり、オーバーフローは発生しないことを示します。これらのテーブルには、いずれも物理メモリーの容量に基づいて領域が動的に割り当てられます。
$ sar -v SunOS venus 5.7 Generic sun4m 06/17/98 00:00:01 proc-sz ov inod-sz ov file-sz ov lock-sz 01:00:01 69/874 0 2698/4032 0 519/519 0 0/0 02:00:01 69/874 0 2698/4032 0 519/519 0 0/0 03:00:00 69/874 0 2700/4032 0 519/519 0 0/0 04:00:01 69/874 0 2700/4032 0 519/519 0 0/0 05:00:01 68/874 0 2700/4032 0 518/518 0 0/0 06:00:01 69/874 0 2700/4032 0 519/519 0 0/0 07:00:01 69/874 0 2700/4032 0 519/519 0 0/0 08:00:01 69/874 0 2700/4032 0 519/519 0 0/0 08:20:01 66/874 0 2700/4032 0 516/516 0 0/0 08:40:00 66/874 0 2700/4032 0 516/516 0 0/0 09:00:01 69/874 0 2700/4032 0 519/519 0 0/0 09:20:00 64/874 0 2700/4032 0 515/515 0 0/0 09:40:00 66/874 0 2700/4032 0 526/526 0 0/0 10:00:02 72/874 0 2704/4032 0 538/538 0 0/0 10:20:02 65/874 0 2705/4032 0 526/526 0 0/0 10:40:00 65/874 0 2706/4032 0 524/524 0 0/0
sar -w コマンドを使用すると、スワッピングと切り替え動作が表示されます。
$ sar -w 00:00:01 swpin/s bswin/s swpot/s bswot/s pswch/s 01:00:01 0.00 0.0 0.00 0.0 479
表 26-19 は、目標の値と規則を示します。
表 26-19 sar -w コマンドからの出力
フィールド名 |
説明 |
---|---|
swpin/s |
メモリーに転送される 1 秒当りの軽量プロセス数 |
bswin/s |
メモリーからスワップアウトされる 1 秒当りの平均プロセス数。この数値が 1 より大きい場合は、メモリーを増やす必要がある |
swpot/s |
メモリーからスワップアウトされる 1 秒当りの平均プロセス数。この数値が 1 より大きい場合は、メモリーを増やす必要がある |
bswot/s |
スワップアウト用に転送される 1 秒当りのブロック数 |
pswch/s |
1 秒当りのカーネルスレッド切り替え数 |
すべてのプロセスのスワップインには、プロセスの初期化が含まれます。
$$ sar -w SunOS venus 5.7 Generic sun4m 06/17/98 00:00:01 swpin/s bswin/s swpot/s bswot/s pswch/s 01:00:01 0.00 0.0 0.00 0.0 479 02:00:01 0.00 0.0 0.00 0.0 479 03:00:00 0.00 0.0 0.00 0.0 478 04:00:01 0.00 0.0 0.00 0.0 479 05:00:01 0.00 0.0 0.00 0.0 479 06:00:01 0.00 0.0 0.00 0.0 479 07:00:01 0.00 0.0 0.00 0.0 479 08:00:01 0.00 0.0 0.00 0.0 479 08:20:01 0.00 0.0 0.00 0.0 479 08:40:00 0.00 0.0 0.00 0.0 479 09:00:01 0.00 0.0 0.00 0.0 479 09:20:00 0.00 0.0 0.00 0.0 153 09:40:00 0.00 0.0 0.00 0.0 68 10:00:02 0.00 0.0 0.00 0.0 70 10:20:02 0.00 0.0 0.00 0.0 147 10:40:00 0.00 0.0 0.00 0.0 112 Average 0.00 0.0 0.00 0.0 421
sar -y コマンドを使用すると、端末デバイスの動作を監視できます。
$ sar -y 00:00:01 rawch/s canch/s outch/s rcvin/s xmtin/s mdmin/s 01:00:01 0 0 0 0 0 0
大量の端末入出力がある場合は、このレポートを使用して不良な行がないかどうかを判別できます。表 26-20 は、記録される動作の定義を示します。
表 26-20 sar -y コマンドからの出力
フィールド名 |
説明 |
---|---|
rawch/s |
1 秒当りの入力文字数 (raw 待ち行列) |
canch/s |
標準待ち行列で処理される 1 秒当りの文字数 |
outch/s |
1 秒当りの出力文字数 (出力待ち行列) |
rcvin/s |
1 秒当りの受信側ハードウェア割り込み数 |
xmtin/s |
1 秒当りの送信側ハードウェア割り込み数 |
mdmin/s |
1 秒当りのモデム割り込み数 |
1 秒当りのモデム割り込み数 (mdmin/s) は 0 に近く、1 秒当りの送受信割り込み数 (xmtin/s と rcvin/s) は、それぞれ着信または発信文字数以下になるはずです。そうでない場合は、不良回線がないかどうかをチェックしてください。
次の例は、sar -y コマンドからの出力を示します。
$ sar -y SunOS venus 5.7 Generic sun4m 06/17/98 00:00:01 rawch/s canch/s outch/s rcvin/s xmtin/s mdmin/s 01:00:01 0 0 0 0 0 0 02:00:01 0 0 0 0 0 0 03:00:00 0 0 0 0 0 0 04:00:01 0 0 0 0 0 0 05:00:01 0 0 0 0 0 0 06:00:01 0 0 0 0 0 0 07:00:01 0 0 0 0 0 0 08:00:01 0 0 0 0 0 0 08:20:01 0 0 0 0 0 0 08:40:00 0 0 0 0 0 0 09:00:01 0 0 0 0 0 0 09:20:00 0 0 6 0 0 0 09:40:00 0 0 15 0 0 0 10:00:02 0 0 5 0 0 0 10:20:02 0 0 10 0 0 0 10:40:00 0 0 21 0 0 0 Average 0 0 2 0 0 0
sar -A コマンドを使用すると、システム全体の性能が表示されます。
このコマンドを使用すると、全体像を把握できます。複数のタイムセグメントからのデータが表示される場合は、レポートに平均値が含まれます。
システム動作データを自動的に収集するには、sadc、sa1、sa2 という 3 つのコマンドを使用します。
sadc データ収集ユーティリティは、システム動作に関するデータを定期的に収集し、24 時間ごとに 1 つのファイルに 2 進形式で保存します。sadc を定期的に (通常は 1 時間ごとに) 実行するだけでなく、システムがマルチユーザーモードでブートするときにも実行するように設定できます。データファイルは、ディレクトリ /usr/adm/sa に格納されます。各ファイルには sadd という名前が与えられます。この場合、dd は現在の日付です。このコマンドの書式は次のとおりです。
/usr/lib/sa/sadc [t n] [ofile]
このコマンドは、t 秒 (t は 5 秒より長くする必要があります) 間隔でサンプルデータを n 回収集します。次に、ファイル ofile または標準出力に 2 進形式で書き込みます。t と n を省略すると、特殊ファイルに 1 度だけ書き込まれます。
カウンタが 0 にリセットされるときから統計情報を記録するために、sadc コマンドをシステムのブート時に実行する必要があります。sadc をブート時に確実に実行するには、日ごとのデータファイルにレコードを書き込むコマンド行を /etc/init.d/perf ファイルに入れなければなりません。
su sys -c "/usr/lib/sa/sadc /usr/adm/sa/sa`date +5d`"
定期的にレコードを生成するには、sadc を定期的に実行する必要があります。そのためには、シェルスクリプト sa1 を呼び出す 1 行を /var/spool/cron/sys ファイルに挿入するのが最も簡単な方法です。このスクリプトは sadc を起動し、日ごとのデータファイル /var/adm/sa/sadd に書き込みます。書式は次のとおりです。
/usr/lib/sa/sa1 [t n]
引数 t と n を指定すると、レコードは t 秒間隔で n 回書き込まれます。この 2 つの引数を省略すると、レコードは 1 度しか書き込まれません。
もう 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 秒ないし 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 は、それぞれ時間、分、秒を表します)。
表 26-21 に sar コマンドのオプションとその動作を示します。
表 26-21 sar コマンドのオプション
オプション |
動作 |
---|---|
-a |
ファイルアクセス操作をチェックする |
-b |
バッファー動作をチェックする |
-c |
システムコールをチェックする |
-d |
各ブロックデバイスの動作をチェックする |
-g |
ページアウトとメモリーの解放をチェックする |
-k |
カーネルメモリーの割り当てをチェックする |
-m |
プロセス間通信をチェックする |
-p |
スワップとディスパッチ動作をチェックする |
-q |
待ち行列動作をチェックする |
-r |
未使用メモリーをチェックする |
-u |
CPU の使用率をチェックする |
-v |
システムテーブルの状態をチェックする |
-w |
ボリュームのスワッピングと切り替えをチェックする |
-y |
端末動作をチェックする |
-A |
システム全体の性能をリポートする (すべてのオプションを入力した場合と同じです) |
オプションを使用しなければ、-u オプションを指定してコマンドを呼び出すのと同じです。
エディタを使用して、/etc/init.d/perf ファイルを開きます。このファイルには、sadc 起動命令が入っています。次の行がコメント解除されていることを確認します。
MATCH=`who -r|grep -c "[234][ ]*0[ ]*[S1]"` if [ ${MATCH} -eq 1 ] then su sys -c "/usr/lib/sa/sadc /var/adm/sa/sa`date +%d`" fi
このバージョンの sadc コマンドは、カウンタが 0 にリセットされる時間 (ブート時) を示す特殊なレコードを書き込みます。sadc の出力はファイル sadd に格納されます (この場合、dd は現在の日付です)。このファイルは、毎日のシステム動作の記録となります。
エディタを使用して、/var/spool/cron/crontabs/sys ファイル (システムの crontab ファイル) を開きます。次の行をコメント解除します。
# 0 * * * 0-6 /usr/lib/sa/sa1 # 20,40 8-17 * * 1-5 /usr/lib/sa/sa1
第 1 のエントリは、時間に関するレコードを、1 週 7 日間の 1 時間ごとに /var/adm/sa/sadd に書き込みます。
第 2 のエントリは、月曜から金曜の午前 8 時から午後 5 時までのピーク作業時間中に、各正時から 20 分過ぎと 40 分過ぎの 2 度に渡り、レコードを /var/adm/sa/sadd に書き込みます。
したがって、この 2 つの crontab エントリによって、月曜から金曜までは午前 8 時から午後 5 時まで 20 分ごとに、それ以外の曜日は 1 時間ごとに、レコードが /var/adm/sa/sadd に書き込まれます。これらのデフォルトは、必要に応じて変更できます。