ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris カーネルのチューンアップ・リファレンスマニュアル Oracle Solaris 11 Information Library (日本語) |
1. Oracle Solaris システムのチューニングの概要
2. Oracle Solaris カーネルチューニング可能パラメータ
4. インターネットプロトコル群のチューニング可能パラメータ
Solaris OS では、必要に応じてページングされる仮想メモリーシステムを使用します。システムの稼働に伴ってページが必要になると、そのページがメモリーに読み込まれます。メモリーの占有率が一定のしきい値を超え、さらにメモリーの要求が続くと、ページングが発生します。ページングには、特定のパラメータで制御されるいくつかのレベルがあります。
一般的なページングアルゴリズムは次のとおりです。
メモリーの不足が認識されます。ページ走査スレッドが実行され、メモリーのチェックを開始します。この際、2 段階のアルゴリズムが使用されます。
使用されていないページを識別します。
一定の間隔後にもそのページが使用されていなければ、そのページを再利用の対象とみなします。
ページが変更されていれば、ページアウトスレッドに対して、ページの入出力をスケジューリングするように要求されます。さらに、ページスキャナが引き続きメモリーを調べます。ページアウトは、そのページをページのバッキングストアに書き込み、空リストに置くようにします。ページスキャナがメモリーを走査するときに、ページの内容の区別はありません。ページは、データファイルからのものもあれば、実行可能ファイルのテキスト、データ、スタックからのものもあります。
システムのメモリーの使用が著しくなってくるに従い、このアルゴリズムは、再利用の候補とみなすページや、ページングアルゴリズムを実行する頻度に関する基準を強化します。(詳細は、「fastscan」および 「slowscan」を参照してください)。使用可能なメモリーが lotsfree から minfree の範囲内になると、システムはページアウトスレッドが呼び出されるたびに走査するメモリー量を、slowscan で指定された値から fastscan で指定された値に直線的に増やします。システムは、desfree パラメータを使用して、リソースの使用や動作に関する決定回数を制御します。
システムはページアウト操作を 1 つの CPU の 4% 以内の使用に限定しようとします。メモリーへの負荷が大きくなると、それに比例してページアウト操作をサポートするために消費される CPU 時間が増加し、最大で 1 つの CPU の 80% が消費されます。このアルゴリズムは、slowscan と fastscan の間のメモリ量の一部を調べ、次の条件のどれかに当てはまると走査を終了します。
メモリー不足を解消するだけのページが見つかりました。
予定のページ数を調べました。
長すぎる時間が経過しました。
ページアウトが走査を終了してもメモリー不足が解消しない場合は、後で別の走査が 1/4 秒間スケジュールされます。
ページングサブシステムの構成メカニズムが変更されました。システムは fastscan、slowscan、および handspreadpages の事前定義された値を使用せずに、ブート時にこれらのパラメータへ適切な値を割り当てます。/etc/system ファイル内のこれらのパラメータを設定すると、システムが最適でない数値を使用する場合があります。
注意 - /etc/system ファイルから、VM システムのチューニングをすべて削除してください。まずデフォルトの設定値で実行してから、これらのパラメータの調整が必要かどうかを判定してください。また、cachefree および priority_paging を設定しないでください。 |
CPU とメモリーの動的再構成 (DR) がサポートされています。システムでメモリーの追加や削除を伴う DR 操作があると、該当のパラメータが /etc/system に明示的に設定されていなければ、そのパラメータ値が再計算されます。明示的に設定されている場合は、変数の値に対する制約に反しないかぎり、/etc/system に指定された値が使用されます。この場合は、値がリセットされます。
システムのページングを開始する最初のきっかけになります。ページ数がこのしきい値に達すると、ページスキャナが立ち上がり、再利用するメモリーページを探します。
符号なし long
物理メモリーの 1/64 または 512K バイトのどちらか大きい方
最小値は、512K バイトまたは物理メモリーの 1/64 のどちらか大きい方であり、getpagesize によって返されるページサイズに基づくページ数で表されます。詳細は、getpagesize(3C) を参照してください。
最大値は物理メモリーのページ数です。この最大値は、物理メモリーの 30% 以内であるべきです。システムは、「検査」の項目で記述している場合以外は、この範囲を強制しません。
ページ
はい。ただしメモリーに関して DR 操作が行われると、動的な変更は失われます。
lotsfree が物理メモリーの総量より大きい場合、値はデフォルトにリセットされます。
lotsfree が desfree よりも大きく、desfree が minfree よりも大きいという関係が常に維持されるようにする必要があります。
ページ要求が急激に増えるような場合には、メモリーアルゴリズムが要求に対応できないことがあります。これを回避するには、早期にメモリーの回収を開始するのも 1 つの方法です。これは、ページングシステムにいくらか余裕を与えることになります。
経験則によると、このパラメータは、システムが 2 - 3 秒で割り当てる必要がある量の 2 倍にします。このパラメータの適正値は負荷によって異なります。DBMS サーバーはデフォルトの設定で支障がないはずです。しかし、ファイルシステムの入出力負荷が非常に大きい場合は、このパラメータを調整する必要性があるかもしれません。
負荷が比較的安定し、メモリー総量が多いシステムでは、この値を引き下げます。許容される最小値は 512K バイトであり、getpagesize によって返されるページサイズに基づくページ数で表されます。
変更の可能性あり
符号なし整数
lotsfree / 2
最小値は、256K バイトまたは物理メモリーの 1/128 のどちらか大きい方であり、getpagesize によって返されるページサイズに基づくページ数で表されます。
最大値は物理メモリーのページ数です。この最大値は物理メモリーの 15% 以内であるべきです。システムは、「検査」の項目で記述している場合以外は、この範囲を強制しません。
ページ
はい。ただしメモリーの追加や削除を伴う動的再構成が行われると、動的に変更した値は無効になります。その時点でこの値は、/etc/system ファイルに指定された値か、新しい物理メモリーの値から計算された値にリセットされます。
desfree が lotsfree より大きい場合、desfree は lotsfree / 2 に設定されます。メッセージは表示されません。
lotsfree が desfree よりも大きく、desfree が minfree よりも大きいという関係が常に維持されるようにする必要があります。
このパラメータの値を増やすと、いくつかの副次的な影響が現われることがあります。新しい値がシステム上で使用できるメモリー容量に近いかそれを超えると、次の現象が生じることがあります。
使用可能なメモリーが desfree を超えない限り、非同期の入出力要求が処理されません。したがって、desfree の値を増やすと、増やす前なら処理されたであろう要求が拒否されることがあります。
NFS の非同期書き込みが、同期書き込みとして実行されます。
スワッパーが本来より早く立ち上がり、そのスワッパーの動作が、積極的な動作をする方向に傾きます。
システムに前もって読み込む実行可能ページの数が本来よりも少なくなることがあります。この副次的な影響の結果、アプリケーションの動作が本来よりも遅くなる可能性があります。
負荷が比較的安定し、メモリー総量が多いシステムでは、この値を引き下げます。許容される最小値は 256K バイトであり、getpagesize によって返されるページサイズに基づくページ数で表されます。
変更の可能性あり
許容される最低メモリーレベルを指定します。メモリーがこの値を下回ると、システムはページアウト動作の完了に必要な割り当て、またはプロセスのスワップ完了に必要な割り当てに重点を置いて、メモリーを割り当てます。それ以外の割り当て要求は拒否されたりブロックされたりします。
符号なし整数
desfree / 2
最小値は、128K バイトまたは物理メモリーの 1/256 のどちらか大きい方であり、getpagesize によって返されるページサイズに基づくページ数で表されます。
最大値は物理メモリーのページ数です。この最大値は物理メモリーの 7.5% 以内であるべきです。システムは、「検査」の項目で記述している場合以外は、この範囲を強制しません。
ページ
はい。ただしメモリーの追加や削除を伴う動的再構成が行われると、動的に変更した値は無効になります。その時点でこの値は、/etc/system ファイルに指定された値か、新しい物理メモリーの値から計算された値にリセットされます。
minfree が desfree より大きい場合、minfree は desfree / 2 に設定されます。メッセージは表示されません。
lotsfree が desfree よりも大きく、desfree が minfree よりも大きいという関係が常に維持されるようにする必要があります。
一般にはデフォルト値で十分です。負荷が比較的安定し、メモリー総量が多いシステムでは、この値を引き下げます。許容される最小値は 128K バイトであり、getpagesize によって返されるページサイズに基づくページ数で表されます。
変更の可能性あり
要求を満たせるだけのメモリーがある場合でも、メモリー割り当て要求ブロッキングをスリープ状態にするメモリー レベルを指定します。
符号なし整数
minfree
最小値は、128K バイトまたは物理メモリーの 1/256 のどちらか大きい方であり、getpagesize によって返されるページサイズに基づくページ数で表されます。
最大値は物理メモリーのページ数です。この最大値は物理メモリーの 4% 以内であるべきです。システムは、「検査」の項目で記述している場合以外は、この範囲を強制しません。
ページ
はい。ただしメモリーの追加や削除を伴う動的再構成が行われると、動的に変更した値は無効になります。その時点でこの値は、/etc/system ファイルに指定された値か、新しい物理メモリーの値から計算された値にリセットされます。
throttlefree が desfree よりも大きい場合、throttlefree は minfree に設定されます。メッセージは表示されません。
lotsfree が desfree よりも大きく、desfree が minfree よりも大きいという関係が常に維持されるようにする必要があります。
一般にはデフォルト値で十分です。負荷が比較的安定し、メモリー総量が多いシステムでは、この値を引き下げます。許容される最小値は 128K バイトであり、getpagesize によって返されるページサイズに基づくページ数で表されます。詳細は、getpagesize(3C) を参照してください。
変更の可能性あり
ページアウトスレッドまたはスケジューラスレッドが独占使用できるように確保するページ数を指定します。使用可能なメモリーがこの値を下回ると、ページアウトやスケジューラ以外のプロセスに対するブロックしない割り当ては拒否されます。ページアウトには専用の小さなメモリープールが必要です。ページアウトは、ページをバッキングストアに書き込む入出力に必要なデータ構造体をここから割り当てます。
符号なし整数
throttlefree / 2
最小値は、64K バイトまたは物理メモリーの 1/512 のどちらか大きい方であり、getpagesize(3C) によって返されるページサイズに基づくページ数で表されます。
最大値は物理メモリーのページ数です。この最大値は物理メモリーの 2% 以内であるべきです。システムは、「検査」の項目で記述している場合以外は、この範囲を強制しません。
ページ
はい。ただしメモリーの追加や削除を伴う動的再構成が行われると、動的に変更した値は無効になります。その時点でこの値は、/etc/system ファイルに指定された値か、新しい物理メモリーの値から計算された値にリセットされます。
pageout_reserve が throttlefree / 2 より大きい場合、pageout_reserveは throttlefree / 2 に設定されます。メッセージは表示されません。
lotsfree が desfree よりも大きく、desfree が minfree よりも大きいという関係が常に維持されるようにする必要があります。
一般にはデフォルト値で十分です。負荷が比較的安定し、メモリー総量が多いシステムでは、この値を引き下げます。許容される最小値は 64K バイトであり、getpagesize によって返されるページサイズに基づくページ数で表されます。
変更の可能性あり
ロック解除されていなければならないページ数を指定します。ページのロック要求によって使用可能なメモリーがこの値を下回る場合は、その要求は拒否されます。
符号なし long
tune_t_minarmem + 100 と、ブート時に使用可能なメモリーの 4% + 4M バイトのどちらか大きい方
システムが強制する最小値は tune_t_minarmem + 100 です。最大値については、システムは強制しません。
ページ
はい。ただしメモリーの追加や削除を伴う動的再構成が行われると、動的に変更した値は無効になります。その時点でこの値は、/etc/system ファイルに指定された値か、新しい物理メモリーの値から計算された値にリセットされます。
/etc/system ファイルで指定された値、またはデフォルトで計算された値が tune_t_minarmem + 100 よりも小さい場合、この値は tune_t_minarmem + 100 へリセットされます。
/etc/system ファイルからの値が増やされても、メッセージは表示されません。検査は、ブート時とメモリーの追加または削除を伴なう動的再構成が行われた場合に限って実行されます。
メモリーのロック要求や、SHARE_MMU フラグを指定した共有メモリーセグメントへの接続が失敗したが、使用可能なメモリーが十分ありそうな場合。
大きすぎる値が原因で、メモリーのロック要求 (mlock、mlockall、および memcntl) が不必要に失敗する場合。詳細は、mlock(3C)、mlockall(3C)、および memcntl(2) のマニュアルページを参照してください。
変更の可能性あり
デッドロックを回避するために維持しなければならない、利用可能な最小常駐 (スワップ不能) メモリーを指定します。この値は、OS のコアによって使用されるメモリー部分を予約するために使用されます。この方法で制限されたページは、OS が使用可能なメモリーの最大量を判定するときには計算に入れられません。
符号付き整数
25
1 から物理メモリー
ページ
いいえ
ありません。値が大きいと、物理メモリーが無駄になります。
一般にはデフォルト値で十分です。システムがロックされ、使用できるメモリーがないことがデバッグ情報からわかった場合は、デフォルト値を増やすことを検討してください。
変更の可能性あり
符号付き整数
fastscan のデフォルト値は次のいずれかの方法で設定されます。
/etc/system ファイルに設定された fastscan 値が使用されます。
/etc/system ファイルに設定された maxfastscan 値が使用されます。
/etc/system ファイルに fastscan も maxfastscan も設定されていない場合は、システムのブート時に、fastscan が 64M バイトに設定されます。数分間のシステムのブート後、fastscan 値が、スキャナが CPU の 10% を使用して 1 秒間で走査できるページの数に設定されます。
これらのすべての状況で、派生した値がシステムのメモリーの半分を超えた場合、fastscan 値はシステムのメモリーの半分の値に制限されます。
64M バイトからシステムの物理メモリーの半分
ページ
はい。ただしメモリーの追加や削除を伴う動的再構成が行われると、動的に変更した値は無効になります。その時点でこの値は、/etc/system ファイルに指定された値か、新しい物理メモリーの値から計算された値にリセットされます。
最大値は、64M バイトと物理メモリーの 1/2 のどちらか小さい方です。
メモリー不足のときにメモリーの走査を優先させたい場合。特に、システムでメモリーの要求が急激に多くなることがある場合や、多数のファイル入出力が行われることがある場合。
変更の可能性あり
符号付き整数
物理メモリーの 1/20 (ページ数) か 100 (小さい方)
1 から fastscan / 2
ページ
はい。ただしメモリーの追加や削除を伴う動的再構成が行われると、動的に変更した値は無効になります。その時点でこの値は、/etc/system ファイルに指定された値か、新しい物理メモリーの値から計算された値にリセットされます。
slowscan が fastscan / 2 より大きい場合、slowscan は fastscan / 2 にリセットされます。メッセージは表示されません。
メモリー不足のときにメモリーの走査を優先させたい場合、特に、システムでメモリーの要求が急激に多くなるときがある場合。
変更の可能性あり
pageout が最低限消費できる CPU の割合を指定します。このパラメータは、ページスキャナで使用できる最大時間を判定するための開始点として使用されます。
符号付き整数
4
1 から 80
%
はい
なし
複数の CPU と多くのメモリーを備えたシステム (このようなシステムではメモリーの要求が急激に多くなるときがある) でこの値を増やすと、ページャがメモリーの検出に使用できる時間が増えます。
変更の可能性あり
Oracle Solaris OS は双針クロックアルゴリズムを使用して、メモリー不足のときに再利用の候補となるページを探します。最初の針はメモリーに使用されていないという印を付けていきます。次の針は、最初の針の少し後から、そのページに依然として使用されていないという印が付けられているかを調べます。そうであれば、そのページが再利用の対象になります。最初の針と次の針の間隔が handspreadpages です。
符号なし long
fastscan
1 からシステムの物理メモリーの最大ページ数
ページ
はい。このパラメータを変更する場合、カーネルパラメータ reset_hands もゼロ以外の値に設定する必要があります。handspreadpages の新しい値がいったん認識されると、reset_hands はゼロに設定されます。
値は物理メモリー容量と handspreadpages value のどちらか小さい方に設定されます。
ページが再利用されるまで置いておく時間を長くする場合。この値を増やすと 2 つの段階の間の時間が長くなるため、ページが再利用されるまでの時間が増えます。
変更の可能性あり
再利用に備えてページを保管する代わりに、入出力の完了後ただちにページを解放する、システムしきい値の部分を指定します。このしきい値は lotsfree + pages_before_pager です。さらに、NFS 環境も、メモリーが不足するとこのしきい値を使用して非同期の活動を減らします。
符号付き整数
200
1 から物理メモリーのページ数
ページ
いいえ
なし
入出力の大半が 1 回限りのページの読み取りまたは書き込みであり、二度と参照されない場合、このパラメータを変更することができるかもしれません。この変数を大きなメモリーの値に設定すると、ページは空リストに追加され続けます。
システムが繰り返し強いメモリー要求を受ける場合も、このパラメータを変更することがあります。より大きな値は、この要求に対するより大きな緩衝剤となります。
変更の可能性あり
ページングシステムがキューに入れることのできるページ入出力要求の最大数を指定します。ページングシステムは、実際に使用する最大数を計算するために、この数字を 4 で割ります。このパラメータは、要求の数を制限する他に、プロセスのスワッピングを制御するためにも使用されます。
符号付き整数
40
最小値は 1 です。最大値はシステムアーキテクチャーによって決まります。主に、コントローラやディスクの数、そしてディスクのスワップサイズなどの入出力サブシステムによります。
入出力
いいえ
なし
ページャからの入出力要求の最大数は、要求バッファーのリストのサイズによって制限されます。現在のサイズは 256 です。
このパラメータはメモリーのページアウトを早くするために増やします。複数のスワップデバイスが構成されているか、またはスワップデバイスがストライプ化デバイスである場合、この値を増やすとメモリー不足の解消が早くなることがあります。既存の入出力サブシステムは、追加される入出力の負荷に対処できる必要があります。また、スワップパーティションとアプリケーションファイルが同じディスク上にある場合、スワップ入出力の増加はアプリケーションの入出力のパフォーマンスを低下させることがあります。
変更の可能性あり