翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
クラスター容量のサイズと更新
クラスターの容量は、クラスターがスケールできるコンピューティングノードの数によって定義されます。コンピューティングノードは、 AWS ParallelCluster 設定 のコンピューティングリソース内で定義された Amazon EC2 インスタンスによってバックアップされ(Scheduling/SlurmQueues/ ComputeResources)
、1:1 をSlurmパーティションにマッピング(Scheduling/SlurmQueues)
するキューに整理されます。
コンピューティングリソース内では、クラスターで常に実行する必要があるコンピューティングノード (インスタンス) の最小数 () MinCount
と、コンピューティングリソースがスケールできるインスタンスの最大数 (MaxCount3 ) を設定できます。
クラスターの作成時またはクラスターの更新時に、 はクラスターで定義された各コンピューティングリソース (Scheduling/SlurmQueues/ ComputeResources
) MinCount
に対して、 で設定された数だけ Amazon EC2 インスタンス AWS ParallelCluster を起動します。クラスター内のコンピューティングリソースの最小ノード数をカバーするために起動されたインスタンスは、静的ノードと呼ばれます。静的ノードは、起動されるとクラスター内で永続的となり、特定のイベントや条件が発生しない限り、システムによって終了されることはありません。このようなイベントには、Slurm や Amazon EC2 ヘルスチェックの失敗、Slurm ノードステータスの DRAIN や DOWN への変更などがあります。
クラスターの負荷の増加に対応するために、1
から ‘MaxCount -
MinCount’
(MaxCount
マイナス MinCount)
までの範囲で、オンデマンドで起動される Amazon EC2 インスタンスは、動的ノードと呼ばれます。動的ノードはエフェメラルであり、保留中のジョブを処理するために起動され、クラスター設定の 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
を増やす -
コンピューティングリソースの MinCount を増やし、同じコンピューティングリソースの MaxCount を同等以上に増やす
考慮事項と制限事項
このセクションでは、クラスター容量のサイズを変更する際に考慮すべき重要な要因、制約、または制限について概説します。
-
Scheduling/SlurmQueues
からキューを削除すると、名前が<Queue/Name>-*
であるすべてのコンピューティングノード (静的と動的の両方) が Slurm 設定から削除され、対応する Amazon EC2 インスタンスが終了します。 -
キューからコンピューティングリソース
Scheduling/SlurmQueues/ComputeResources
を削除すると、名前が<Queue/Name>-*-<ComputeResource/Name>-*
であるすべてのコンピューティングノード (静的と動的の両方) が Slurm 設定から削除され、対応する Amazon EC2 インスタンスが終了します。
コンピューティングリソースの MinCount
パラメータを変更するときは、MaxCount
が MinCount
と等しい場合 (静的容量のみ) と MaxCount
が MinCount
より大きい場合 (静的容量と動的容量の混合) の 2 つの異なるシナリオを区別できます。
静的ノードのみの容量変更
-
MinCount == MaxCount
の場合、MinCount
(およびMaxCount
) を増やすには、静的ノードの数をMinCount
の新しい値まで拡張するようにクラスターを設定します (<Queue/Name>-st-<ComputeResource/Name>-<new_MinCount>
)。システムは新しい静的容量を満たすまで必要な数の Amazon EC2 インスタンスを起動し続けます。 -
MinCount == MaxCount
の場合、MinCount
(およびMaxCount
) を量 N だけ減らすには、最後の 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]
-
更新 (
-30
) を適用したMinCount
およびMaxCount: MinCount = MaxCount = 70
-
$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 70 idle queue1-st-c5xlarge-[1-70]
-
混合ノードの容量変更
MinCount < MaxCount
の場合、MinCount
を量 N だけ増やすには (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 < MaxCount
の場合、MinCount
と MaxCount
を同じ量 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
の場合、MinCount
を量 N だけ減らすには (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
の場合、MaxCount
を量 N だけ減らすには (MinCount
は変更しないと仮定)、最後の N 個の動的ノードを削除するようにクラスターを設定します (<Queue/Name>-dy-<ComputeResource/Name>-<old_MaxCount -
N...<oldMaxCount>]
)。システムは対応する数の 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 インスタンスを終了すると、削除したノードで実行していた sbatch ジョブは常に再びキューに入れられます。ただし、ジョブ要件を満たす他のノードがない場合を除きます。この最後の場合、ジョブは 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 予約の詳細については、こちら
容量変更時のクラスター更新プロセス
スケジューラ設定を変更すると、クラスターの更新プロセス中に次の手順が実行されます。
-
停止 AWS ParallelCluster
clustermgtd (supervisorctl stop clustermgtd)
-
更新された Slurm パーティション設定を AWS ParallelCluster 設定から生成する
-
slurmctld
を再起動する (Chef サービスレシピを使用して実行) -
slurmctld
のステータスを確認する(systemctl is-active --quiet slurmctld.service)
-
Slurm 設定を再ロードする
(scontrol reconfigure)
-
起動する:
clustermgtd (supervisorctl start clustermgtd)