选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

AWS Batch 亚马逊 EKS 上的内存和 vCPU 注意事项

聚焦模式
AWS Batch 亚马逊 EKS 上的内存和 vCPU 注意事项 - AWS Batch

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

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

在 Amaz AWS Batch on EKS 上,您可以指定可供容器使用的资源。例如,您可以为 vCPU 和内存资源指定 requestslimits 值。

以下是指定 vCPU 资源的限制:

  • 至少必须指定一个 vCPUrequestslimits

  • 一个 vCPU 单元等同于一个物理或虚拟内核。

  • vCPU 值必须以整数或以 0.25 为增量输入。

  • 最小的有效 vCPU 值为 0.25。

  • 如果指定了两者的值,则 requests 值必须小于或等于 limits 值。这样,您就可以配置软和硬 vCPU 配置。

  • 无法以 milliCPU 形式指定 vCPU 值。例如,100m 不是有效值。

  • AWS Batch 使用该requests值进行缩放决策。如果未指定 requests 值,则会将 limits 值复制到 requests 值中。

以下是指定内存资源的限制:

  • 至少必须指定内存 requestslimits 值之一。

  • 内存值必须在 mebibytes (MiBs).

  • 如果两者都指定,则 requests 值必须等于 limits 值。

  • AWS Batch 使用该requests值进行缩放决策。如果未指定 requests 值,则会将 limits 值复制到 requests 值中。

以下是指定 GPU 资源的限制:

  • 如果两者都指定,则 requests 值必须等于 limits 值。

  • AWS Batch 使用该requests值进行缩放决策。如果未指定 requests 值,则会将 limits 值复制到 requests 值中。

示例:作业定义

Amaz AWS Batch on EKS 任务定义中的以下内容配置了软 vCPU 共享。这允许 AWS Batch 在 Amazon EKS 上使用该实例类型的所有 vCPU 容量。但是,如果还有其他作业在运行,则为该作业分配的最大值为 2 v CPUs。 内存限制在 2 GB 以内。

{ "jobDefinitionName": "MyJobOnEks_Sleep", "type": "container", "eksProperties": { "podProperties": { "containers": [ { "image": "public.ecr.aws/amazonlinux/amazonlinux:2", "command": ["sleep", "60"], "resources": { "requests": { "cpu": "2", "memory": "2048Mi" } } } ] } } }

Amaz AWS Batch on EKS 任务定义中的以下内容的request值为,1并为该任务分配的最大值CPUs 为 4 v。

{ "jobDefinitionName": "MyJobOnEks_Sleep", "type": "container", "eksProperties": { "podProperties": { "containers": [ { "image": "public.ecr.aws/amazonlinux/amazonlinux:2", "command": ["sleep", "60"], "resources": { "requests": { "cpu": "1" }, "limits": { "cpu": "4", "memory": "2048Mi" } } } ] } } }

Amaz AWS Batch on EKS 任务定义中的以下内容将 vCPU limits 值设置为1,内存limits值设置为 1 GB。

{ "jobDefinitionName": "MyJobOnEks_Sleep", "type": "container", "eksProperties": { "podProperties": { "containers": [ { "image": "public.ecr.aws/amazonlinux/amazonlinux:2", "command": ["sleep", "60"], "resources": { "limits": { "cpu": "1", "memory": "1024Mi" } } } ] } } }

当将 Amazon EKS AWS Batch 上的任务 AWS Batch 转换为 Amazon EKS 容器时,会将该limits值 AWS Batch 复制到该requests值中。在未指定 requests 值时,会出现这种情况。提交前面的示例作业定义时,容器组(pod)spec 如下所示。

apiVersion: v1 kind: Pod ... spec: ... containers: - command: - sleep - 60 image: public.ecr.aws/amazonlinux/amazonlinux:2 resources: limits: cpu: 1 memory: 1024Mi requests: cpu: 1 memory: 1024Mi ...

节点 CPU 和内存预留

AWS Batch 依赖bootstrap.sh文件的默认逻辑来预留 vCPU 和内存。有关 bootstrap.sh 文件的更多信息,请参阅 bootstrap.sh。在调整 vCPU 和内存资源的大小时,请考虑以下示例。

注意

如果没有实例在运行,vCPU 和内存预留最初可能会影响 AWS Batch 扩展逻辑和决策。实例运行后, AWS Batch 调整初始分配。

示例:节点 CPU 预留

CPU 预留值是使用实例可用的 v 总数,以 millicores 为单位计算CPUs 的。

vCPU 数量 预留百分比
1 6%
2 1%
3-4 0.5%
4 及以上 0.25%

使用上述值,以下各项为真:

  • 具有 2 v 的c5.large实例的 CPU 预留值CPUs 为 70 m。计算方法如下:(1*60) + (1*10) = 70 m

  • 具有 96 v 的c5.24xlarge实例的 CPU 预留值CPUs 为 310 m。计算方法如下:(1*60) + (1*10) + (2*5) + (92*2.5) = 310 m。

在此示例中,有 1930 个(计算为 2000-70)毫核 vCPU 单元可用于在 c5.large 实例上运行作业。假设您的作业需要 2 (2*1000 m) 个 vCPU 单元,则该作业不适合单个 c5.large 实例。但是,需要 1.75 vCPU 单元的作业合适。

示例:节点内存预留

内存预留值以 MB 为单位计算,使用以下公式:

  • 实例容量以 MB 为单位。例如,一个 8 GB 的实例是 7,748 MiB.

  • kubeReserved 值。kubeReserved 值是为系统进程守护程序保留的内存量。kubeReserved 值的计算方式如下:((11 * 实例类型支持的最大容器组(pod)数) + 255)。有关实例类型支持的最大 pod 数的信息,请参阅 eni-max-pods.txt

  • HardEvictionLimit 值。当可用内存低于 HardEvictionLimit 值时,实例会尝试驱逐容器组(pod)。

计算可分配内存的公式如下:(instance_capacity_in_MiB)-(11 * (maximum_number_of_pods))-255-(HardEvictionLimit value.))。

一个 c5.large 实例最多支持 29 个容器组(pod)。对于HardEvictionLimit值为 100 MiB 的 8 GB c5.large 实例,可分配的内存为 7074 MiB。 这是通过以下方式计算的:(7748-(11 * 29) -255 -100) = 707 4 MiB。在此示例中,一个 8,192 MiB job 不适合这个实例,尽管它是 8 gibibyte (GiB) 实例。

DaemonSets

当你使用时 DaemonSets,请考虑以下几点:

  • 如果 Amazon EKS AWS Batch 上没有实例在运行,DaemonSets 最初可能会影响 AWS Batch 扩展逻辑和决策。 AWS Batch 最初为预期分配了 0.5 个 vCPU 单位和 500 MiB DaemonSets。 实例运行后, AWS Batch 调整初始分配。

  • 如果 DaemonSet 定义了 vCPU 或内存限制,在 AWS Batch Amazon EKS 上,任务的资源较少。我们建议您保留数量 DaemonSets 他们被分配到尽可能低 AWS Batch 的工作岗位。

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。