Solaris のシステム管理 (第 2 巻)

システム動作の監視 (sar)

sar コマンドは、次の目的で使用します。

このコマンドの詳細は、sar(1) のマニュアルページを参照してください。

ファイルアクセスをチェックする方法 (sar -a)

sar -a コマンドを使用すると、ファイルアクセス操作の統計情報が表示されます。


$ sar -a
SunOS venus 5.8 Generic sun4u    09/07/99

00:00:00  iget/s namei/s dirbk/s
01:00:00       0       0       0
02:00:02       0       0       0
03:00:00       0       1       0
04:00:00       0       0       0
05:00:01       0       0       0
06:00:00       0       0       0

Average        0       1       0

表 36-7 に、レポートされるオペレーティングシステムのルーチンを示します。

表 36-7 sar -a コマンドからの出力

フィールド名 

説明 

iget/s

ディレクトリ名検索キャッシュ (dnlc) 内に入っていない i ノードに対して出された要求数

namei/s

1 秒当りのファイルシステムパスの検索数。nameidnlc 内にディレクトリ名が見つからない場合は、iget が呼び出され、ファイルまたはディレクトリの i ノードが取得される。したがって、ほとんどの igetsdnlc が欠落した結果である

dirbk/s

1 秒間に実行されたディレクトリブロックの読み取り回数 

表示される値が大きいほど、カーネルはユーザーファイルへのアクセスに長い時間を費やしています。この時間には、プログラムとアプリケーションによるファイルシステムの使用量が反映されます。-a オプションを使用すると、アプリケーションのディスク依存度を表示できるので便利です。

バッファー動作をチェックする方法 (sar -b)

sar -b コマンドを使用すると、バッファー動作の統計情報が表示されます。

バッファーは、i ノード、シリンダグループブロック、間接ブロックなどのメタデータをキャッシュに書き込むために使用されます。


$ sar -b
00:00:00 bread/s lread/s %rcache bwrit/s lwrit/s %wcache pread/s pwrit/s
01:00:00       0       0     100       0       0      55       0       0

表 36-8 は、-b オプションを指定したときに表示されるバッファー動作を示します。最も重要なエントリは、キャッシュヒット率 %rcache%wcache です。この 2 つのエントリは、システムバッファーリングの効率を測定します。%rcache が 90 未満の場合や、%wcache が 65 未満の場合は、バッファー領域を大きくすれば性能を改善できる可能性があります。

表 36-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.8 Generic sun4u    09/07/99

00:00:00 bread/s lread/s %rcache bwrit/s lwrit/s %wcache pread/s pwrit/s
01:00:00       0       0     100       0       0      55       0       0
02:00:02       0       0     100       0       0      55       0       0
03:00:00       0       0     100       0       0      72       0       0
04:00:00       0       0     100       0       0      56       0       0
05:00:01       0       0     100       0       0      55       0       0
06:00:00       0       0     100       0       0      55       0       0

Average        0       0      94       0       0      64       0       0

システムコールの統計情報をチェックする方法 (sar -c)

sar -c コマンドを使用すると、システムコールの統計情報が表示されます。


$ sar -c
00:00:00 scall/s sread/s swrit/s  fork/s  exec/s rchar/s wchar/s
01:00:00      38       2       2    0.00    0.00     149     120

表 36-9 に、-c オプションでレポートされる次のシステムコールのカテゴリを示します。一般に、readswrites はシステムコール合計の約半分ですが、割合はシステムで実行中の動作によって大幅に変動します。

表 36-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/sfork/s で割った値が 3 より大きい場合は、効率の悪い PATH 変数を調べる

rchar/s

read システムコールによって転送される 1 秒当りの文字 (バイト) 数

wchar/s

write システムコールによって転送される 1 秒当りの文字 (バイト) 数

例 - システムコールの統計情報をチェックする

次の例に、sar -c コマンドからの出力を示します。


$ sar -c
SunOS venus 5.8 Generic sun4u    09/07/99

