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 にします。

1 ~ の範囲の Amazon EC2 インスタンス ‘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 以降では、キューのサイズを小さくするには、クラスターの更新を行う前にコンピューティングフリートを停止するか、QueueUpdateStrategy を TERMINATE に設定する必要があります。次の場合、コンピューティングフリートを停止したり、QueueUpdateStrategy を TERMINATE に設定したりする必要はありません。

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

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

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

  • コンピューティングリソースの increasing MinCount と、少なくとも同じ量の同じコンピューティングリソースの increasing 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 MinCountだけ増やすと ( MaxCountは変更されないと仮定)、クラスターは静的ノードの数を ( ): 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容量に対応するために、クラスター設定は、ギャップを埋めるために動的ノードの数を拡張することで更新されますMaxCount - new_MinCount: <Queue/Name>-dy-<ComputeResource/Name>-[1..<MazCount - new_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 = 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 < MaxCount、減少MinCountしてMaxCount同じ量の 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 ドキュメントを参照してください。

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

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

  • 停止 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」を参照してください。

サポートされているクラスターと SLURM のバージョン

次の表に、 AWS ParallelCluster と を示します。Slurm がサポートする AWS バージョン。

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