本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
对中丢失的作业记录进行故障排除 Slurm 会计
Slurm会计报表中缺少运行至完成的作业,例如sacct或sreport命令的输出。记录仅在有限的时间段内缺失,通常是在工作提交率很高的时段之后才会出现记录。会计报告是在该窗口之前和之后完成的。本主题适用于启用Slurm记账的集群。有关会计的更多信息,请参阅废话会计 AWS 个。
常见原因
Slurm控制器守护程序 (slurmctld) 不会直接将会计数据写入会计数据库。它通过内部的内存队列将数据发送到Slurm数据库守护程序 (slurmdbd)。如果提交作业的速度快于向数据库slurmdbd提交记录的速度,则队列可以达到其最大大小。当队列已满时,slurmctld丢弃新的记账消息,而不是将其添加到队列中。
丢弃的消息不会重试,因此它们携带的作业历史记录在会计数据库中永久不存在。只有会计数据会受到影响。任务调度和任务执行继续正常进行。slurmdbd已经提交的记录仍保留在数据库中。当队列耗尽时,会自动恢复记账。
解决方案
确认原因并减少复发的机会
-
在集群
slurmctld日志中搜索与以下内容类似的条目。error: agent queue is full (33794), discarding DBD_JOB_START:1425 request
每个条目对应一条丢弃的记账消息。消息类型标识丢失的记录,例如
DBD_JOB_START、DBD_JOB_COMPLETEDBD_STEP_START、或DBD_STEP_COMPLETE。如果集群不传送调度程序日志,请设置日志传输。如果情况再次发生,这可以让你确认原因。有关更多信息,请参阅 计划程序在 PCS 中 AWS 登录。 -
在集群的 slurmdbd 配置
1中将CommitDelay参数设置为。使用此设置,对数据库提交进行分slurmdbd组,而不是单独提交每条记录,这会提高队列耗尽队列的速度。使用群集的SlurmdbdCustomSettings属性来应用设置。有关更多信息,请参阅Slurm文档CommitDelay中的在中配置自定义 SlurmdBD 设置 AWS PCS和。 重要
SlurmdbdCustomSettings替换集群的 slurmdbd 设置,而不是添加到集群中。您在更新请求中省略的任何设置都将被删除。如果集群可能已经有 slurmdbd 设置,请aws pcs get-cluster先运行,添加到检索{parameterName=CommitDelay,parameterValue="1"}到的列表中,然后提交完整列表。例— 在集群
CommitDelay上设置aws pcs update-cluster --cluster-identifiermy-cluster\ --slurm-configuration \ 'SlurmdbdCustomSettings=[{parameterName=CommitDelay,parameterValue="1"}]' -
确认设置已到位。在中 AWS 管理控制台,查看集群的其他调度程序设置。在中 AWS CLI,运行以下命令并检查响应
slurmConfiguration字段。aws pcs get-cluster --cluster-identifiermy-cluster
注意
slurmctld丢弃的会计记录无法恢复。在受影响的时段内运行的职位仍未出现在会计报告中。
预防措施
要在队列饱和度发生时检测队列饱和度,而不是稍后查找丢失的记录,请将slurmctld日志传输到亚马逊 CloudWatch 日志、亚马逊简单存储服务 (Amazon S3) 或 Amazon Data Firehose,并监控其agent queue is full中的条目。有关更多信息,请参阅 计划程序在 PCS 中 AWS 登录。
在运行任务提交率较高的工作负载的集群1上,保持CommitDelay设置为。