如何确保在AWS Batch中获取特定的示例类型,同时确保容器尽可能多地使用此资源?
当然,如果我为一个特定的示例类型付费,我想确保我尽可能多地使用它的资源。
当允许AWS批处理使用其最佳策略选择示例类型时,我最终遇到了不幸的情况,即它选择的示例远远超出了为作业/容器定义的规模。
例如,如果我定义容器应该有32 vCPU和128 GiB,批处理会给我一个m6a.12xlarge示例,有48 vCPU和192 GiB。因此,我需要支付16个额外的核心和64 GiB,而我没有使用。
如果我将计算环境限制为32 vCPU和128 GiB,并将容器定义为使用所有这些,则作业似乎会陷入RUNNABLE状态。
现在,我猜这是因为主机示例需要为自己保留一些资源,而不是将所有资源都分配给容器。对吗?
我已经做了大量的互联网搜索这一点和信息是真的缺乏。
我有一种感觉,这只是内存,而不是核心,需要保留(虽然我可能是不正确的)。
我尝试为容器定义稍低的内存(124 GiB)(我认为4GiB足以运行docker守护进程+底层镜像中的任何其他系统内容)。这似乎开始尝试使用m6a.8xlarge,直到批处理意识到它无法工作并在开始作业之前切换到m6a.12xlarge。
1条答案
按热度按时间bwntbbo31#
我不得不在容器资源上尝试不同的限制。
在我的特定情况下,如果我将示例类型限制为m6a.8xlarge,并为容器提供32个核心(所有示例)和123GiB内存,即为主机提供5GiB(我没有费心进入GiB的分数),那么作业实际上会启动。
我不知道这有多普遍,也不知道它是否适用于其他试图使用m6a.8xlarge的人。