

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

# 对中丢失的作业记录进行故障排除 Slurm 会计
<a name="troubleshooting-missing-accounting-records"></a>

Slurm会计报表中缺少运行至完成的作业，例如`sacct`或`sreport`命令的输出。记录仅在有限的时间段内缺失，通常是在工作提交率很高的时段之后才会出现记录。会计报告是在该窗口之前和之后完成的。本主题适用于启用Slurm记账的集群。有关会计的更多信息，请参阅[废话会计 AWS 个](slurm-accounting.md)。

## 常见原因
<a name="troubleshooting-missing-accounting-records-cause"></a>

Slurm控制器守护程序 (`slurmctld`) 不会直接将会计数据写入会计数据库。它通过内部的内存队列将数据发送到Slurm数据库守护程序 (`slurmdbd`)。如果提交作业的速度快于向数据库`slurmdbd`提交记录的速度，则队列可以达到其最大大小。当队列已满时，`slurmctld`丢弃新的记账消息，而不是将其添加到队列中。

丢弃的消息不会重试，因此它们携带的作业历史记录在会计数据库中永久不存在。只有会计数据会受到影响。任务调度和任务执行继续正常进行。`slurmdbd`已经提交的记录仍保留在数据库中。当队列耗尽时，会自动恢复记账。

## 解决方案
<a name="troubleshooting-missing-accounting-records-resolution"></a>

**确认原因并减少复发的机会**

1. 在集群`slurmctld`日志中搜索与以下内容类似的条目。

   ```
   error: agent queue is full (33794), discarding DBD_JOB_START:1425 request
   ```

   每个条目对应一条丢弃的记账消息。消息类型标识丢失的记录，例如`DBD_JOB_START`、`DBD_JOB_COMPLETE``DBD_STEP_START`、或`DBD_STEP_COMPLETE`。如果集群不传送调度程序日志，请设置日志传输。如果情况再次发生，这可以让你确认原因。有关更多信息，请参阅 [计划程序在 PCS 中 AWS 登录](monitoring_scheduler-logs.md)。

1. 在集群的 slurmdbd 配置`1`中将`CommitDelay`参数设置为。使用此设置，对数据库提交进行分`slurmdbd`组，而不是单独提交每条记录，这会提高队列耗尽队列的速度。使用群集的`SlurmdbdCustomSettings`属性来应用设置。有关更多信息，请参阅Slurm文档[CommitDelay](https://slurm.schedmd.com/slurmdbd.conf.html#OPT_CommitDelay)中的[在中配置自定义 SlurmdBD 设置 AWS PCS](slurmdbd-custom-settings.md)和。
**重要**  
`SlurmdbdCustomSettings`替换集群的 slurmdbd 设置，而不是添加到集群中。您在更新请求中省略的任何设置都将被删除。如果集群可能已经有 slurmdbd 设置，请`aws pcs get-cluster`先运行，添加到检索`{parameterName=CommitDelay,parameterValue="1"}`到的列表中，然后提交完整列表。  
**Example — 在集群`CommitDelay`上设置**  

   ```
   aws pcs update-cluster --cluster-identifier {{my-cluster}} \
   --slurm-configuration \
   'SlurmdbdCustomSettings=[{parameterName=CommitDelay,parameterValue="1"}]'
   ```

1. 确认设置已到位。在中 AWS 管理控制台，查看集群**的其他调度程序设置**。在中 AWS CLI，运行以下命令并检查响应`slurmConfiguration`字段。

   ```
   aws pcs get-cluster --cluster-identifier {{my-cluster}}
   ```

**注意**  
`slurmctld`丢弃的会计记录无法恢复。在受影响的时段内运行的职位仍未出现在会计报告中。

## 预防措施
<a name="troubleshooting-missing-accounting-records-prevention"></a>

要在队列饱和度发生时检测队列饱和度，而不是稍后查找丢失的记录，请将`slurmctld`日志传输到亚马逊 CloudWatch 日志、亚马逊简单存储服务 (Amazon S3) 或 Amazon Data Firehose，并监控其`agent queue is full`中的条目。有关更多信息，请参阅 [计划程序在 PCS 中 AWS 登录](monitoring_scheduler-logs.md)。

在运行任务提交率较高的工作负载的集群`1`上，保持`CommitDelay`设置为。