Amazon Elastic Container Service
開発者ガイド (API バージョン 2014-11-13)

コンテナインスタンス メモリ管理

Amazon ECS コンテナエージェントが コンテナインスタンスクラスター に登録するとき、コンテナインスタンスタスク に予約できるメモリの量をエージェントが決定する必要があります。プラットフォームのメモリオーバーヘッドとシステムカーネルが占めるメモリのため、この数値は、Amazon EC2 インスタンスとして公開されているインストール済みメモリ量とは異なります。例えば、m4.large インスタンスには 8 GiB のメモリがインストールされています。しかし、これは コンテナインスタンス が登録されたときに、タスク 用に 8192 MiB として厳密に変換されるとは限りません。

タスク に 8192 MiB を指定し、使用可能なメモリが 8192 MiB 以上の コンテナインスタンス がなくこの要件を満たせない場合、その タスククラスター

また、コンテナインスタンスの Amazon ECS コンテナエージェントやその他の重要なシステムプロセス用のメモリを確保しなくてはならず、そうでないとタスクのコンテナが同じメモリに対して競合し、システム障害を引き起こす可能性があります。 詳細については、「システムメモリの予約」を参照してください。

Amazon ECS コンテナエージェントは、Docker ReadMemInfo() 関数を使用してオペレーティングシステムで使用可能な合計メモリのクエリを実行します。Linux と Windows の 両方の合計メモリを判断する コマンドラインユーティリティを提供します。

例 -Linux 合計メモリを決定

free コマンドは、オペレーティングシステムによって認識される合計メモリを返します。

$ free -b

Amazon ECS-optimized Amazon Linux AMI を実行する m4.large インスタンスの出力例。

total used free shared buffers cached Mem: 8373026816 348180480 8024846336 90112 25534464 205418496 -/+ buffers/cache: 117227520 8255799296

このインスタンスには 8373026816 バイトの合計メモリーがあり、タスクに使用できる 7985 MiB に変換されます。

例 -Windows 合計メモリを決定

wmic コマンドは、オペレーティングシステムによって認識される合計メモリを返します。

C:\> wmic ComputerSystem get TotalPhysicalMemory

Amazon ECS-optimized Windows AMI を実行する m4.large インスタンスの出力例。

TotalPhysicalMemory 8589524992

このインスタンスには合計メモリーが 8589524992 バイトあり、タスクに使用可能な 8191 MiB に変換されます。

システムメモリの予約

タスクコンテナインスタンス 上のすべてのメモリを占有している場合、タスク がメモリが必要な重要なシステムプロセスと競合し、システム障害の引き金となる可能性があります。Amazon ECS コンテナエージェントは ECS_RESERVED_MEMORY という構成変数を提供します。この変数を使用して、タスク に割り当てられたプールから指定されただけのメモリ (MiB) を削減できます。これにより、重要なシステムプロセスのメモリを効果的に確保することができます。

たとえば、コンテナエージェント設定ファイルで ECS_RESERVED_MEMORY=256 を指定すると、そのインスタンスの総メモリマイナス 256 MiB が登録され、256 MiBのメモリは ECS タスクに割り当てされなくなります。エージェント構成変数とその設定方法の詳細については、Amazon ECS コンテナエージェントの設定 および Amazon EC2 ユーザーデータを使用してコンテナインスタンスをブートストラップする を参照してください 。

コンテナインスタンス メモリの表示

Amazon ECS コンソール (または DescribeContainerInstances API 操作) で、コンテナインスタンス が登録されているメモリ量を表示できます。特定のインスタンスタイプに対して、可能な限り多くのメモリを タスク に割り当て、リソース使用率を最大化しようとしている場合は、その コンテナインスタンス のために使用可能なメモリを観察してから、タスク に可能な限り多くのメモリを割り当ててください。

コンテナインスタンス メモリを表示するには

  1. https://console.aws.amazon.com/ecs/ にある Amazon ECS コンソールを開きます。

  2. 表示する コンテナインスタンス をホストするクラスタを選択します。

  3. [ECS Instances (ECS インスタンス)] を選択し、[Container Instance (コンテナインスタンス)] 列から コンテナインスタンス 表示を選択します。

  4. [Resources (リソース)] セクションに、コンテナインスタンス 用に登録され使用できるメモリが表示されます。

    [Registered (登録済み)] メモリの値は Amazon ECS の初回起動時に登録された時の コンテナインスタンス のメモリの値です。[Available (使用可能)] メモリの値はまだ タスク に割り当てられていないメモリの値です。