13.11. 仮想メモリー (VM) 調整可能パラメーターの調整
仮想メモリー (VM) の調整可能パラメーターは、スワップ領域をどれだけ積極的に使用するかなどを含め、システムによるメモリーの管理方法を制御するカーネルパラメーターです。これらの設定を調整すると、ワークロードによってはシステムのパフォーマンスに大きな影響が及ぶことがあります。
vm.swappiness パラメーターは、カーネルがプロセスを物理メモリーからスワップ領域に移動させる傾向を制御するものです。値は 0 から 100 までのパーセンテージで指定します。
- 大きな値 (例: 60 や 100): カーネルはより積極的にプロセスをディスクにスワップします。これにより、物理メモリーを他の用途 (ファイルシステムキャッシュなど) のために解放できます。ただし、スワップされたプロセスが頻繁に必要となる場合は、I/O 操作とレイテンシーが増加する可能性があります。
- 小さな値 (例:0 や 10): カーネルはスワッピングを回避し、プロセスを可能な限り長く物理メモリーに保持しようとします。これは一般的に、高速な I/O と大容量の RAM を備えたデスクトップシステムやサーバーに適しています。
以下に示すその他の仮想メモリー調整可能パラメーターでも、スワップの動作に影響を与えることができます。
- vm.dirty_ratio: カーネルが "ダーティー" ページ (変更済みだが、まだディスクに書き込まれていないメモリーページ) を積極的に書き出し始める前に、ダーティーページで埋めることができるシステムメモリーの割合。
-
vm.dirty_background_ratio: バックグラウンドのカーネルプロセスがダーティーページを書き出し始める前に、ダーティーページで埋めることができるシステムメモリーの割合。これは、
vm.dirty_ratioよりも積極性の低い操作です。
手順
現在の値を表示します。
$ cat /proc/sys/vm/swappinessデフォルト値は 60 です。
値を一時的に 10 などに設定します。
# sysctl vm.swappiness=10/etc/sysctl.d/99-sysctl.confまたは同様の設定ファイルを編集し、再起動後も設定が保持されるように永続的に設定します。vm.swappiness = 10変更を適用します。
# sysctl -p