00:00:00 scall/s sread/s swrit/s  fork/s  exec/s rchar/s wchar/s
01:00:00      38       2       2    0.00    0.00     149     120
02:00:02      38       2       2    0.00    0.00     149     120
03:00:00      42       2       2    0.05    0.05     218     147
04:00:00      39       2       2    0.01    0.00     155     123
05:00:01      38       2       2    0.00    0.00     150     120
06:00:00      38       2       2    0.01    0.00     149     120

Average       50       4       3    0.02    0.02     532     238

ディスク動作をチェックする方法 (sar -d)

sar -d コマンドを使用すると、ディスク動作の統計情報が表示されます。


$ sar -d
00:00:00   device        %busy   avque   r+w/s  blks/s  avwait  avserv

01:00:00   fd0               0     0.0       0       0     0.0     0.0

表 36-10 は、-d オプションを使用したときに表示されるディスクデバイス動作を示します。待ち行列内に何かがあるときは、待ち行列の長さと待ち時間が計測されるので注意してください。%busy の値が小さい場合に、待ち行列とサービス時間が大きければ、変更されたブロックをディスクに随時書き込むために、システムが定期的に処理していることを示す場合があります。

表 36-10 sar -d コマンドからの出力

フィールド名 

説明 

device

監視中のディスクデバイス名 

%busy

デバイスが転送要求のサービスに費やす時間の割合 

avque

平均待ち時間と平均サービス時間の合計 

r+w/s

デバイスへの 1 秒当りの読み取り転送数と書き込み転送数 

blks/s

デバイスに転送される 1 秒当りの 512 バイトブロック数 

avwait

待ち行列内でアイドル状態で待機中の要求を転送する平均ミリ秒数 (待ち行列に要求が入っているときのみ計測) 

avserv

デバイスが転送要求を完了するまでの平均ミリ秒数 (ディスクの場合は、この値にシークタイム、回転待ち時間、データ転送時間が含まれる) 

例 - ディスク動作をチェックする

次の例は、sar -d コマンドからの一部省略した出力を示します。


$ sar -d
SunOS venus 5.8 Generic sun4u    09/07/99

00:00:00   device        %busy   avque   r+w/s  blks/s  avwait  avserv

01:00:00   fd0               0     0.0       0       0     0.0     0.0
           nfs1              0     0.0       0       0     0.0     0.0
           sd0               0     0.0       0       0     0.0    39.6
           sd0,a             0     0.0       0       0     0.0    39.6
           sd0,b             0     0.0       0       0     0.0     0.0
           sd0,c             0     0.0       0       0     0.0     0.0
           sd0,f             0     0.0       0       0     0.0     0.0
           sd0,g             0     0.0       0       0     0.0     0.0
           sd0,h             0     0.0       0       0     0.0     0.0
           sd6               0     0.0       0       0     0.0     0.0

ページアウトとメモリーをチェックする方法 (sar -g)

sar -g オプションを使用すると、ページアウトとメモリー解放動作が (平均値として) 表示されます。


$ sar -g
00:00:00  pgout/s ppgout/s pgfree/s pgscan/s %ufs_ipf
01:00:00     0.00     0.00     0.00     0.00     0.00

sar -g で表示される出力は、より多くのメモリーが必要かどうかを判断するのに役立ちます。ps -elf コマンドを使用すると、ページデーモンに使用される CPU サイクル数が表示されます。サイクル数が大きく、pgfree/spgscan/s の値が大きければ、メモリー不足を示します。

また、sar -g を使用すると、i ノードの再利用間隔が短すぎるために、再利用可能なページが失われているかどうかも表示されます。

表 36-11 に、-g オプションからの出力を示します。

表 36-11 sar -g コマンドからの出力

フィールド名 

説明 

pgout/s

1 秒間にページアウトされた要求数 

ppgout/s

1 秒間に実際にページアウトされたページ数 (1 つのページアウト要求で複数のページがページアウトされることがある) 

pgfree/s

空きリストに配置された 1 秒当りのページ数 

pgscan/s

