

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 對Slurm會計中遺失的任務記錄進行故障診斷
<a name="troubleshooting-missing-accounting-records"></a>

Slurm 會計報告中缺少執行到完成的任務，例如 `sacct`或 `sreport`命令的輸出。記錄僅在有限的時段內不存在，通常是遵循非常高的任務提交率期間。會計報告會在該時段前後完成。本主題適用於已啟用Slurm會計的叢集。如需會計的詳細資訊，請參閱 [AWS PCS 中的混沌會計](slurm-accounting.md)。

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

Slurm 控制器協助程式 (`slurmctld`) 不會直接將會計資料寫入會計資料庫。它會透過內部記憶體內佇列將資料傳送至Slurm資料庫常駐程式 (`slurmdbd`)。如果任務提交速度比將記錄`slurmdbd`遞交至資料庫更快，佇列可以達到其大小上限。當佇列已滿時， 會`slurmctld`捨棄新的會計訊息，而不是將其新增至佇列。

捨棄的訊息不會重試，因此從會計資料庫永久缺少其所攜帶的任務歷史記錄。只有會計資料受到影響。任務排程和任務執行會繼續正常運作。`slurmdbd` 已遞交的記錄會保留在資料庫中。當佇列耗盡時，會計會自動恢復。

## Resolution
<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_STEP_START`、 `DBD_JOB_COMPLETE`或 `DBD_STEP_COMPLETE`。如果叢集未交付排程器日誌，請設定日誌交付。如果條件再次發生，這可讓您確認原因。如需詳細資訊，請參閱[AWS PCS 中的排程器日誌](monitoring_scheduler-logs.md)。

1. 在叢集的 slurmdbd 組態`1`中將 `CommitDelay` 參數設定為 。使用此設定，將資料庫遞交`slurmdbd`分組，而不是個別遞交每個記錄，這會提高耗盡佇列的速率。使用叢集的 `SlurmdbdCustomSettings` 屬性來套用設定。如需詳細資訊，請參閱 Slurm 文件[CommitDelay](https://slurm.schedmd.com/slurmdbd.conf.html#OPT_CommitDelay)中的 [在 AWS PCS 中設定自訂 SlurmDBD 設定](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`日誌交付至 Amazon CloudWatch Logs、Amazon Simple Storage Service (Amazon S3) 或 Amazon Data Firehose，並監控它們是否有`agent queue is full`項目。如需詳細資訊，請參閱[AWS PCS 中的排程器日誌](monitoring_scheduler-logs.md)。

在以高任務提交率執行工作負載的叢集`1`上，將 `CommitDelay`設定為 。