本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
最佳实践
以下部分提供了最佳使用实践 AWS ParallelCluster,其中包括网络性能和预算警报。如果您在遵循这些最佳实践后仍遇到问题,请参见AWS ParallelCluster 故障排除以获取可能的解决方案。
最佳实践:头节点实例类型选择
尽管头节点不运行作业,但其功能和大小对集群的整体性能至关重要。在选择用于头节点的实例类型时,请考虑以下特征:
集群规模:头节点协调集群的扩展逻辑,并负责将新节点连接到调度器。要向上和向下扩展具有大量节点的集群,请为头节点提供一些额外的计算容量。
共享文件系统:当您使用共享文件系统时,请选择具有足够网络带宽和足够的 Amazon EBS 带宽的实例类型来处理您的工作流程。确保头节点既能够为集群公开足够的 NFS 服务器目录,又能够处理需要在计算节点和头节点之间共享的构件。
最佳实践:网络性能
网络性能对于高性能计算 (HPC) 应用程序至关重要。如果没有可靠的网络性能,这些应用程序就无法正常运行。为了优化网络性能,请考虑以下最佳实践。
-
置放群组:如果您使用的是 Slurm,请考虑将每个 Slurm 队列配置为使用集群置放群组。集群置放群组 是单个可用区中的实例的逻辑分组。有关更多信息,请参阅《Amazon EC2 用户指南》中的置放群组。您可以在队列的 Networking 部分指定 PlacementGroup,每个计算资源都将分配给队列的置放群组。在计算资源的 Networking 部分指定 PlacementGroup 时,该特定计算资源将分配给该置放群组。计算资源置放群组规范优先于计算资源的队列规范。有关更多信息,请参阅 SlurmQueues/Networking/PlacementGroup 和 SlurmQueues/ComputeResources/Networking/PlacementGroup。
Networking: PlacementGroup: Enabled: true Id:your-placement-group-name或者,也可以为您 AWS ParallelCluster 创建一个置放群组。
Networking: PlacementGroup: Enabled: true从 3.3.0 AWS ParallelCluster 版开始,对置放群组的创建和管理进行了修改。在指定要启用的置放群组时,如果没有指定
name或Id,则在队列中,会为每个计算资源分配自己的托管置放群组,而不是为整个队列分配一个托管群组。这有助于减少容量不足错误。如果您需要为整个队列设置一个置放群组,则可以使用命名置放群组。添加了 SlurmQueues/Networking/PlacementGroup/Name 作为 SlurmQueues/Networking/PlacementGroup/Id 的首选替代方案。
有关更多信息,请参阅 Networking。
-
增强联网:考虑选择支持增强联网的实例类型。此建议适用于所有当前一代实例。有关更多信息,请参阅《Amazon EC2 用户指南》中的 Linux 上的增强联网。
-
Elastic Fabric Adapter:要支持高水平可扩展实例间通信,请考虑为网络选择 EFA 网络接口。EFA 量身定制的操作系统 (OS) 旁路硬件可利用 AWS 云的按需弹性和灵活性增强实例间通信。您可以配置每个 Slurm 队列 ComputeResource 以使用 Efa。有关将 EFA 与一起使用的更多信息 AWS ParallelCluster,请参阅Elastic Fabric Adapter。
ComputeResources: - Name:your-compute-resource-nameEfa: Enabled: true有关 EFA 的更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例)中的 Elastic Fabric Adapter。
-
实例带宽:带宽随实例大小而扩展。有关不同实例类型的信息,请参阅《Amazon EC2 用户指南》中的 Amazon EBS 优化实例和 Amazon EBS 卷类型。
最佳实践:预算提醒
要管理中的资源成本 AWS ParallelCluster,我们建议您使用 AWS Budgets 操作来创建预算。您还可以为所选 AWS 资源创建已定义的预算阈值警报。有关更多信息,请参阅 AWS Budgets 用户指南 中的配置预算操作。同样,您也可以使用亚马逊 CloudWatch 创建账单警报。有关更多信息,请参阅创建账单警报以监控 AWS 预估费用。
最佳实践:将集群移至新集群 AWS ParallelCluster 次要版本或补丁版本
当前,每个 AWS ParallelCluster 次要版本及其 pcluster CLI都是独立的。要将集群迁移至新的次要版本或修补版本,必须使用新版本的 CLI 重新创建集群。
为了优化将集群迁移到新的次要版本或修补版本的过程,我们建议执行下列操作:
-
将个人数据保存在集群外部创建的外部卷中,例如 Amazon EFS 和 FSx for Lustre。这样,您以后便可以轻松地将数据从一个集群迁移到另一个集群。
-
使用以下类型创建共享存储系统。您可以使用 AWS CLI 或创建这些系统 AWS 管理控制台。
在集群配置中将某个文件系统或卷定义为现有文件系统或卷。这样,当您删除集群时,这些文件系统或卷会被保留下来,并且可以附加到新集群。
我们建议使用 Amazon EFS 或 FSx for Lustre 文件系统。这两个系统可以同时附加到多个集群。此外,您可以在删除现有集群之前将其中任何一个系统附加到新集群。
-
使用自定义引导操作来自定义您的实例,而不是使用自定义 AMI。如果您改为使用自定义 AMI,则需要对每次新版本发布删除并重新创建该 AMI。
-
我们建议您按以下顺序应用上述建议:
-
更新现有集群配置以使用现有文件系统定义。
-
验证
pcluster版本并在需要时进行更新。 -
创建并测试新集群。在测试新集群时,请检查以下内容:
-
确保您的数据在新集群中可用。
-
确保您的应用程序可以在新集群中正常运行。
-
-
在新集群经过全面测试并可正常运行,并且您不再需要现有集群后,将现有集群删除。
-
最佳实践:GPU 运行状况检查
内置 GPU 运行状况检查
除非您启用内置 GPU 运行状况检查 (HealthChecks/Gpu/Enabled),否则它处于关闭状态。启用后,它将在节点的 GPU 上运行 NVIDIA DCGM 二级诊断,这是序言的一部分。Slurm由于诊断在序言中运行,并且在序言完成之前无法启动作业,因此该设计适合诊断快速完成的实例类型。
只有任务专属分配(每个节点一个作业),内置检查才是可靠的。在由多个作业共享的节点上,它可能会干扰正在运行的作业并耗尽运行状况良好的节点,因此只能在具有JobExclusiveAllocation: true的队列上启用它。
此外,在 P6 和 P6e GPU 实例系列(例如p6-b200和p6-b300)以及更高版本的 P-family GPU 实例上,诊断需要足够长的时间,因此不应在序言中运行:它通常会超过序Slurm言的时间限制,并导致运行良好的节点耗尽和重新排队作业。在这些实例类型上,禁用 GPU 运行状况检查(HealthChecks/Gpu/Enabled: false)。
自己运行 GPU 运行状况检查的选项
要对这些实例运行 GPU 运行状况检查,请选择以下方法,将每项检查与其运行时间(节点启动时、任务之前或任务之后)进行匹配。这遵循了 NVIDIA 的 GPU 运行状况和诊断模型(参见 NVIDIA DCGM 运行状况和诊断dcgmi diag诊断的深度和持续时间会逐级增长(参见 DCGM 诊断
重要
在由多个作业共享的节点上,只有在没有其他作业使用该节点时才运行任何dcgmi diag诊断(从 1 级到 4 级)。否则,它可能会出现故障并耗尽节点。
-
在节点启动时检查。使用它可以在节点加入集群时对其进行一次验证,然后再接受工作。由于尚无作业在运行,因此它可以深度运行
dcgmi diag;请注意,它只能捕获启动时出现的故障,不会捕获以后出现的降级。使用OnNodeConfigured自定义操作安装和调用您的支票。请参阅自定义引导操作。 -
查看序言。在每项工作之前,使用它来快速准备就绪。由于序言在每个任务上运行,并且会阻止任务启动直到完成,因此请将检查保持在几秒钟内。例如,
nvidia-smi(可选使用内核日志扫描 NVIDIA Xid 错误)或 1 级。 dcgmi diag请参阅Slurm 和 prologepilog。 -
查看结语。使用它在任务完成后验证节点。例如,在任务失败时进行更深入的检查,或者在调度下一个任务之前发现运行期间出现降级的 GPU。它可以运行得更深
dcgmi diag。为避免在每项作业之后进行检查,您可能希望仅在作业失败时才运行二级诊断。请参阅Slurm 和 prologepilog。
注意
AWS ParallelCluster 替换已排空或出现故障的静态节点(并终止动态节点),因此排空已确认故障的节点会导致其被替换。