Slurm Workload Manager (slurm) - AWS ParallelCluster

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

Slurm Workload Manager (slurm)

クラスター容量のサイズと更新

クラスターの容量は、クラスターがスケーリングできるコンピューティングノードの数によって定義されます。コンピューティングノードは、 AWS ParallelCluster 設定 のコンピューティングリソース内で定義された Amazon EC2インスタンスによってバックアップされ(Scheduling/SlurmQueues/ComputeResources)、1:1 を にマッピング(Scheduling/SlurmQueues)するキューに整理されます。Slurm パーティション。

コンピューティングリソース内では、クラスターで常に実行する必要があるコンピューティングノード (インスタンス) の最小数 ( ) MinCount と、コンピューティングリソースが (MaxCount3 ) にスケールできるインスタンスの最大数を設定できます。

クラスターの作成時、またはクラスターの更新時に、 はクラスターで定義されている各コンピューティングリソース (Scheduling/SlurmQueues/ ComputeResources ) MinCount に対して で設定された数の Amazon EC2インスタンス AWS ParallelCluster を起動します。クラスター内のコンピューティングリソースの最小ノード数をカバーするために起動されたインスタンスは、静的ノード と呼ばれます。起動すると、静的ノードはクラスター内で永続的になり、特定のイベントまたは条件が発生しない限り、システムによって終了されません。このようなイベントには、例えば、 の失敗が含まれます。Slurm または Amazon EC2ヘルスチェックと の変更 Slurm DRAIN または へのノードステータスDOWN。

Amazon EC2インスタンスは、 1 から ‘MaxCount - MinCount’ (MaxCount を引 MinCount)いた値で、クラスターの負荷の増加に対応するためにオンデマンドで起動され、動的ノード と呼ばれます。 その性質はエフェメラルであり、保留中のジョブを処理するために起動され、クラスター設定Scheduling/SlurmSettings/ScaledownIdletimeで で定義された期間 (デフォルト: 10 分) アイドル状態になると終了します。

静的ノードと動的ノードは、次の命名スキーマに準拠しています。

  • <Queue/Name>-st-<ComputeResource/Name>-<num> である静的ノード <num> = 1..ComputeResource/MinCount

  • <Queue/Name>-dy-<ComputeResource/Name>-<num> 動的ノード <num> = 1..(ComputeResource/MaxCount - ComputeResource/MinCount)

例えば、次の AWS ParallelCluster 設定を前提としています。

Scheduling: Scheduler: Slurm SlurmQueues: - Name: queue1 ComputeResources: - Name: c5xlarge Instances: - InstanceType: c5.xlarge MinCount: 100 MaxCount: 150

次のノードは で定義されます。Slurm

$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 50 idle~ queue1-dy-c5xlarge-[1-50] queue1* up infinite 100 idle queue1-st-c5xlarge-[1-100]

コンピューティングリソースに がある場合MinCount == MaxCount、対応するすべてのコンピューティングノードは静的になり、すべてのインスタンスはクラスターの作成/更新時に起動され、稼働状態が維持されます。例:

Scheduling: Scheduler: slurm SlurmQueues: - Name: queue1 ComputeResources: - Name: c5xlarge Instances: - InstanceType: c5.xlarge MinCount: 100 MaxCount: 100
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 100 idle queue1-st-c5xlarge-[1-100]

クラスター容量の更新

クラスター容量の更新には、キューの追加または削除、コンピューティングリソース、コンピューティングリソースMinCount/MaxCountの の変更が含まれます。 AWS ParallelCluster バージョン 3.9.0 以降では、キューのサイズを小さくするには、クラスターの更新を実行する前にコンピューティングフリートを停止するか、 TERMINATE を QueueUpdateStrategyに設定する必要があります。コンピューティングフリートを停止したり、次のTERMINATE場合に QueueUpdateStrategy を設定したりする必要はありません。

  • スケジューリング/ への新しいキューの追加SlurmQueues

  • キューScheduling/SlurmQueues/ComputeResourcesへの新しいコンピューティングリソースの追加

  • コンピューティングリソースMaxCountの を増やす

  • コンピューティングリソース MinCount の増加と MaxCount 、少なくとも同じ量の同じコンピューティングリソースの増加

考慮事項と制約事項

このセクションでは、クラスター容量のサイズ変更時に考慮すべき重要な要因、制約、または制限の概要を説明します。

コンピューティングリソースの MinCountパラメータを変更する場合、 MaxCount が に等しく保たれている場合 MinCount (静的容量のみ)、 MaxCountが より大きい場合 MinCount (静的容量と動的容量が混在している場合)、2 つの異なるシナリオを区別できます。

