

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Slurm アカウンティングで欠落しているジョブレコードのトラブルシューティング
<a name="troubleshooting-missing-accounting-records"></a>

完了するまで実行されたジョブは、 `sacct`または `sreport` コマンドの出力など、Slurmアカウンティングレポートにありません。レコードは限られた期間のみ存在し、通常はジョブ送信率が非常に高い期間に続くレコードです。アカウンティングレポートは、そのウィンドウの前後に完了します。このトピックは、Slurmアカウンティングが有効になっているクラスターに適用されます。アカウンティングの詳細については、「」を参照してください[PCS での 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
   ```

   各エントリは、破棄された 1 つのアカウンティングメッセージに対応します。メッセージタイプは、、、、 など`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)の[PCS でのカスタム SlurmDBD AWS 設定の設定](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>

欠落しているレコードを後で検出する代わりにキューの飽和を検出するには、Amazon CloudWatch Logs、Amazon Simple Storage Service (Amazon S3)、または Amazon Data Firehose に`slurmctld`ログを配信し、`agent queue is full`エントリがないかモニタリングします。詳細については、「[PCS AWS のスケジューラログ](monitoring_scheduler-logs.md)」を参照してください。

ジョブ送信率の高いワークロードを実行するクラスター`1`では、 を `CommitDelay`に設定し続けます。