Oracle Solaris カーネルのチューンアップ・リファレンスマニュアル

カーネルパラメータ

プロセスのサイズのチューニング可能パラメータ

max_nprocs (Solaris 9 リリース)

Solaris 10 の記述部分が更新され、「sun4m」が削除されました。

一般的なドライバパラメータ

ddi_msix_alloc_limit (Solaris 10 リリースおよび OpenSolaris 2009.06 リリース)

このパラメータは Solaris 10 10/09 リリースおよび OpenSolaris 2009.06 リリースからの新規パラメータです。詳細は、ddi_msix_alloc_limitを参照してください。

一般的な入出力のチューニング可能パラメータ

maxphys (Solaris 10 リリース)

デフォルト値が sun4v システムを含むように更新されています。詳細は、maxphysを参照してください。

maxphys (Solaris 9 リリース)

Solaris 10 の maxphys のデフォルトの項から「126,976 (sun4m)」が削除されました。

rlim_fd_max (Solaris 8 リリース)

Solaris 8 バージョンでは、デフォルトは1024 です。それ以降のSolaris リリースでは、デフォルトは 65,536 です。

カーネルとメモリーの一般的なパラメータ

zfs_arc_min (Solaris 10 リリース)

このパラメータに関する記述は Solaris 10 10/09 リリースで新しく追加されました。詳細は、zfs_arc_minを参照してください。

zfs_arc_max (Solaris 10 リリース)

このパラメータに関する記述は Solaris 10 10/09 リリースで新しく追加されました。詳細は、zfs_arc_maxを参照してください。

noexec_user_stack (Solaris 9 リリース)

Solaris 10 の説明の項が更新され、「および sun4m」の語句が削除され、「64 ビット SPARC および AMD64」の語句が追加されました。

lwp_default_stksize (Solaris 9 リリース)

Solaris 10 の説明の項が更新され、AMD64 の場合のデフォルトおよび最大値が追加されました。

SPARC プラットフォームの Solaris 10 のデフォルト値が 24,576 に変更されました。

noexec_user_stack (Solaris 2.6、Solaris 7、Solaris 8 リリース)

Solaris 9 の説明の項が更新され、「および sun4d」の語句が削除されました。

segkpsize (Solaris 9 12/02 リリース)

旧 Solaris 9 リリースで、単位が 8K バイトのページであるべきところで、誤って M バイトの指定になっていました。さらに、範囲およびデフォルトの項で、Solaris 10 リリースに関して次の語句が削除されました。このパラメータは 64 ビットカーネルが動作しているシステムに限って使用できるからです。

32 ビットカーネルでは 512M バイト

fsflush とそれに関連するパラメータ

dopageflush (Solaris 10 リリース)

Solaris 10 10/08 リリースでは、説明を明確にするために、「物理」メモリーページ数が調べられるという記述が追加されました。

ページング関連のチューニング可能パラメータ

maxpgio (Solaris 10 リリース)

Solaris 10 バージョンでは、値の範囲が誤って 1 から 1024 と記述されていました。実際の範囲は、システムのアーキテクチャーと入出力サブシステムによって決まります。詳細は、maxpgioを参照してください。

pages_pp_maximum (Solaris 9 リリース以前の Solaris リリース)

Solaris 8 バージョンで、デフォルトの記述が次のようになっています。

トリプレットの最大値(200, tune_t_minarmem + 100, [ブート時に使用可能なメモリーの10%])

一般的なファイルシステムパラメータ

ncsize (Solaris 9 およびそれ以前のリリース)

Solaris 9 およびそれ以前のリリースでは、「どのような場合に変更するか」の項で、nfs:nrnode パラメータが誤って nfs:nfs_rnode になっていました。

ncsize (Solaris 10 リリース)

Solaris 10 リリースでは、ncsize パラメータのデフォルト値が誤って次のように記述されていました。

4 x (v.v_proc + maxusers) + 320 / 100

正しいデフォルト値は次のとおりです。

