有效的容量规划有助于确保Azure Batch工作负荷在需要计算资源时具有所需的计算资源。 本文介绍如何构建 Batch 容量、如何规划工作负荷的配额,以及如何降低分配失败的风险。
配额是一种限制,不是容量保证。 提前规划有助于请求适当的配额,选择弹性配置,并在容量受限时做出适当反应。 有关特定的默认值和最大值,请参阅 Batch 服务配额和限制。
容量层次结构
批处理容量在多个层进行管理,其中每个层限制其下方的容量。 你的有效容量取决于整个链条中限制最严格的那个环节。
顶部是Azure区域提供每个 VM 系列可用的物理数据中心容量。 区域容量不是你控制的固定值;它随时间和 VM 系列而异。 然后,订阅配额会决定每个区域中每个 VM 系列允许的核心数上限。 在 用户订阅池分配模式下,这些订阅配额直接应用于 Batch 池。 Batch 帐户配额规定了每个 Batch 帐户允许使用的核心数、池数和活动作业数。 在 Batch 服务池分配模式下,这些帐户级配额适用。 最后,池限制会依据池上层的配额以及 Batch 服务设置的 池大小限制,限定每个池中的节点数。
哪个层级适用于您的账户,取决于您的池分配模式。 有关详细信息,请参阅 Batch 账户和池分配模式。
规划容量要求
在创建生产池之前,请估算工作负荷所需的资源。 请完成以下问题,将工作负荷特征转换为配额请求:
- 工作负荷配置文件。 并发作业和任务的峰值数量是多少? 平均任务工期和内存要求是多少? 任务是否需要 GPU 或多节点 (MPI) 协调?
- 虚拟机选择。 哪个 VM 系列和大小 最符合工作负荷? 每个 VM 提供多少个核心和多少内存?
- 池大小设置。 每个节点并发运行多少个任务(节点核心数最多四倍,每个节点上限为 256 个任务槽)? 给定高峰并发任务计数后,需要多少个节点?
- 配额要求。 将最大节点计数乘以每个 VM 的核心数,以获取所需的总核心数。 将该总量与当前配额进行比较,以确定需要申请增加的额度。
若要查看当前配额并请求增加,请参阅 查看 Batch 配额 和 增加配额。 提前提交配额请求,并从适度的增量增加开始。 较大的配额增加可能需要手动评审,可能需要几天到几周的时间。
主动管理容量
在容量成为瓶颈之前做好容量规划:
- 监视配额使用情况。 根据配额跟踪核心使用情况,并在使用情况接近限制时发出警报,例如,在 70-80%。 有关详细信息,请参阅 监控 Batch 解决方案。
- 启用自动缩放。 配置 自动缩放 ,以便池随需求增长和收缩,而不是保留固定的过度预配节点计数。 一种常见模式是维持一组专用节点作为基线配置,以保证任务持续推进,并在需要时突增到 Spot 节点以提高吞吐量。
- 分布在区域和帐户之间。 跨多个区域或 Batch 帐户分配工作负荷,以访问更多聚合容量。 服务配额(如活动作业和池)适用于每个不同的 Batch 帐户。
处理容量约束
即使进行规划,也可能会遇到分配失败。 将工作流设计得更具韧性:
- 重试并尝试不同方式。 如果池无法达到其目标大小,请在几分钟后重试,尝试其他 VM 大小,或尝试其他区域。 资源可用性随时间变化。
- 重新定向作业。 避免依赖于单个静态池。 如果池无法增长,请确保可以将作业重定向到其他池,可能具有不同的 VM 大小。 有关详细信息,请参阅Azure Batch最佳做法。
最佳做法
| 练习 | Description |
|---|---|
| 提前请求配额 | 提前提交配额请求;大幅增长可能需要几天到几个星期。 |
| 为余量做好规划 | 请求的配额略高于当前峰值,以允许增长。 |
| 使用多个区域 | 跨区域分散工作负荷,以访问更多聚合容量。 |
| 监视使用情况 | 当核心使用量达到配额的 70-80% 时发出警报。 |
| 适当大小的 VM | 将 VM 系列和大小与工作负荷匹配,而不是过度预配。 |
| 明智使用 Spot | 为容错型工作负载预留 Spot 节点,并将其与专用节点搭配使用。 |
| 清理资源 | 删除未使用的池以释放帐户配额。 |