ページデーモンによって走査された 1 秒当りのページ数。この値が大きい場合は、ページデーモンが空きメモリーのチェックに大量の時間を費やしている。これは、メモリーを増やす必要があることを示す

%ufs_ipf

ufs がそれに関連付けられた再使用可能ページを持つ iget によって空きリストから取り出された割合。これらのページはフラッシュされ、プロセスが回収できなくなる。したがって、これはページフラッシュを伴う igets の割合である。値が大きければ、i ノードの空きリストがページ境界であり、ufs の i ノード数を増やす必要があることを示す

例 - ページアウトとメモリーをチェックする

次の例に、sar -g コマンドからの出力を示します。


$ sar -g
SunOS venus 5.8 Generic sun4u    09/07/99

00:00:00  pgout/s ppgout/s pgfree/s pgscan/s %ufs_ipf
01:00:00     0.00     0.00     0.00     0.00     0.00
02:00:02     0.00     0.00     0.00     0.00     0.00
03:00:00     0.00     0.01     0.01     0.00     0.00
04:00:00     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:00     0.00     0.00     0.00     0.00     0.00

Average      0.01     0.12     0.21     0.66     0.00

カーネルメモリーの割り当てをチェックする方法 (sar -k)

sar -k コマンドを使用すると、Kernel Memory Allocator (KMA) に関して次の動作が表示されます。

KMA を使用すると、カーネルサブシステムは必要に応じてメモリーを割り当て、解放できます。最大量のメモリーを静的に割り当てるのではなく、ピークを下回る負荷を要求するのが予想されるため、KMA はメモリー要求を「小」 (256 バイト未満)、「大」 (512 バイト〜 4K バイト)、「サイズ超過」 (4K バイト超) という 3 つのカテゴリに分けます。また、2 つのメモリープールを管理して、「小」要求と「大」要求を満たします。「サイズ超過」要求は、システムページアロケータからメモリーを割り当てることで満たされます。

KMA 資源を使用するドライブや STREAMS の作成に使用中のシステムを調査する場合は、sar -k を使用すると便利です。それ以外の場合は、このコマンドで提供される情報は不要です。KMA 資源を使用するが、終了前には特に資源を返さないドライバやモジュールがあると、メモリーのリークが生じることがあります。メモリーリークが発生すると、KMA によって割り当てられるメモリーは時間が経つにつれて増大します。したがって、sar -kalloc フィールドの値が時間が経つにつれ増える場合は、メモリーリークの可能性があります。メモリーリークのもう 1 つの兆候は、要求が失敗することです。この問題が発生した場合は、メモリーリークのために KMA がメモリーを予約したり割り当てたりできなくなっている可能性があります。

メモリーリークが発生した場合は、KMA からメモリーを要求したが返していないドライバや STREAMS がないかどうかをチェックする必要があります。


$ sar -k
00:00:00 sml_mem   alloc  fail  lg_mem   alloc   fail  ovsz_alloc  fail
01:00:00 2523136 1866512     0 18939904 14762364    0      360448     0
02:00:02 2523136 1861724     0 18939904 14778748    0      360448     0

表 36-12 に、-k オプションからの出力を示します。

表 36-12 sar -k コマンドからの出力

フィールド名 

説明 

sml_mem

KMA が小メモリー要求プール内で使用できるメモリーのバイト数 (小要求は 256 バイト未満) 

alloc

KMA が小メモリー要求プールから小メモリー要求に割り当てたメモリーのバイト数 

fail

小量のメモリーで失敗した要求数 

lg_mem

KMA が大メモリー要求プール内で使用できるメモリーのバイト数 (大要求は 512 バイトから 4K バイトまで) 

alloc

KMA が大メモリー要求プールから大メモリー要求に割り当てたメモリーのバイト数 

fail

大メモリーで失敗した要求数 

ovsz_alloc

サイズ超過要求 (4K バイトを超える要求) に割り当てられたメモリーの容量。これらの要求はページアロケータによって満たされるので、プールはない 

fail

サイズ超過メモリーで失敗した要求数 

