2.8. メモリーのヒントのスワップと不足
メモリースワップ
ページをディスクにスワップアウトすると、どの環境でもレイテンシーが発生する可能性があります。レイテンシーを低くするには、システムに十分なメモリーを使用するため、スワップが必要ありません。アプリケーションおよびシステム用に物理 RAM を常にサイズにします。vmstat
を使用して、メモリー使用率を監視し、si
(swap in) および so
(swap out)フィールドを監視します。可能な限りゼロのままにすることが最適です。
手順2.8 OOM (out of Memory)
OOM (out of Memory) は、スワップ領域を含む利用可能なメモリーがすべて割り当てられているコンピューティング状態を指します。通常、これによりシステムがパニックが発生し、予想通りに機能しなくなります。
/proc/sys/vm/panic_on_oom
の OOM 動作を制御するスイッチがあります。1
をカーネルに設定すると、OOM でパニックが生じます。デフォルト設定は、OOM で oom_killer
という名前の関数を呼び出すようカーネルに指示する 0
です。通常、oom_killer
は不正なプロセスを強制終了し、システムは存続します。
- これを変更する最も簡単な方法は、これを
echo
に、新しい値を/proc/sys/vm/panic_on_oom
に変更します。~]#
cat /proc/sys/vm/panic_on_oom
0 ~]#echo 1 > /proc/sys/vm/panic_on_oom
~]#cat /proc/sys/vm/panic_on_oom
1注記
OOM で Real time カーネルパニックを行うことが推奨されます。システムが OOM 状態になった場合、その状態は決定しなくなります。 oom_killer
スコアを調整することで、プロセスが強制終了される優先順位を設定することもできます。/proc/PID/
には、oom_adj
とoom_score
という名前の 2 つのファイルがあります。oom_adj
の有効なスコアは、-16 から +15 の範囲です。この値は、プロセスが実行されている時間 (他の要因) を考慮するアルゴリズムを使用してプロセスの「問題」を計算するために使用されます。現在のoom_killer
スコアを表示するには、プロセスのoom_score
を確認 します。oom_killer
はスコアが最も高いプロセスを最初に強制終了します。この例では、PID が 12465 のプロセスのoom_score
の調整を行い、oom_killer
が強制終了されにくくします。~]#
cat /proc/12465/oom_score
79872 ~]#echo -5 > /proc/12465/oom_adj
~]#cat /proc/12465/oom_score
78- また、-17 には特殊な値があります。これは、プロセスの
oom_killer
を無効にします。以下の例では、oom_score
はO
の値を返します。これは、このプロセスが終了されないことを示しています。~]#
cat /proc/12465/oom_score
78 ~]#echo -17 > /proc/12465/oom_adj
~]#cat /proc/12465/oom_score
0
関連する man ページ
詳細は、以下の man ページは本セクションに記載の情報に関連しています。
- swapon(2)
- swapon(8)
- vmstat(8)