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

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

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

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

$ 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