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

カーネルメモリーの割り当てをチェックする方法 (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