ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
![]() |
Oracle Solaris カーネルのチューンアップ・リファレンスマニュアル Oracle Solaris 11 Information Library (日本語) |
1. Oracle Solaris システムのチューニングの概要
2. Oracle Solaris カーネルチューニング可能パラメータ
4. インターネットプロトコル群のチューニング可能パラメータ
このセクションでは、物理メモリーやスタック構成に関連する一般的なカーネルパラメータについて説明します。
Oracle Solaris OS とファームウェアが把握されたあとで、メモリーの物理ページ数に関するシステム構成を変更します。
符号なし long
そのシステムで使用できる物理メモリーのページ数。これには、コアカーネルとそのデータが格納されているメモリーは含まれません。
1 からシステムの物理メモリーの総量まで
ページ
いいえ
なし
より少ない物理メモリーでシステムを実行したときの影響を調べたい場合。このパラメータに対しては、コアカーネルやそのデータ、その他のさまざまなデータ構造体 (起動処理の初期に割り当て) などのメモリーは考慮されません。したがって、physmem の値は、より小さなメモリー量を表わすよう、想定したページ数より小さくすべきです。
変更の可能性あり
ZFS 適応型置換キャッシュ (ARC) の最小サイズを決定します。「zfs_arc_max」 も参照してください。
符号なし整数 (64 ビット)
64M バイト
64M バイトから zfs_arc_max
バイト
いいえ
はい、範囲が検査されます。
システムのメモリー負荷要求が変動するとき、ZFS ARC は要求の少ない時期はデータをキャッシュし、要求の多い時期は縮小します。ただし、ZFS は zfs_arc_min の値を下回って縮小することはありません。一般には、デフォルト値を変更する必要はありません。
変更の可能性あり
詳細は、「zfs_arc_min (Oracle Solaris 11)」を参照してください。
ZFS 適応型置換キャッシュ (ARC) の最大サイズを決定します。「zfs_arc_min」 も参照してください。
符号なし整数 (64 ビット)
搭載メモリーが 4G バイト未満のシステムでは、メモリーの 4 分の 3
搭載メモリーが 4G バイトを超えるシステムでは、physmem から 1G バイトを引いた値
64M バイトから physmem
バイト
いいえ
はい、範囲が検査されます。
将来のメモリー要求が非常に大きく、十分に定義されている場合、ARC がメモリー要求と競合しないように、このパラメータの値を減らして ARC を制限することを検討できます。たとえば、将来の負荷がメモリーの 20% を要求することがわかっている場合、残りの 80% より多くのメモリーを消費しないように ARC を制限することは意味があります。
変更の可能性あり
詳細は、「zfs_arc_max (Oracle Solaris 11)」を参照してください。
すべてのスレッドのデフォルトスタックサイズを指定します。default_stksize より小さいスタックサイズを指定してスレッドを作成することはできません。default_stksize が設定されている場合、それは lwp_default_stksize に優先します。「lwp_default_stksize」 も参照してください。
整数
SPARCシステムでは PAGESIZE の 3 倍。
x64 システムでは PAGESIZE の 5 倍。
最小値はデフォルト値です。
SPARCシステムでは PAGESIZE の 3 倍。
x64 システムでは PAGESIZE の 5 倍。
最大値はデフォルト値の 32 倍です。
getpagesize パラメータから戻った値の倍数になるバイト数です。詳細は、getpagesize(3C) を参照してください。
はい。変数の変更後、作成されるスレッドに影響があります。
8192 以上、262,144 (256 x 1024) 以下にする必要があります。また、システムページサイズの倍数でなければなりません。これらの条件が満たされないと、次のメッセージが表示されます。
Illegal stack size, Using N
N の値は、 default_stksize のデフォルト値です。
スタック容量が足りないためにシステムがパニックになる場合。この問題を解決する最もよい方法は、システムが容量を使い果たす原因を明らかにし、それを修正することです。
デフォルトのスタックサイズを増やすと、ほとんどすべてのカーネルスレッドのスタックが大きくなるため、カーネルのメモリー使用量が不当に増加します。通常、そのスペースは使用されません。さらに、カーネルの使用量が増えると、同じメモリープールを使用する他のリソースの容量が少なくなるため、システムの作業を行う能力が低下するおそれがあります。副次的な影響として、カーネルが作成できるスレッドの数が少なくなります。したがって、この方法は、根本的な原因が解消されるまでの一時的な回避策として使用すべきです。
変更の可能性あり
カーネルスレッドの作成時に呼び出しルーチンが明示的に使用サイズを提供しなかった場合に使用する、スタックの大きさのデフォルト値を指定します。
整数
24,576 (SPARC プラットフォーム)
20,480 (x64 プラットフォーム)
最小値はデフォルト値です。
SPARCシステムでは PAGESIZE の 3 倍。
x64 システムでは PAGESIZE の 5 倍。
最大値はデフォルト値の 32 倍です。
getpagesize パラメータから戻った値の倍数になるバイト数です。詳細は、getpagesize(3C) を参照してください。
はい。変数の変更後、作成されるスレッドに影響があります。
8192 以上、262,144 (256 x 1024) 以下にする必要があります。また、システムページサイズの倍数でなければなりません。これらの条件が満たされないと、次のメッセージが表示されます。
Illegal stack size, Using N
N の値は、lwp_default_stksize のデフォルト値です。
スタック容量が足りないためにシステムがパニックになる場合。この問題を解決する最もよい方法は、システムが容量を使い果たす原因を明らかにし、それを修正することです。
デフォルトのスタックサイズを増やすと、ほとんどすべてのカーネルスレッドのスタックが大きくなるため、カーネルのメモリー使用量が不当に増加します。通常、そのスペースは使用されません。さらに、カーネルの使用量が増えると、同じメモリープールを使用する他のリソースの容量が少なくなるため、システムの作業を行う能力が低下するおそれがあります。副次的な影響として、カーネルが作成できるスレッドの数が少なくなります。したがって、この方法は、根本的な原因が解消されるまでの一時的な回避策として使用すべきです。
変更の可能性あり
キューに格納して syseventd デーモンへの配信を待機させることのできる、システムイベントの最大数です。システムイベントキューのサイズがこの制限に達すると、他のシステムイベントをキューに入れることはできません。
整数
5000
0 から MAXINT
システムイベント
はい
ddi_log_sysevent と sysevent_post_event によってシステムイベントが生成されるたびに、システムイベントフレームワークはこの値をチェックします。
詳細は、ddi_log_sysevent(9F) およびsysevent_post_event(3SYSEVENT) のマニュアルページを参照してください。
システムイベントのログ、生成、または送信が失敗したことをエラーログメッセージが示す場合。
変更の可能性あり
利用できるページング可能なカーネルのメモリー量を指定します。このメモリーは主にカーネルスレッドのスタックに使用されます。この値を増やすと、スレッドの数を増やさないのであれば個々のスレッドでより大きなスタックが使用でき、あるいはより多くのスレッドを使用できるようになります。64 ビットカーネルが動作しているシステムは、デフォルトで、24K バイトのスタックサイズを使用します。
符号なし long
2G バイト
512M バイトから 24G バイト
8K バイトページ
いいえ
値が、最小および最大サイズ (512M バイトおよび 24G バイト) と比較されます。最小値に満たないか、または最大値を超えている場合は 2G バイトにリセットされます。その作用に関するメッセージが表示されます。
キャッシュの作成で実際に使用されるサイズは、検査後、segkpsize に指定されている値か、物理メモリーの 50% のうち、小さい方です。
システム上で多数のプロセスをサポートしなければならない場合。デフォルトサイズの 2G バイトは、少なくとも 1G バイトの物理メモリーがあるという前提です。このデフォルトサイズによって、87,000 以上のカーネルスレッドに 24K バイトのスタックを作成できます。スタックのサイズは、プロセスが 32 ビットプロセスでも 64 ビットプロセスでも同じです。これより大きな数が必要な場合は、物理メモリーが十分にあれば segkpsize を増やすことができます。
変更の可能性あり
スタックを実行不能として指定できるので、バッファーオーバーフロー攻撃がいっそう困難になります。
64 ビットカーネルが動作している Oracle Solaris システムでは、すべての 64 ビットアプリケーションのスタックがデフォルトで実行不能になります。このパラメータの設定は、32 ビットアプリケーションを実行不能にするために必要です。
符号付き整数
0 (無効)
0 (無効)、1 (有効)
切り替え (オン/オフ)
はい。ただし、すでに実行中のプロセスに対しては無効です。値が設定された後に起動されたプロセスに対してのみ有効です。
なし
アプリケーションが、mprotect を使用してスタックを実行可能にすることなくスタックに実行可能コードを意図的に置いている場合を除き、この変数は常に有効にすべきです。詳細は、mprotect(2) のマニュアルページを参照してください。
変更の可能性あり