你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。

Azure Batch的容量规划

有效的容量规划有助于确保Azure Batch工作负荷在需要计算资源时具有所需的计算资源。 本文介绍如何构建 Batch 容量、如何规划工作负荷的配额,以及如何降低分配失败的风险。

配额是一种限制,不是容量保证。 提前规划有助于请求适当的配额,选择弹性配置,并在容量受限时做出适当反应。 有关特定的默认值和最大值,请参阅 Batch 服务配额和限制。

确认 Batch 是否适合你的工作负载

当你希望 Azure 以服务形式提供调度功能,并且你的应用程序能够将工作组织成池、作业和任务时,请使用 Batch。 在规划批量容量之前,请考虑以下选项:

  • 当您需要操作特定的 HPC 调度器、定制集群拓扑和软件栈,或与现有本地工作流程紧密对齐时,选择 Azure CycleCloud。
  • 当您希望一个即部署的Slurm环境,并在订阅中配置网络、存储和访问组件时,选择Azure CycleCloud Workspace for Slurm。

如果批处理是合适的运营模式,请利用以下部分估算峰值需求、选择虚拟机、计算配额,并在创建生产池前定义后备方案。

容量层次结构

批处理容量在多个层进行管理,其中每个层限制其下方的容量。 您的有效容量取决于链中限制最严格的限制所允许的值。

顶部是Azure区域提供每个 VM 系列可用的物理数据中心容量。 区域容量不是你控制的固定值;它随时间和 VM 系列而异。 然后,订阅配额会决定每个区域中每个 VM 系列允许的核心数上限。 在 用户订阅池分配模式下,这些订阅配额直接应用于 Batch 池。 Batch 帐户配额规定了每个 Batch 帐户允许使用的核心数、池数和活动作业数。 在 Batch 服务池分配模式下,这些帐户级配额适用。 最后,池限制会依据池上层的配额以及 Batch 服务设置的 池大小限制,限定每个池中的节点数。

哪个层级适用于您的账户,取决于您的池分配模式。 有关详细信息,请参阅 Batch 账户和池分配模式。

规划容量要求

在创建生产池之前,请估算工作负荷所需的资源。 请完成以下问题,将工作负荷特征转换为配额请求:

  • 工作负载配置文件。 并发作业和任务的峰值数量是多少? 平均任务工期和内存要求是多少? 任务是否需要 GPU 或多节点 (MPI) 协调?
  • 虚拟机选择。 哪个 VM 系列和大小 最符合工作负荷? 每个 VM 提供多少个核心和多少内存?
  • 池大小设置。 每个节点并发运行多少个任务(节点核心数最多四倍,每个节点上限为 256 个任务槽)? 给定高峰并发任务计数后,需要多少个节点? 如何在专用节点和 Spot 节点之间分配容量?
  • 配额要求。 将最大节点计数乘以每个 VM 的核心数,以获取所需的总核心数。 将该总量与当前配额进行比较,以确定需要申请增加的额度。
  • 成本估算。 使用 VM 每小时费率和预期的运行时来估算每日和每月成本。 有关详细信息,请参阅 Azure Batch 成本管理计划。

若要查看当前配额并请求增加,请参阅 查看 Batch 配额 和 增加配额。 提前提交配额请求,并从适度的增量增加开始。 较大的配额增加可能需要手动评审,可能需要几天到几周的时间。

主动管理容量

在容量成为瓶颈之前做好容量规划:

  • 监视配额使用情况。 根据配额跟踪核心使用情况,并在使用情况接近限制时发出警报,例如,在 70-80%。 有关详细信息,请参阅 监控 Batch 解决方案。
  • 启用自动缩放。 配置 自动缩放 ,以便池随需求增长和收缩,而不是保留固定的过度预配节点计数。 一种常见的模式是维护一个专用节点的基线以确保进度,并在需要额外吞吐量时扩展到 Spot 节点。
  • 分布在区域和帐户之间。 跨多个区域或 Batch 帐户分配工作负荷,以访问更多聚合容量。 服务配额(例如活动作业和池)适用于每个独立的 Batch 帐户。

处理容量约束

即使进行规划,也可能会遇到分配失败。 将工作流设计得更具韧性:

  • 重试并尝试不同方式。 如果池无法达到其目标大小,请在几分钟后重试,尝试其他 VM 大小,或尝试其他区域。 资源可用性随时间变化。
  • 重新定位作业。 避免依赖于单个静态池。 如果某个池无法扩展,请确保能够将作业重新定位到另一个池,该池可能采用不同的虚拟机规格。 有关详细信息,请参阅Azure Batch最佳做法。
  • 为 Spot 抢占做好准备。当 Azure 需要收回容量时,Spot 节点可能会被抢占。 仅将竞价节点用于容错型工作负载,并将其与专用节点和自动缩放功能结合使用,以便池能够自动恢复。

有关分配和配额错误的详细症状、原因和解决方法,请参阅故障排除指南:

在生产前验证产能

使用具有代表性的作业、其预期数据量和生产池配置进行概念验证。 在你能为所有标准提供证据之前,不要批准设计用于生产:

Criterion 需记录的证据
工作负载完成 该作业使用生产任务依赖项、应用程序包以及输入和输出数据路径正确完成。
规模与配额 池在目标区域内达到所需的节点数,且不超过批处理账户、订阅或虚拟机家族配额。
Performance 端到端作业时间满足目标,包括池分配、数据传输、计算和结果持久性。
Recovery 在节点丢失、任务失败或如果使用Spot抢占后,作业保持在记录的最大恢复时间和允许的检查点丢失范围内,按完成截止日期完成,并成功使用计划中的备份虚拟机大小或池。
Cost 经测算,在预期运行频率下,每个已完成作业的计算、存储、网络和许可成本符合目标。
操作 警报可识别配额压力、分配失败和任务失败,所有者可以重新定位或恢复工作负载。

如果某项条件失败,则修改池大小、虚拟机选择、存储路径、重试行为或区域缓冲,重复同样的工作。 一个小型功能测试无法确定生产能力,因为它无法实现峰值规模、配额或数据流动。

最佳做法

练习 Description
提前请求配额 提前提交配额请求;大幅增长可能需要几天到几个星期。
预留冗余空间 请求的配额略高于当前峰值,以允许增长。
使用多个区域 跨区域分散工作负荷,以访问更多聚合容量。
监视使用情况 当核心使用量达到配额的 70-80% 时发出警报。
合理配置虚拟机规格 将 VM 系列和大小与工作负荷匹配,而不是过度预配。
明智使用 Spot 为容错型工作负载预留 Spot 节点,并将其与专用节点搭配使用。
清理资源 删除未使用的池以释放帐户配额。

后续步骤