2.8. メモリーのヒントのスワップと不足
メモリースワップ
ページをディスクにスワップアウトすると、どの環境でもレイテンシーが発生する可能性があります。レイテンシーを低くするには、システムに十分なメモリーを使用するため、スワップが必要ありません。アプリケーションおよびシステム用に物理 RAM を常にサイズにします。vmstat を使用してメモリー使用量を監視し、si (スワップイン) フィールドと so (スワップアウト) フィールドを確認します。可能な限りゼロのままにすることが最適です。
手順2.8 OOM (out of Memory)
OOM (Out of Memory) は、スワップ領域を含む利用可能なメモリーがすべて割り当てられているコンピューティング状態を指します。通常、これによりシステムがパニックが発生し、予想通りに機能しなくなります。
/proc/sys/仮想マシン/panic_on_oom には、OOM の動作を制御するスイッチがあります。1 に設定すると、カーネルは OOM 時にパニックになります。デフォルト設定は 0 で、カーネルに OOM で oom_killer という関数を呼び出すように指示します。通常、oom_killer は不正なプロセスを強制終了することができ、システムは存続します。
- これを変更する最も簡単な方法は、新しい値を
/proc/sys/仮想マシン/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)