本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon ParallelCluster Amazon A EC2 uto Scaling
注意
本节仅适用于 Amazon ParallelCluster 2.11.4 及以下的版本。从版本 2.11.5 开始, Amazon ParallelCluster 不支持使用 SGE 或 Torque 调度器。您可以在 2.11.4 及之前的版本中继续使用它们,但它们没有资格获得 Amazon 服务和支持团队的未来更新或故障排除 Amazon 支持。
从 2.9.0 Amazon ParallelCluster 版本开始,不支持 Amazon A EC2 uto Scaling 与 Slurm Workload Manager () Slurm 一起使用。要了解有关 Slurm 和多队列扩展的信息,请参阅多队列模式教程。
本主题中介绍的自动扩缩策略适用于使用 Son of Grid Engine (SGE) 或 Torque Resource Manager (Torque) 部署的 HPC 集群。使用其中一个调度器部署时,通过管理计算节点的 Amazon A EC2 uto Scaling 组,然后根据需要更改计划程序配置来 Amazon ParallelCluster 实现扩展功能。对于基于的 HPC 集群 Amazon Batch, Amazon ParallelCluster 依赖托 Amazon 管作业调度器提供的弹性扩展功能。有关更多信息,请参阅 Amazon A EC2 uto Scaling 用户指南中的什么是 Amazon A EC2 uto Scaling。
使用部署的集群在多个方面具有 Amazon ParallelCluster 弹性。设置initial_queue_size指定了 ComputeFleet Amazon A EC2 uto Scaling 组的最小大小值以及所需的容量值。设置max_queue_size指定了 ComputeFleet Amazon A EC2 uto Scaling 组的最大大小值。
纵向扩展
名为 jobwatcher
借助 SGE 计划程序,每个作业需要运行许多槽(一个槽对应于一个处理单元,例如一个 vCPU)。为了评估处理当前的待处理作业所需的实例数,jobwatcher 会将所请求槽的总数除以单个计算节点的容量。计算节点的容量与可用 v 的数量相对应,CPUs 取决于集群配置中指定的 Amazon EC2 实例类型。
在Slurm(2.9.0 Amazon ParallelCluster 版之前)和Torque调度器中,每个作业可能需要为每个节点设置多个节点和多个插槽,具体视情况而定。对于每个请求,jobwatcher 将确定为满足新的计算要求而需要的计算节点数。例如,假设一个集群的计算实例类型为 c5.2xlarge (8 vCPU),并且有三个已排队的待处理作业,要求如下:
-
作业 1:2 个节点/每个节点 4 个插槽
-
作业 2:3 个节点/每个节点 2 个插槽
-
作业 3:1 个节点/每个节点 4 个插槽
在此示例中,jobwatcher需要 Amazon A EC2 uto Scaling 组中的三个新计算实例来为这三个任务提供服务。
当前限制:自动纵向扩展逻辑不考虑部分加载的繁忙节点。例如,正在运行作业的节点即使有空槽,也会被视为忙碌。
缩减
在每个计算节点上,都有一个名为 nodewatcher
-
实例不具有作业的时长已超过 scaledown_idletime(默认设置为 10 分钟)
-
集群中没有待处理作业
要终止实例,nodewatcher请调用 TerminateInstanceInAutoScalingGroupAPI 操作,如果 Amazon Auto Scaling 组的大小至少等于 Amazon A EC2 uto Scaling 组的最小大小,则该操作会删除实例。 EC2 此过程将收缩集群,而不会影响正在运行的作业。它还支持弹性集群,具有固定的实例基数。
静态集群
对于 HPC,Auto Scaling 的值与任何其他工作负载的相同。唯一的区别是, Amazon ParallelCluster 的代码使其能够更智能地交互。例如,如果需要静态集群,请将 initial_queue_size 和 max_queue_size 参数设置为所需集群的准确大小,然后将 maintain_initial_size 参数设置为 true。这会导致 ComputeFleet Amazon A EC2 uto Scaling 组的最小容量、最大容量和所需容量具有相同的值。