(4 x (v.v_proc + maxusers) + 320) + (4 x (v.v_proc + maxusers) + 320 / 100

詳細は、ncsizeを参照してください。

UFS チューニング可能パラメータ

bufhwm (Solaris 9 リリース)

このパラメータの情報は Solaris 10 リリースで大幅に変更されました。詳細は、bufhwm および bufhwm_pctを参照してください。

備考欄

入出力バッファーをキャッシュするためのメモリーの最大量。バッファーは、ファイルシステムのメタデータ (スーパーブロック、i ノード、間接ブロック、ディレクトリ) の書き込みに使用されます。バッファーは、その量が bufhwm に達するまで必要に応じて割り当てられます。bufhwm に達すると、バッファーを再利用して要求を満たします。

歴史的経緯により、このパラメータには ufs: 接頭辞は必要ありません。

データ型

符号付き整数

デフォルト

物理メモリーの 2%

範囲

80K バイトから物理メモリーの 20%

単位

K バイト

動的か

いいえ。この値は、ハッシュバケットサイズの計算に使用された後、データ構造体に格納されます。このデータ構造体は、バッファーの割り当てや解放に応じて、そのフィールドの値を調整します。動作しているシステムのロック手順に従わずにこの値を調整すると、正しくない動作を招くおそれがあります。

検査

bufhwm が 80K バイトより小さいか、bufhwm が、物理メモリーの 20% もしくは現在のカーネルヒープ値の 2 倍のうち小さい方より大きい場合、bufhwm は、物理メモリーの 20% か現在のカーネルヒープ値の 2 倍のうち小さい方にリセットされます。その場合は、次のメッセージがシステムコンソールと /var/adm/messages ファイルに出力されます。


"binit: bufhwm out of range (value attempted). Using N."

「value attempted」は、/etc/system で指定された値または kadb -d による値を表します。N は使用可能なシステムメモリーに基づいてシステムが計算した値です。

どのような場合に変更するか

バッファーは必要が生じた時にのみ割り当てられるため、デフォルト設定によるオーバーヘッドは、考えられる最大のバッファー数を処理するために必要になる制御構造体が割り当てられることです。これらの構造体は、32 ビットカーネルでは想定されるバッファー当たり 52 バイト、64 ビットカーネルでは想定されるバッファー当たり 104 バイトを消費します。512M バイトの 64 ビットカーネルでは、この構造体は 104*10144 バイト (約 1M バイト) を消費します。ヘッダーの割り当てでは、バッファーサイズは 1K バイトであると想定します。ただし、ほとんどの場合、バッファーサイズはこれより大きいのが普通です。

バッファープール内でまだ割り当てられていないメモリー量を知るには、カーネルデバッガを使用して、カーネルの bfreelist 構造体を調べます。この構造体の bufsize フィールドが、残っている可能性があるメモリーのバイト数です。mdb を使用して buf マクロでこのフィールドを表示するには、次のようにします。


# mdb -kLoading modules: [ unix krtld genunix ip nfs ipc ]
> bfreelist$<buf
bfreelist:
[ elided ]
bfreelist + 0x78:	bufsize			[ elided ]
				 	      75734016

6G バイトのメモリーを装備したこのシステムでは、bufhwm は 122277 です。要求されたバッファーの実際のサイズは通常、1K バイトを超えるので、ヘッダー構造体の数を直接調べることは困難です。しかし、一部の領域は、このシステムに割り当てられた制御構造体からうまく回収されることがあります。

512M バイトシステム上でこの構造体が、10144K バイトのうち 4K バイトだけがまだ割り当てられていないことを示したとします。また、kstat -n biostatsbiostats の kstat を調べると、このシステムでは、buffer_cache_hitsbuffer_cache_lookups の割合も適切であることが分かったとします。これらの情報は、このシステムのデフォルト設定であることを示します。

コミットレベル

変更の可能性あり

TMPFS パラメータ

tmpfs:tmpfs_maxkmem (Solaris 10 リリース)

範囲の説明が sun4v システムを含むように更新されています。詳細は、tmpfs:tmpfs_maxkmemを参照してください。

tmpfs:tmpfs_minfree (Solaris 8 リリース)

Solaris 8 バージョンで、「ページ」であるべき単位が誤って「バイト」になっていました。

sun4u または sun4v 固有のパラメータ (Solaris 10 リリース)

Solaris 07 4/4 リリースでは、Sun-8u 固有のパラメータセクションのタイトルが sun4v システムを含むように改訂されました。

default_tsb_size (Solaris 10 リリース)

デフォルトの記述が変更されました。詳細は、default_tsb_sizeを参照してください。

enable_tsb_rss_sizing (Solaris 10 リリース)

説明とデフォルト値および範囲の値が変更されました。詳細は、enable_tsb_rss_sizingを参照してください。

tsb_rss_factor (Solaris 10 リリース)

「どのような場合に変更するか」の記述例が次のように変更されました。

たとえば、tsb_rss_factor を 384 (事実上は 75%) ではなく 256 (事実上は 50%) に変更すると、状況によっては、TSB における仮想アドレスの衝突を排除できることがありますが、特に負荷の大きいシステムでは、カーネルメモリーの使用量が増えます。