静的ノードのみによるキャパシティの変更

  • の場合MinCount == MaxCountMinCount ( および ) MaxCount を増やすと、クラスターは静的ノードの数を の新しい値に拡張して設定MinCount<Queue/Name>-st-<ComputeResource/Name>-<new_MinCount>され、システムは新しい必要な静的容量を満たすために Amazon EC2インスタンスを起動し続けます。

  • の場合MinCount == MaxCount、金額 N を減少 MinCount (および ) MaxCount すると、クラスターは最後の N 個の静的ノードを削除して設定<Queue/Name>-st-<ComputeResource/Name>-<old_MinCount - N>...<old_MinCount>]され、システムは対応する Amazon EC2インスタンスを終了します。

    • 初期状態 MinCount = MaxCount = 100

    • $ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 100 idle queue1-st-c5xlarge-[1-100]
    • MinCount および -30の更新 MaxCount: MinCount = MaxCount = 70

    • $ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 70 idle queue1-st-c5xlarge-[1-70]

混合ノードによるキャパシティの変更

の場合MinCount < MaxCount、金額 N ( MaxCountは変更されないと仮定) MinCountだけ増加すると、クラスターは静的ノードの数を新しい値 MinCount ( old_MinCount + N ) に拡張して設定<Queue/Name>-st-<ComputeResource/Name>-<old_MinCount + N>され、システムは新しい必要な静的容量を満たすために Amazon EC2インスタンスを起動し続けます。さらに、コンピューティングリソースのMaxCount容量を尊重するために、クラスター設定は最後の N 動的ノード を削除することで更新<Queue/Name>-dy-<ComputeResource/Name>-[<MaxCount - old_MinCount - N>...<MaxCount - old_MinCount>]され、システムは対応する Amazon EC2インスタンスを終了します。

  • 初期状態: MinCount = 100; MaxCount = 150

  • $ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 50 idle~ queue1-dy-c5xlarge-[1-50] queue1* up infinite 100 idle queue1-st-c5xlarge-[1-100]
  • +30 を に更新 MinCount : MinCount = 130 (MaxCount = 150)

  • $ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 20 idle~ queue1-dy-c5xlarge-[1-20] queue1* up infinite 130 idle queue1-st-c5xlarge-[1-130]

の場合MinCount < MaxCountMinCountMaxCount を同じ量 N に増やすと、クラスターは静的ノードの数を新しい値 MinCount ( old_MinCount + N ): に拡張して設定<Queue/Name>-st-<ComputeResource/Name>-<old_MinCount + N>され、システムは新しい必要な静的容量を満たすために Amazon EC2インスタンスを起動しようとし続けます。さらに、新しい を尊重する動的ノードの数に変更はありません。

MaxCount 値。

  • 初期状態: MinCount = 100; MaxCount = 150

  • $ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 50 idle~ queue1-dy-c5xlarge-[1-50] queue1* up infinite 100 idle queue1-st-c5xlarge-[1-100]
  • +30 を に更新 MinCount : MinCount = 130 (MaxCount = 180)

  • $ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 20 idle~ queue1-dy-c5xlarge-[1-50] queue1* up infinite 130 idle queue1-st-c5xlarge-[1-130]

の場合MinCount < MaxCount、量 N MinCountを減らすと ( MaxCountは変更されないと仮定)、クラスターは最後の N 静的ノードの静的ノードを削除して設定<Queue/Name>-st-<ComputeResource/Name>-[<old_MinCount - N>...<old_MinCount>され、システムは対応する Amazon EC2インスタンスを終了します。さらに、コンピューティングリソースのMaxCount容量を尊重するために、クラスター設定は、ギャップを埋めるために動的ノードの数を拡張することで更新されます。この場合、動的ノードであるため、スケジューラに新しいノードで保留中のジョブがない限り、新しい Amazon MaxCount - new_MinCount: <Queue/Name>-dy-<ComputeResource/Name>-[1..<MazCount - new_MinCount>] EC2インスタンスは起動されません。

  • 初期状態: MinCount = 100; MaxCount = 150

  • $ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 50 idle~ queue1-dy-c5xlarge-[1-50] queue1* up infinite 100 idle queue1-st-c5xlarge-[1-100]
  • で -30 を更新する MinCount : MinCount = 70 (MaxCount = 120)

  • $ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 80 idle~ queue1-dy-c5xlarge-[1-80] queue1* up infinite 70 idle queue1-st-c5xlarge-[1-70]

の場合MinCount < MaxCountMinCountMaxCount が同じ量の N を減らすと、クラスターは最後の N 個の静的ノードを削除して設定<Queue/Name>-st-<ComputeResource/Name>-<old_MinCount - N>...<oldMinCount>]され、システムは対応する Amazon EC2インスタンスを終了します。

