コンピューティングリソース メモリ管理 - AWS Batch

コンピューティングリソース メモリ管理

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

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

デフォルト AWS Batch コンピュートリソース AMI も 32 MiB のメモリの予約された Amazon ECS コンテナエージェントやその他の重要なシステムプロセスです。このメモリはジョブの割り当てには使用できません。 詳細については、「システムメモリの予約」を参照してください。

Amazon ECS コンテナエージェントは、Docker ReadMemInfo() 関数を使用してオペレーティングシステムで使用可能な合計メモリのクエリを実行します。 と 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 に変換されます。

システムメモリの予約

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

デフォルト AWS Batch コンピュートリソース AMI は 32 MiB のメモリの予約された Amazon ECS コンテナエージェントやその他の重要なシステムプロセスです。

コンピューティングリソース メモリの表示

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

コンピューティングリソース メモリを表示するには

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

  2. 表示する コンピューティングリソース をホストするクラスタを選択します。 コンピューティング環境の名前で始まるクラスターコンピュート環境名をクリックします。

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

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

    [Registered (登録済み)] メモリの値は Amazon ECS の初回起動時に登録された時の コンピューティングリソース のメモリの値です。[Available (使用可能)] メモリの値はまだ ジョブ に割り当てられていないメモリの値です。