5.5. 仮想メモリのチューニング
仮想メモリーは通常、プロセスやファイルシステムキャッシュ、カーネルが使用します。仮想メモリーの使用率は多くの要素に依存しており、それらは以下のパラメーターで影響及ぼすことができます。
swappiness
- 0 から 100 の値でシステムがスワップを行う程度を制御します。値が高い場合はシステムのパフォーマンスを優先し、物理メモリがアクティブでない場合にメモリからプロセスを積極的にスワップします。値が低いと対話機能を優先し、できるだけ長く物理メモリからのプロセスのスワップを回避することから、反応の待ち時間が低下します。デフォルト値は
60
です。データベースワークロードでは、swappiness
の値を高く設定することは推奨されません。たとえば、Oracle データベースでは、swappiness
の値を10
にすることを Red Hat では推奨しています。vm.swappiness=10
min_free_kbytes
- システム全体で空白としておく最低限のキロバイト数です。この値は各低メモリゾーンで警告を発生させる値の計算に使われます。計算後、そのサイズに比例する保存済みの空白ページ数が割り当てられます。
警告
このパラメーターを設定する際には注意してください。値が高すぎたり低すぎたりすると、損害を与える可能性があります。min_free_kbytes
の設定が低すぎると、システムによるメモリの回収が妨げられます。これによりシステムがハングし、メモリ不足によって複数のプロセスが強制終了される可能性があります。しかしこの値を高く設定しすぎると (システムメモリ全体の 5-10%)、システムが即座にメモリ不足に陥ります。Linux は、利用可能な RAM すべてを使ってファイルシステムデータをキャッシュするように設計されています。min_free_kbytes
の値を高く設定すると、システムがメモリ回収に時間を費やしすぎることになります。 dirty_ratio
- パーセントの値を定義します。ダーティーデータの writeout は (pdflush 経由で) ダーティーデータがシステムメモリ合計のこのパーセントを占める際に開始されます。デフォルト値は
20
です。Red Hat はデータベースのワークロードに、少し低めの15
を推奨しています。 dirty_background_ratio
- パーセントの値を定義します。ダーティーデータの writeout は (pdflush 経由で) ダーティーデータがメモリ合計のこのパーセントを占める際にバックグラウンドで開始されます。デフォルト値は
10
です。Red Hat はデータベースのワークロードに、少し低めの3
を推奨しています。 dirty_expire_centisecs
- ダーティーデータがディスクに書き戻されるまでにページキャッシュにとどまる時間を 100 分の 1 秒単位で指定します。Red Hat では、このパラメーターの調整は推奨していません。
dirty_writeback_centisecs
- カーネルフラッシャースレッドが再開して適格なデータをディスクに書き込む間隔の長さを 100 分の 1 秒単位で指定します。これを
0
に設定すると、定期書き込み動作は無効になります。Red Hat ではこのパラメーターの調整は推奨していません。 drop_caches
- この値を
1
、2
、3
のいずれかに設定すると、カーネルはページキャッシュとスラブキャッシュの様々な組み合わせをもたらします。- 1
- システムはすべてのページキャッシュメモリを無効にして、解放します。
- 2
- システムはすべての未使用スラブキャッシュメモリを解放します。
- 3
- システムはすべてのページキャッシュとスラブキャッシュメモリを解放します。
これは非破壊的な操作です。ダーティーオブジェクトは解放できないので、このパラメーターの値を設定する前にsync
を実行することが推奨されます。重要
実稼働環境では、drop_caches
を使ったメモリの解放は推奨されません。
チューニング中にこれらの値を一時的に設定するには、proc ファイルシステム内の適切なファイルに希望する値を echo コマンドで実行します。例えば、
swappiness
を一時的に 50
に設定するには、以下を実行します。
# echo 50 > /proc/sys/vm/swappiness
この値を永続的な設定にするには、
sysctl
コマンドを使う必要があります。詳細は 『導入ガイド』 を参照してください。これは http://access.redhat.com/site/documentation/Red_Hat_Enterprise_Linux/ から入手できます。