例 - カーネルメモリーの割り当てをチェックする (sar)

次の例は、sar -k 出力を示します。


$ sar -k
SunOS venus 5.8 Generic sun4u    09/07/99

00:00:00 sml_mem   alloc  fail  lg_mem   alloc  fail  ovsz_alloc  fail
01:00:00 2523136 1866512     0 18939904 14762364     0      360448     0
02:00:02 2523136 1861724     0 18939904 14778748     0      360448     0
03:00:00 2523136 1865664     0 18939904 14745884     0      360448     0
04:00:00 2523136 1867692     0 18939904 14746616     0      360448     0
05:00:01 2523136 1867208     0 18939904 14763700     0      360448     0
06:00:00 2523136 1867772     0 18939904 14779444     0      360448     0

Average  2724096 1791806     0 20089344 15434591     0      360448     0

プロセス間通信をチェックする方法 (sar -m)

sar -m コマンドを使用すると、プロセス間通信の動作が表示されます。


$ sar -m 
00:00:00   msg/s  sema/s
01:00:00    0.00    0.00

通常、これらの数字は、メッセージやセマフォを使用するアプリケーションを実行していない限りゼロ (0.00) です。

表 36-13 に、-m オプションからの出力を示します。

表 36-13 sar -m コマンドからの出力

フィールド名 

説明 

msg/s

1 秒当りのメッセージ処理 (送受信) 数 

sema/s

1 秒当りのセマフォ処理数 

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

次の例は、sar -m コマンドからの一部省略した出力を示します。


$ sar -m
SunOS venus 5.8 Generic sun4u    09/07/99

00:00:00   msg/s  sema/s
01:00:00    0.00    0.00
02:00:02    0.00    0.00
03:00:00    0.00    0.00
04:00:00    0.00    0.00
05:00:01    0.00    0.00
06:00:00    0.00    0.00

Average     0.00    0.00

ページイン動作をチェックする方法 (sar -p)

sar -p コマンドを使用すると、保護フォルトや変換フォルトを含むページイン動作が表示されます。


$ sar -p
00:00:00  atch/s  pgin/s ppgin/s  pflt/s  vflt/s slock/s
01:00:00    0.07    0.00    0.00    0.21    0.39    0.00

表 36-14 は、-p オプションを指定したときに表示される統計情報を示します。

表 36-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 からの一部省略した出力を示します。


$ sar -p
SunOS venus 5.8 Generic sun4u    09/07/99

00:00:00  atch/s  pgin/s ppgin/s  pflt/s  vflt/s slock/s
01:00:00    0.07    0.00    0.00    0.21    0.39    0.00
02:00:02    0.07    0.00    0.00    0.21    0.39    0.00
03:00:00    0.32    0.00    0.00    1.10    2.48    0.00
04:00:00    0.09    0.00    0.00    0.32    0.57    0.00
05:00:01    0.07    0.00    0.00    0.21    0.39    0.00
06:00:00    0.07    0.00    0.00    0.21    0.39    0.00

Average     0.26    0.20    0.30    0.92    1.78    0.00

待ち行列動作をチェックする方法 (sar -q)

sar -q コマンドを使用すると、待ち行列に要求が入っている平均待ち行列の長さと、その間の時間の割合が表示されます。


$ sar -q
00:00:00 runq-sz %runocc swpq-sz %swpocc
01:00:00

注 -

システムに空きメモリーが十分ない場合でも、スワップアウトされた軽量プロセス数が 0 より大きい場合があります。この状態は、休眠中の軽量プロセスがスワップアウトされ処理されない場合 (プロセスや軽量プロセスが休眠中であり、キーボードやマウスの入力を待機中の場合など) に発生します。


表 36-15 は、-q オプションを指定する場合の出力を示します。

表 36-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.8 Generic sun4u    09/07/99

00:00:00 runq-sz %runocc swpq-sz %swpocc
01:00:00                                
02:00:02                                
03:00:00     1.0       0                
04:00:00                                
05:00:01     1.0       0                
06:00:00

Average      1.3       0  

