運算資源記憶體管理 - 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() 函數來查詢作業系統可用的記憶體總量。Linux 提供了命令行實用程序來確定總內存。

範例 - 判定 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 可用於工作。

預留系統記憶體

如果您在工作中佔用計算資源上的所有記憶體,您的工作可能會與記憶體的關鍵系統處理程序競爭,並可能導致系統故障。Amazon ECS 容器代理程式提供稱為ECS_RESERVED_MEMORY的組態變數。您可以使用此組態變數,從配置給工作的集區中移除指定數目的 MiB 記憶體。這可為重要系統程序有效地預留記憶體。

預設的 AWS Batch 運算資源 AMI 會預留 32 MiB 的記憶體供 Amazon ECS 容器代理程式和其他重要系統程序使用。

檢視運算資源記憶體

您可以在 Amazon ECS 主控台或透過 DescribeContainerInstancesAPI 作業檢視運算資源註冊的記憶體量。如果您嘗試為特定執行個體類型提供作業盡可能多的記憶體,以最大限度地提高資源使用率,則可以觀察該計算資源可用的記憶體,然後指派工作那麼多記憶體。

若要檢視計算資源記憶體
  1. 開啟主控台,網址為 https://console.aws.amazon.com/ecs/v2

  2. 選擇 [叢集],然後選擇主控要檢視之運算資源的叢集。

    您運算環境的叢集名稱以您運算環境的名稱開頭。

  3. 選擇基礎結構

  4. 容器執行個體下,選擇容器執行個體。

  5. [資源和網路] 區段顯示計算資源的已註冊記憶體和可用記憶體。

    註冊的記憶體值是第一次啟動 Amazon ECS 時向 Amazon ECS 註冊的運算資源,而「可用記憶體」值則是尚未分配給任務的值。