翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Slurm アカウンティングで欠落しているジョブレコードのトラブルシューティング
完了するまで実行されたジョブは、 sacctまたは sreport コマンドの出力など、Slurmアカウンティングレポートにありません。レコードは限られた期間のみ存在し、通常はジョブ送信率が非常に高い期間に続くレコードです。アカウンティングレポートは、そのウィンドウの前後に完了します。このトピックは、Slurmアカウンティングが有効になっているクラスターに適用されます。アカウンティングの詳細については、「」を参照してくださいPCS での Slurm AWS アカウンティング。
一般的な原因
Slurm コントローラーデーモン (slurmctld) は、会計データを会計データベースに直接書き込みません。内部のインメモリキューを介してSlurmデータベースデーモン (slurmdbd) にデータを送信します。ジョブがデータベースにレコードをslurmdbdコミットするよりも速く送信されると、キューは最大サイズに達する可能性があります。キューがいっぱいになると、 は新しいアカウンティングメッセージをキューに追加せずにslurmctld破棄します。
破棄されたメッセージは再試行されないため、転送されたジョブ履歴はアカウンティングデータベースに完全に存在しません。アカウンティングデータのみが影響を受けます。ジョブのスケジュール設定とジョブの実行は通常どおり続行されます。slurmdbd すでにコミットされたレコードはデータベースに残ります。キューがドレインすると、アカウンティングは自動的に再開されます。
解決策
原因を確認し、再発の可能性を減らすには
-
クラスターの
slurmctldログで、次のようなエントリを検索します。error: agent queue is full (33794), discarding DBD_JOB_START:1425 request
各エントリは、破棄された 1 つのアカウンティングメッセージに対応します。メッセージタイプは、、、、 など
DBD_JOB_STARTDBD_JOB_COMPLETEDBD_STEP_START、失われたレコードを識別しますDBD_STEP_COMPLETE。クラスターがスケジューラログを配信しない場合は、ログ配信を設定します。これにより、条件が再度発生した場合に原因を確認できます。詳細については、「PCS AWS のスケジューラログ」を参照してください。 -
クラスターの slurmdbd 設定
1でCommitDelayパラメータを に設定します。この設定では、 は各レコードを個別にコミットする代わりにデータベースコミットをslurmdbdグループ化するため、キューをドレインするレートが増加します。設定を適用するには、クラスターのSlurmdbdCustomSettingsプロパティを使用します。詳細については、 SlurmドキュメントCommitDelayのPCS でのカスタム SlurmDBD AWS 設定の設定「」および「」を参照してください。 重要
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 破棄されたアカウンティングレコードは復元できません。影響を受ける期間中に実行されたジョブは、アカウンティングレポートに残りません。
防止
欠落しているレコードを後で検出する代わりにキューの飽和を検出するには、Amazon CloudWatch Logs、Amazon Simple Storage Service (Amazon S3)、または Amazon Data Firehose にslurmctldログを配信し、agent queue is fullエントリがないかモニタリングします。詳細については、「PCS AWS のスケジューラログ」を参照してください。
ジョブ送信率の高いワークロードを実行するクラスター1では、 を CommitDelayに設定し続けます。