未使用のメモリーをチェックする方法 (sar -r)

sar -r コマンドを使用すると、現在使用されていないメモリーページ数とスワップファイルのディスクブロック数が表示されます。


$ sar -r
00:00:00 freemem freeswap
01:00:00    2135   401922

表 36-16 は、-r オプションを使用する場合の出力を示します。

表 36-16 sar -r コマンドからの出力

フィールド名 

説明 

freemem

コマンドによるサンプル収集間隔の間にユーザープロセスに利用できる平均メモリーページ数。ページサイズはマシンに応じて異なる 

freeswap

ページスワップに使用可能な 512 バイトのディスクブロック数 

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

次の例は、sar -r コマンドからの出力を示します。


$ sar -r
SunOS venus 5.8 Generic sun4u    09/07/99

00:00:00 freemem freeswap
01:00:00    2135   401922
02:00:02    2137   401949
03:00:00    2137   402006
04:00:00    2139   401923
05:00:01    2138   402033
06:00:00    2137   401919

Average     2500   399914

CPU の使用状況をチェックする方法 (sar -u)

sar -u コマンドを使用すると、CPU の使用状況が表示されます。


$ sar -u
00:00:00    %usr    %sys    %wio   %idle
01:00:00       0       0       0     100

(オプションを指定しない sar コマンドは、sar -u と同じです)。所定の瞬間に、プロセッサはビジー状態またはアイドル状態になっています。ビジー状態のときは、プロセッサはユーザーモードまたはシステムモードになっています。アイドル状態のときは、プロセッサは入出力の完了を待っているか、何も処理することがないので「待機」している状態です。

表 36-17 は、-u オプションを使用する場合の出力を示します。

表 36-17 sar -u コマンドからの出力

フィールド名 

説明 

%sys

プロセッサがシステムモードになっている時間の割合が表示される 

%user

プロセッサがユーザーモードになっている時間の割合が表示される 

%wio

プロセッサがアイドル状態で入出力の完了を待っている時間の割合が表示される 

%idle

プロセッサがアイドル状態で入出力を待っていない時間の割合が表示される 

一般に、%wio の値が大きい場合は、ディスクの処理速度が低下していることを意味します。

例 - CPU の使用状況をチェックする

次の例は、sar -u コマンドからの出力を示します。


$ sar -u
SunOS venus 5.8 Generic sun4u    09/07/99

00:00:00    %usr    %sys    %wio   %idle
01:00:00       0       0       0     100
02:00:02       0       0       0     100
03:00:00       0       0       0     100
04:00:00       0       0       0     100
05:00:01       0       0       0     100
06:00:00       0       0       0     100
07:00:00       0       0       0     100
08:00:01       0       0       0     100
08:20:00       0       0       0     100
08:40:00       0       0       0     100
09:00:00       0       0       0     100
09:20:00       0       0       0     100
09:40:00       0       0       0     100
10:00:00       0       0       0     100
10:20:00       0       0       0     100
10:40:01       0       0       0     100
11:00:00       5       2      10      82

Average        0       0       0     100

システムテーブルの状態をチェックする方法 (sar -v)

sar -v コマンドを使用すると、プロセステーブル、i ノードテーブル、ファイルテーブル、および共有メモリーレコードテーブルの状態が表示されます。


$ sar -v
00:00:00  proc-sz    ov  inod-sz    ov  file-sz    ov   lock-sz
01:00:00   43/922     0 2984/4236    0  322/322     0    0/0   

表 36-18 は、-v オプションを使用する場合の出力を示します。

表 36-18 sar -v コマンドからの出力

フィールド名 

説明 

proc-sz

現在カーネル内で使用されているか、割り当てられているプロセスエントリ (proc 構造) の数

inod-sz

メモリー内の合計 i ノード数とカーネル内で割り当て済みの最大 i ノード数の比。これは厳密な上限ではなく、超えることもできる 

file-sz

開いているシステムファイルテーブルのサイズ。ファイルテーブルには領域が動的に割り当てられるので、sz0 として表示される