さらに、新しいMaxCount値を尊重する動的ノードの数に変更はありません。

  • 初期状態: MinCount = 100; MaxCount = 150

  • $ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 50 idle~ queue1-dy-c5xlarge-[1-50] queue1* up infinite 100 idle queue1-st-c5xlarge-[1-100]
  • で -30 を更新する MinCount : MinCount = 70 (MaxCount = 120)

  • $ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 80 idle~ queue1-dy-c5xlarge-[1-50] queue1* up infinite 70 idle queue1-st-c5xlarge-[1-70]

の場合MinCount < MaxCount、量 N MaxCountを減らすと ( MinCountは変更されないと仮定)、クラスターは最後の N 動的ノードを削除して設定<Queue/Name>-dy-<ComputeResource/Name>-<old_MaxCount - N...<oldMaxCount>]され、 が静的ノード running.No に与える影響が予想される場合に、システムは対応する Amazon EC2インスタンスを終了します。

  • 初期状態: MinCount = 100; MaxCount = 150

  • $ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 50 idle~ queue1-dy-c5xlarge-[1-50] queue1* up infinite 100 idle queue1-st-c5xlarge-[1-100]
  • で -30 を更新する MaxCount : MinCount = 100 (MaxCount = 120)

  • $ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 20 idle~ queue1-dy-c5xlarge-[1-20] queue1* up infinite 100 idle queue1-st-c5xlarge-[1-100]

ジョブへの影響

ノードが削除され、Amazon EC2インスタンスが終了したすべての場合、ジョブ要件を満たす他のノードがない限り、削除されたノードで実行されているスバッチジョブは再キューに入れられます。この場合、ジョブはステータス NODE_FAIL で失敗し、キューから消えます。この場合、手動で再送信する必要があります。

クラスターのサイズ変更更新を実行する予定がある場合は、計画された更新中に削除されるノードでジョブが実行されないようにできます。これは、メンテナンスで削除するノードを設定することで可能です。メンテナンスでノードを設定しても、最終的にノードで既に実行されているジョブには影響しないことに注意してください。

計画されたクラスターサイズ変更の更新でノード を削除するとしますqeueu-st-computeresource-[9-10。〕 を作成できます。Slurm 次のコマンドによる予約

sudo -i scontrol create reservation ReservationName=maint_for_update user=root starttime=now duration=infinite flags=maint,ignore_jobs nodes=qeueu-st-computeresource-[9-10]

これにより、Slurm ノード maint_for_update で という名前の予約qeueu-st-computeresource-[9-10]。予約が作成されてから、ノード でジョブを実行できなくなりますqeueu-st-computeresource-[9-10]。予約により、ジョブが最終的にノード に割り当てられるのを防ぐことはできないことに注意してくださいqeueu-st-computeresource-[9-10]

クラスターのサイズ変更の更新後、Slurm 予約はサイズ変更の更新中に削除されたノードでのみ設定され、メンテナンス予約は自動的に削除されます。代わりに を作成した場合 Slurm クラスターのサイズ変更の更新後にまだ存在するノードの予約。次のコマンドを使用して、サイズ変更の更新の実行後にノードのメンテナンス予約を削除できます。

sudo -i scontrol delete ReservationName=maint_for_update

の詳細については、「」を参照してください。Slurm 「」の「SchedMD ドキュメント」を参照してくださいhttps://slurm.schedmd.com/reservations.html

容量変更時のクラスター更新プロセス

スケジューラ設定が変更されると、クラスター更新プロセス中に次の手順が実行されます。

  • 停止 AWS ParallelCluster clustermgtd (supervisorctl stop clustermgtd)

  • 更新済みの生成 Slurm 設定からの AWS ParallelCluster パーティション設定

  • 再起動 slurmctld (Chef サービスレシピを使用して実行)

  • slurmctld ステータスを確認する (systemctl is-active --quiet slurmctld.service)

  • [Reload] (再ロード) Slurm 設定 (scontrol reconfigure)

  • clustermgtd (supervisorctl start clustermgtd) を起動する

参考情報 Slurm、「」を参照してくださいhttps://slurm.schedmd.com。ダウンロードについては、https://github.com/SchedMD/「slurm/tags」を参照してください。ソースコードについては、https://github.com/SchedMD/「 slurm 」を参照してください。

AWS ParallelCluster バージョン (複数可) サポート Slurm version

3.11.0

23.11.10

3.9.2、3.9.3、3.10.0

23.11.7

3.9.0、3.9.1

23.11.4

3.8.0

23.02.7

3.7.2

23.02.6

3.7.1

23.02.5

3.7.0

23.02.4

3.6.0、3.6.1

23.02.2

3.5.0、3.5.1

22.05.8

3.4.0、3.4.1

22.05.7

3.3.0、3.3.1

22.05.5

3.1.4、3.1.5、3.2.0、3.2.1

21.08.8-2

3.1.2、3.1.3

21.08.6

3.1.1

21.08.5

3.0.0

20.11.8