コンテナインスタンスのメモリ管理 - Amazon Elastic Container Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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

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

Amazon ECS コンテナエージェントはECS_RESERVED_MEMORY、タスクに割り当てられたプールから指定された数の MiB メモリを削除するために使用できる と呼ばれる設定変数を提供します。これにより、重要なシステムプロセスのメモリを効果的に確保することができます。

タスクでコンテナインスタンス上のすべてのメモリを占有している場合、タスクがメモリに関する重要なシステムプロセスと競合し、システム障害が発生する可能性があります。

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

タスクに 8,192 MiB を指定し、この要件を満たすために 8,192 MiB 以上のメモリを使用できるコンテナインスタンスがない場合、タスクをクラスターに配置することはできません。マネージド型のコンピューティング環境を使用している場合、 はリクエストに対応するためにより大きなインスタンスタイプを起動 AWS Batch する必要があります。

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

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

例 -Linux 合計メモリを決定

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

$ free -b

Amazon ECS に最適化された 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 に最適化された Windows Server AMI を実行しているm4.largeインスタンスの出力例。

TotalPhysicalMemory 8589524992

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

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

Amazon ECS コンソール (または DescribeContainerInstances API オペレーション) で、コンテナインスタンスが に登録しているメモリの量を表示できます。特定のインスタンスタイプに対してタスクに可能な限り多くのメモリを提供してリソース使用率を最大化しようとする場合、そのコンテナインスタンスで使用可能なメモリを確認してから、タスクに十分なメモリを割り当てることができます。

コンテナインスタンスのメモリを表示するには
  1. コンソールをhttps://console.aws.amazon.com/ecs/v2で開きます。

  2. ナビゲーションペインで、クラスター を選択し、コンテナインスタンスをホストするクラスターを選択します。

  3. インフラストラクチャ を選択し、コンテナインスタンス でコンテナインスタンスを選択します。

  4. リソースセクションには、コンテナインスタンスに登録済みメモリと使用可能なメモリが表示されます。

    登録されたメモリ値はコンテナインスタンスであり、最初に起動されたときに Amazon ECS に登録され、使用可能なメモリ値はタスクにまだ割り当てられていないものです。