ov

現在カーネル内で使用されているか割り当てられている共有メモリーレコードテーブルのエントリ数。共有メモリーレコードテーブルには領域が動的に割り当てられるので、sz0 として表示される

lock-sz

現在カーネル内で使用されているか割り当てられている共有メモリーレコードテーブルのエントリ数。共有メモリーレコードテーブルには領域が動的に割り当てられるので、sz0 として表示される

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

次の例は、sar -v コマンドからの一部省略した出力を示します。この例は、すべてのテーブルに十分なサイズがあり、オーバーフローは発生しないことを示します。これらのテーブルには、いずれも物理メモリーの容量に基づいて領域が動的に割り当てられます。


$ sar -v
SunOS venus 5.8 Generic sun4u    09/07/99

00:00:00  proc-sz    ov  inod-sz    ov  file-sz    ov   lock-sz
01:00:00   43/922     0 2984/4236    0  322/322     0    0/0   
02:00:02   43/922     0 2984/4236    0  322/322     0    0/0   
03:00:00   43/922     0 2986/4236    0  323/323     0    0/0   
04:00:00   43/922     0 2987/4236    0  322/322     0    0/0   
05:00:01   43/922     0 2987/4236    0  322/322     0    0/0   
06:00:00   43/922     0 2987/4236    0  322/322     0    0/0   

スワップ動作をチェックする方法 (sar -w)

sar -w コマンドを使用すると、スワッピングと切り替え動作が表示されます。


$ sar -w
00:00:00 swpin/s bswin/s swpot/s bswot/s pswch/s
01:00:00    0.00     0.0    0.00     0.0      22

表 36-19 は、目標の値と規則を示します。

表 36-19 sar -w コマンドからの出力

フィールド名 

説明 

swpin/s

メモリーに転送される 1 秒当りの軽量プロセス数 

bswin/s

メモリーからスワップアウトされる 1 秒当りの平均プロセス数。この数値が 1 より大きい場合は、メモリーを増やす必要がある 

swpot/s

メモリーからスワップアウトされる 1 秒当りの平均プロセス数。この数値が 1 より大きい場合は、メモリーを増やす必要がある 

bswot/s

スワップアウト用に転送される 1 秒当りのブロック数 

pswch/s

1 秒当りのカーネルスレッド切り替え数 


注 -

すべてのプロセスのスワップインには、プロセスの初期化が含まれます。


例 - スワップ動作をチェックする

次の例は、sar -w コマンドからの出力を示します。


$ sar -w
SunOS venus 5.8 Generic sun4u    09/07/99

00:00:00 swpin/s bswin/s swpot/s bswot/s pswch/s
01:00:00    0.00     0.0    0.00     0.0      22
02:00:02    0.00     0.0    0.00     0.0      22
03:00:00    0.00     0.0    0.00     0.0      22
04:00:00    0.00     0.0    0.00     0.0      22
05:00:01    0.00     0.0    0.00     0.0      22
06:00:00    0.00     0.0    0.00     0.0      22
07:00:00    0.00     0.0    0.00     0.0      22
08:00:01    0.00     0.0    0.00     0.0      22
08:20:00    0.00     0.0    0.00     0.0      22
08:40:00    0.00     0.0    0.00     0.0      22
09:00:00    0.00     0.0    0.00     0.0      22
09:20:00    0.00     0.0    0.00     0.0      22
09:40:00    0.00     0.0    0.00     0.0      22
10:00:00    0.00     0.0    0.00     0.0      22
10:20:00    0.00     0.0    0.00     0.0      22
10:40:01    0.00     0.0    0.00     0.0      23
11:00:00    0.00     0.0    0.00     0.0     144

Average     0.00     0.0    0.00     0.0      24

端末動作をチェックする方法 (sar -y)

sar -y コマンドを使用すると、端末デバイスの動作を監視できます。


$ sar -y
00:00:00 rawch/s canch/s outch/s rcvin/s xmtin/s mdmin/s
01:00:00       0       0       0       0       0       0

