コンテナスワップ領域の管理 - Amazon Elastic Container Service

コンテナスワップ領域の管理

Amazon ECS を使用すると、Linux コンテナインスタンスのスワップメモリ空間の使用状況をコンテナレベルで制御できます。コンテナごとのスワップ設定を使用すると、タスク定義内の各コンテナでスワップを有効または無効にできます。有効になっているコンテナでは、使用されるスワップ領域の最大量を制限できます。たとえば、レイテンシーが重要なコンテナではスワップを無効にできますが、一時的メモリ需要が高いコンテナではスワップをオンにして、コンテナのロード時にメモリ不足エラーが発生する可能性を減らすことができます。

コンテナのスワップ設定は、以下のコンテナ定義パラメータによって管理されます。

maxSwap

コンテナが使用できるスワップメモリの合計 (MiB 単位)。このパラメータは、docker run--memory-swap オプションに変換されます。ここで、値はコンテナメモリの合計に maxSwap 値を加えた値です。

maxSwap0 値を指定した場合、コンテナはスワップを使用しません。許容値は、0 または任意の正の整数です。maxSwap パラメータを省略すると、コンテナは実行中のコンテナインスタンスのスワップ設定を使用します。maxSwap パラメータを使用するには、swappiness 値を設定する必要があります。

swappiness

これにより、コンテナのメモリスワップ動作を調整できます。swappiness 値が 0 の場合、絶対に必要な場合を除き、スワップは行われません。swappiness 値が 100 の場合、ページは非常に積極的にスワップされます。使用できる値は、0100 の間の整数です。swappiness パラメータを指定しない場合、デフォルト値の 60 が使用されます。maxSwap の値が指定されていない場合、このパラメータは無視されます。このパラメータは、docker run--memory-swappiness オプションにマッピングされます。

JSON 構文の例を次に示します。

"containerDefinitions": [{ ... "linuxParameters": { "maxSwap": integer, "swappiness": integer }, ... }]

コンテナのスワップに関する考慮事項

コンテナごとのスワップ設定を使用する場合は、次の点を考慮してください。

  • スワップ領域を有効にし、コンテナが使用するコンテナインスタンスで割り当てる必要があります。

    注記

    Amazon ECS 対応 AMIs では、スワップはデフォルトで有効になっていません。この機能を使用するには、インスタンスでスワップを有効にする必要があります。詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイドの「インスタンスストアのスワップボリューム」または「スワップファイルを使用して Amazon EC2 インスタンスのスワップ領域として動作するようにメモリを割り当てるには?」を参照してください。

  • スワップスペースコンテナ定義パラメータは、EC2 起動タイプを使用するタスク定義でのみサポートされます。

  • この機能は Linux コンテナでのみサポートされています。

  • maxSwap および swappiness コンテナ定義パラメータをタスク定義から省略すると、各コンテナのデフォルトの swappiness 値が 60 になり、合計スワップ使用量はコンテナのメモリ予約の 2 倍に制限されます。