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

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

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

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: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

次の表に -k オプションからの出力について説明します。

表 24–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 touchstone 5.9 Generic sun4u    03/04/2003

00:00:05 sml_mem   alloc  fail  lg_mem   alloc  fail  ovsz_alloc  fail
01:00:03 1761280 1209760     0 4833280 3955104     0     2293760     0
02:00:05 1761280 1209020     0 4833280 3953360     0     2293760     0
03:00:03 1761280 1208712     0 4833280 3972096     0     2293760     0
04:00:03 1761280 1209796     0 4833280 3976432     0     2293760     0
05:00:03 1761280 1207708     0 4833280 3976864     0     2293760     0
06:00:04 1761280 1208112     0 4833280 3977200     0     2293760     0
07:00:04 1761280 1209024     0 4833280 3977200     0     2293760     0
08:00:04 1761280 1208932     0 4833280 4035120     0     2293760     0
08:20:04 1761280 1210480     0 4833280 4035120     0     2293760     0
08:40:04 1761280 1210592     0 4833280 4035968     0     2293760     0
09:00:03 1761280 1212440     0 4833280 4039024     0     2293760     0
09:20:04 1761280 1214388     0 4833280 4043792     0     2293760     0
09:40:04 1761280 1210760     0 4833280 4041744     0     2293760     0
10:00:05 1761280 1208192     0 4833280 4040496     0     2293760     0
10:20:03 1761280 1213404     0 4833280 4046576     0     2293760     0
10:40:02 1761280 1212184     0 4833280 4046576     0     2293760     0

Average  1761280 1210219     0 4833280 4009542     0     2293760     0