计算资源内存管理 - Amazon Batch
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

计算资源内存管理

当 Amazon ECS 容器代理将计算资源注册到计算环境时,该代理必须确定该计算资源有多少内存可用于您的任务。由于平台内存开销和系统内核占用的内存,该数字不同于 Amazon EC2 实例的安装内存量。例如,m4.large 实例具有 8GiB 的已安装内存。但是,当计算资源注册时,这并不总是转化为精确的 8192 MiB 内存可用于作业。

假设您为任务指定了 8192 MiB,但您的所有计算资源都没有 8192 MiB 或更大的可用内存来满足此要求。这样,就无法将任务放到您的计算环境中。如果您使用的是托管计算环境,则Amazon Batch必须启动更大的实例类型才能满足请求。

原定设置的 Amazon Batch 计算资源 AMI 还会为 Amazon ECS 容器代理以及其他关键系统进程预留 32 MiB 内存。Amazon。有关更多信息,请参阅 预留系统内存

Amazon ECS 容器代理使用 Docker ReadMemInfo() 函数来查询可用于操作系统的总内存。Linux 提供命令行实用程序来确定总内存。

例 - 确定 Linux 总内存

free命令返回操作系统识别的总内存。

$ free -b

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 内存。这可以有效地为关键系统进程预留该内存。

原定设置的 Amazon Batch 计算资源 AMI 还会为 Amazon ECS 容器代理以及其他关键系统进程预留 32 MiB 内存。

查看计算资源内存

Amazon ECS Amazon DescribeContainerInstancesAPI。如果您想通过为任务提供尽可能多的特定实例类型的内存来最大限度地提高资源利用率,则可以观察该计算资源的可用内存,然后为作业分配那么多的内存。

查看计算资源内存

  1. 打开 https://console.aws.amazon.com/ecs/ 上的 Amazon ECS 控制台。

  2. 选择托管计算资源的集群以供查看。计算环境的集群名称以该计算环境名称开头。

  3. 选择 ECS 实例,然后从 “容器实例” 列中选择要查看的计算资源。

  4. 资源部分显示了计算资源的注册内存和可用内存。

    注册内存值是首次启动时在 Amazon ECS 中注册的计算资源值,可用内存值是尚未分配给任务的值。