使用竞价型实例 - AWS ParallelCluster

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用竞价型实例

如果集群配置已设置 cluster_type = spot,则 AWS ParallelCluster 使用 Spot 实例。Spot 实例比按需实例更具成本效益,但它们可能会被中断。中断的影响因使用的特定调度程序而异。利用竞价型实例中断通知可能会有所帮助,该通知在 Amazon EC2 必须停止或终止您的竞价型实例之前会发出两分钟警告。有关更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的 Spot 实例中断。以下各部分介绍了 Spot 实例可能被中断的三种场景。

注意

使用 Spot 实例要求您的账户中存在该AWSServiceRoleForEC2Spot服务相关角色。要使用在您的账户中创建此角色AWS CLI,请运行以下命令:

aws iam create-service-linked-role --aws-service-name spot.amazonaws.com

有关更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的 Spot 实例请求的服务相关角色

场景 1:没有运行作业的 Spot 实例被中断

发生此类中断时,如果计划程序队列具有需要其他实例的待处理作业,或者活动实例的数量低于 initial_queue_size 设置,则 AWS ParallelCluster 尝试替换该实例。如果AWS ParallelCluster无法预置新实例,则会定期重复请求新实例。

场景 2:运行单节点作业的 Spot 实例被中断

此中断的行为取决于正在使用的计划程序。

Slurm

作业失败,状态代码为NODE_FAIL,作业被重新排队(除非--no-requeue在提交作业时指定)。如果该节点是静态节点,则将其替换。如果该节点是动态节点,则该节点将被终止并重置。有关包括--no-requeue参数sbatch在内的更多信息,请参见 sbatchSlurm 文档中的

注意

此行为在 2.9.0AWS ParallelCluster 版本中发生了变化。较早的版本使用状态代码终止了作业,NODE_FAIL并且该节点已从调度器队列中删除。

SGE
注意

这仅适用于AWS ParallelCluster 2.11.4 及之前的版本。从 2.11.5 版本开始,AWS ParallelCluster不支持使用SGE或Torque调度程序。

作业已经终止。如果作业已启用重新运行标志(使用 qsub -r yesqalter -r yes)或队列将 rerun 配置设置为 TRUE,则重新安排作业。计算实例将从计划程序队列中删除。此行为来自这些 SGE 配置参数:

  • reschedule_unknown 00:00:30

  • ENABLE_FORCED_QDEL_IF_UNKNOWN

  • ENABLE_RESCHEDULE_KILL=1

Torque
注意

这仅适用于AWS ParallelCluster 2.11.4 及之前的版本。从 2.11.5 版本开始,AWS ParallelCluster不支持使用SGE或Torque调度程序。

作业将从系统中删除,节点将从计划程序中删除。该作业未重新运行。如果在实例中断时有多个任务正在该实例上运行,则 Torque 可能会在节点移除期间超时。sqswatcher日志文件中可能会显示错误。这不会影响扩展逻辑,后续重试会进行适当的清理。

场景 3:运行多节点作业的 Spot 实例被中断

此中断的行为取决于正在使用的计划程序。

Slurm

作业失败,状态代码为NODE_FAIL,作业--no-requeue被重新排队(除非在提交作业时指定)。如果该节点是静态节点,则将其替换。如果该节点是动态节点,则该节点将被终止并重置。正在运行已终止任务的其他节点可能会被分配给其他待处理作业,或者在配置scaledown_idletime的时间过后缩小规模。

注意

此行为在 2.9.0AWS ParallelCluster 版本中发生了变化。较早的版本使用状态代码终止了作业,NODE_FAIL并且该节点已从调度器队列中删除。在配置scaledown_idletime的时间过后,正在运行已终止任务的其他节点可能会缩小规模。

SGE
注意

这仅适用于AWS ParallelCluster 2.11.4 及之前的版本。从 2.11.5 版本开始,AWS ParallelCluster不支持使用SGE或Torque调度程序。

该任务不会终止,将继续在其余节点上运行。计算节点将从计划程序队列中移除,但将作为孤立和不可用的节点显示在主机列表中。

发生这种情况时,用户必须删除作业 (qdel <jobid>)。该节点仍显示在主机列表 (qhost) 中,尽管这并不影响AWS ParallelCluster。要从列表中删除主机,请在替换实例后运行以下命令。

sudo -- bash -c 'source /etc/profile.d/sge.sh; qconf -dattr hostgroup hostlist <hostname> @allhosts; qconf -de <hostname>'
Torque
注意

这仅适用于AWS ParallelCluster 2.11.4 及之前的版本。从 2.11.5 版本开始,AWS ParallelCluster不支持使用SGE或Torque调度程序。

作业将从系统中删除,节点将从计划程序中删除。该作业未重新运行。如果在实例中断时有多个任务正在该实例上运行,则 Torque 可能会在节点移除期间超时。sqswatcher日志文件中可能会显示错误。这不会影响扩展逻辑,后续重试会进行适当的清理。

有关竞价型实例的更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的 Spot 实例