Fargate 上的 AWS Batch 未分配正确数量的 vCPU

Fargate 上的 AWS Batch 未分配正确数量的 vCPU

我有一个 Web 应用程序,将一些资源密集型任务卸载到由 Fargate 支持的 AWS Batch。

这是一个非常简单的设置 - 单个队列、单个作业定义和单个计算环境。计算环境有限制Maximum vCPUs: 128,没有最低 vCPU。

可以预先估计作业的复杂性,因此在提交作业时,应用程序会覆盖resourceRequirement参数以满足估计的计算能力需求。等效的 CLI 命令如下:

aws batch submit-job \
  --job-name "test-job-1" \
  --job-definition "staging-batch" \
  --job-queue "staging-normal-priority" \
  --container-overrides 'resourceRequirements=[{type=VCPU,value=16},{type=MEMORY,value= 32768}]'

当我在 Web 控制台中查看作业的容器详细信息时,我可以看到请求的值:vCPUs 16.0, Memory 32768,我认为这意味着命令语法是正确的。

但是,如果我将作业修改command为 curl,${ECS_CONTAINER_METADATA_URI_V4}则返回的响应将"Limits"=>{"CPU"=>2}始终如一。1 CPU = 2 vCPU,所以我希望这是"CPU"=>8。“Fargate On-Demand vCPU 资源计数”的“应用的账户级配额值”为 4000(AWS 默认值为 6),这意味着没有配额引起的限制。

有没有办法在 Fargate 上获取所需的 vCPU 数量,或者这是否意味着 AWS 没有足够的按需资源可供分配,因此一直给我 2 个 CPU?

编辑:如果我运行 ruby Etc.nprocessors​​(基于 sysconf(_SC_NPROCESSORS_ONLN) / sched_getaffinity ),我会得到 16,所以我猜 Fargate 盒子给我的 2 CPU 限制是转移注意力的借口。那么问题来了,为什么它会报告 2 的限制?

相关内容