大量の端末入出力がある場合は、このレポートを使用して不良な行がないかどうかを判別できます。表 36-20 は、記録される動作の定義を示します。

表 36-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/srcvin/s) は、それぞれ着信または発信文字数以下になるはずです。そうでない場合は、不良回線がないかどうかをチェックしてください。

例 - 端末動作をチェックする

次の例は、sar -y コマンドからの一部省略した出力を示します。


$ sar -y
SunOS venus 5.8 Generic sun4u    09/07/99

00:00:00 rawch/s canch/s outch/s rcvin/s xmtin/s mdmin/s
01:00:00       0       0       0       0       0       0
02:00:02       0       0       0       0       0       0
03:00:00       0       0       0       0       0       0
04:00:00       0       0       0       0       0       0
05:00:01       0       0       0       0       0       0
06:00:00       0       0       0       0       0       0
07:00:00       0       0       0       0       0       0
08:00:01       0       0       0       0       0       0
08:20:00       0       0       0       0       0       0
08:40:00       0       0       0       0       0       0
09:00:00       0       0       0       0       0       0
09:20:00       0       0       0       0       0       0
09:40:00       0       0       0       0       0       0
10:00:00       0       0       0       0       0       0
10:20:00       0       0       0       0       0       0
10:40:01       0       0      20       0       0       0

Average        0       0       3       0       0       0

システム全体の性能をチェックする方法 (sar -A)

sar -A コマンドを使用すると、システム全体の性能が表示されます。

このコマンドを使用すると、全体像を把握できます。複数のタイムセグメントからのデータが表示される場合は、レポートに平均値が含まれます。

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

システム動作データを自動的に収集するには、sadcsa1sa2 という 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 進形式で書き込みます。tn を省略すると、特殊ファイルに 1 度だけ書き込まれます。

ブート時に sadc を実行する

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

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


su sys -c "/usr/lib/sa/sadc /usr/adm/sa/sa`date +5d`"

sa1 を使用して sadc を定期的に実行する

定期的にレコードを生成するには、sadc を定期的に実行する必要があります。そのためには、シェルスクリプト sa1 を呼び出す 1 行を /var/spool/cron/sys ファイルに挿入するのが最も簡単な方法です。このスクリプトは sadc を起動し、日ごとのデータファイル /var/adm/sa/sadd に書き込みます。書式は次のとおりです。


/usr/lib/sa/sa1 [t n]

引数 tn を指定すると、レコードは t 秒間隔で n 回書き込まれます。この 2 つの引数を省略すると、レコードは 1 度しか書き込まれません。

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 秒ないし 5 秒以上の値でないと、コマンドそのものがサンプルに影響を与えることがあります)。サンプルの収集間隔を指定しなければなりません。指定しないと、このコマンドは第 2 の書式に従って動作します。n のデフォルト値は 1 です。次の例では、10 秒間隔で 2 つのサンプルが収集されます。-o オプションを指定すると、サンプルは 2 進形式でファイルに保存されます。


$ sar -u 10 2

その他に、sar では次の点に注意する必要があります。

表 36-21sar コマンドのオプションとその動作を示します。

表 36-21 sar コマンドのオプション

オプション 

動作 

-a

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

-b

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

-c

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

-d

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

-g

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

-k

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

-m

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

-p

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

-p

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

-r

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

-u

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

-nv

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

-w

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

-y

端末動作をチェックする 

-A

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

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

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

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

  2. /etc/init.d/perf ファイルを編集してすべての行のコメント指定を解除します。

    このバージョンの sadc コマンドは、カウンタが 0 にリセットされる時間 (ブート時) を示す特殊なレコードを書き込みます。sadc の出力はファイル sadd に格納されます (この場合、dd は現在の日付です)。このファイルは、毎日のシステム動作の記録となります。

  3. /var/spool/cron/crontabs/sys ファイル (システムの crontab ファイル) を編集します。次の行をコメント解除します。


    # 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

    第 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 に書き込まれます。これらのデフォルトは、必要に応じて変更できます。