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 は不正なプロセスを強制終了し、システムは存続します。
  1. これを変更する最も簡単な方法は、これを 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 状態になった場合、その状態は決定しなくなります。
  2. oom_killer スコアを調整することで、プロセスが強制終了される優先順位を設定することもできます。/proc/PID/ には、oom_adjoom_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
    
  3. また、-17 には特殊な値があります。これは、プロセスの oom_killer を無効にします。以下の例では、oom_scoreO の値を返します。これは、このプロセスが終了されないことを示しています。
    ~]# 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)