翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Slurm クラスタ高速容量不足フェイルオーバー
AWS ParallelCluster バージョン 3.2.0 以降、クラスターは、デフォルトで高速容量不足フェイルオーバーモードが有効になっている状態で実行されます。これにより、Amazon EC2 の容量不足エラーが検出されたときのジョブのキューへの再試行にかかる時間が最小限に抑えられます。これは、クラスターに複数の種類のインスタンスタイプを設定する場合に特に効果的です。
Amazon EC2 が容量不足の障害を検出しました。
-
InsufficientInstanceCapacity
-
InsufficientHostCapacity
-
InsufficientReservedInstanceCapacity
-
MaxSpotInstanceCountExceeded
-
SpotMaxPriceTooLow
: 設定したスポットリクエスト料金が、スポットリクエストに最低限必要な料金を下回る場合、有効化します。 -
Unsupported
: 特定の でサポートされていないインスタンスタイプを使用してアクティブ化されます AWS リージョン。
高速容量不足フェイルオーバーモードでは、ジョブが / SlurmQueues に割り当てられたときに容量不足エラーが検出されるとcompute resource、 は次の AWS ParallelCluster 操作を行います。
-
コンピューティングリソースを、あらかじめ定義された期間、無効 (
DOWN
) 状態に設定します。 -
POWER_DOWN_FORCE
を使用し、コンピューティングリソースで障害が発生したノードジョブをキャンセルし、障害が発生したノードを一時停止します。障害が発生したノードをIDLE
およびPOWER_DOWN (!)
の状態に設定し、次いでPOWERING_DOWN (%)
に設定します。 -
ジョブを別のコンピューティングリソースに再キューします。
無効化されたコンピューティングリソースの静的なノードや電源が入っているノードには影響しません。ジョブはこれらのノードで完了できます。
このサイクルは、ジョブが 1 つまたは複数のコンピューティングリソースノードに正常に割り当てられるまで繰り返されます。ノードの状態についての詳細は、「Slurm マルチキューモードの ガイド」を参照してください。
ジョブを実行するコンピューティングリソースが見つからない場合、ジョブはあらかじめ定義された期間が経過するまで PENDING
の状態に設定されます。この場合、次のセクションで説明するように、定義済みの期間を変更できます。
容量不足のタイムアウトパラメータ
insufficient_capacity_timeout
insufficient_capacity_timeout
では、容量不足エラーが検出されたときに、コンピューティングリソースが無効 (down
) 状態に保たれる時間 (秒) が指定されます。
デフォルトでは、insufficient_capacity_timeout
は有効です。
デフォルトは 600 秒 (10 分) です。
insufficient_capacity_timeout
の値が 0 以下の場合、高速容量不足フェイルオーバーモードは無効になります。
insufficient_capacity_timeout
の値は、HeadNode
の /etc/parallelcluster/slurm_plugin/parallelcluster_clustermgtd.conf
にある clustermgtd
設定ファイルにパラメータを追加することで変更できます。
このパラメータは、コンピューティングフリートを停止せずにいつでも更新できます。
例:
-
insufficient_capacity_timeout=600
:容量不足エラーが検出されると、コンピューティングリソースは無効 (
DOWN
) に設定されます。10 分後、障害が発生したノードはidle~
(POWER_SAVING
) 状態に設定されます。 -
insufficient_capacity_timeout=60
:容量不足エラーが検出されると、コンピューティングリソースは無効になります (
DOWN
)。1 分後、障害が発生したノードはidle~
の状態に設定されます。 -
insufficient_capacity_timeout=0
:高速容量不足フェイルオーバーモードは無効になります。コンピューティングリソースは無効になりません。
注記
容量不足エラーでノードに障害が発生してから、クラスター管理デーモンがノード障害を検出するまでの間には、最大 1 分の遅延が発生する可能性があります。これは、クラスター管理デーモンがノードに容量不足の障害がないかチェックし、コンピューティングリソースを 1 分間隔で down
の状態に設定するためです。
高速容量不足フェイルオーバーモードのステータス
クラスターが高速容量不足フェイルオーバーモードの場合、その状態とノードの状態を確認できます。
ノードの状態
コンピューティングリソースのダイナミックノードにジョブが投入され、容量不足エラーが検出されると、ノードは down#
の状態になり、理由が提供されます。
(Code:InsufficientInstanceCapacity)Failure when resuming nodes.
その後、電源がオフになっているノード (idle~
の状態にあるノード) down~
に設定され、理由が提供されます。
(Code:InsufficientInstanceCapacity)Temporarily disabling node due to insufficient capacity.
ジョブはキュー内の他のコンピューティングリソースに再キューされます。
コンピューティングリソースの静的ノードと、UP
であるノードは、高速容量不足フェイルオーバーモードの影響を受けません。
ここで、次の例で示されるノードの状態を考えてみます。
$
sinfo
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 30 idle~ queue1-dy-c-1-[1-15],queue1-dy-c-2-[1-15] queue2 up infinite 30 idle~ queue2-dy-c-1-[1-15],queue2-dy-c-2-[1-15]
1 つのノードを必要とするジョブを queue1 に送信します。
$
sinfo
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 1 down# queue1-dy-c-1-1 queue1* up infinite 15 idle~ queue1-dy-c-2-[1-15] queue1* up infinite 14 down~ queue1-dy-c-1-[2-15] queue2 up infinite 30 idle~ queue2-dy-c-1-[1-15],queue2-dy-c-2-[1-15]
ノード queue1-dy-c-1-1
を起動してジョブを実行します。しかし、容量不足エラーが発生し、インスタンスを起動できませんでした。ノード queue1-dy-c-1-1
は down
に設定されます。コンピューティングリソース (queue2-dy-c-1
) 内の電源がオフになっている動的ノードは down
に設定されます。
ノードの原因は scontrol show nodes
で確認できます。
$
scontrol show nodes queue1-dy-c-1-1
NodeName=broken-dy-c-2-1 Arch=x86_64 CoresPerSocket=1 CPUAlloc=0 CPUTot=96 CPULoad=0.00 ... ExtSensorsJoules=n/s ExtSensorsWatts=0 ExtSensorsTemp=n/s Reason=(Code:InsufficientInstanceCapacity)Failure when resuming nodes [root@2022-03-10T22:17:50]
$
scontrol show nodes queue1-dy-c-1-2
NodeName=broken-dy-c-2-1 Arch=x86_64 CoresPerSocket=1 CPUAlloc=0 CPUTot=96 CPULoad=0.00 ... ExtSensorsJoules=n/s ExtSensorsWatts=0 ExtSensorsTemp=n/s Reason=(Code:InsufficientInstanceCapacity)Temporarily disabling node due to insufficient capacity [root@2022-03-10T22:17:50]
ジョブはキューコンピューティングリソース内の別のインスタンスタイプにキューイングされます。
insufficient_capacity_timeout
の時間が経過すると、コンピューティングリソース内のノードは idle~
の状態にリセットされます。
$
sinfo
PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* up infinite 30 idle~ queue1-dy-c-1-[1-15],queue1-dy-c-2-[1-15] queue2 up infinite 30 idle~ queue2-dy-c-1-[1-15],queue2-dy-c-2-[1-15]
insufficient_capacity_timeout
の時間が経過し、コンピューティングリソース内のノードが idle~
の状態にリセットされると、Slurm スケジューラはノードの優先度を低くします。スケジューラは、以下のいずれかが起こらない限り、重みの大きい他のキューコンピューティングリソースからノードを選択し続けます。
-
ジョブの送信要件は、回復されたコンピューティングリソースと一致します。
-
他のコンピューティングリソースはキャパシティに達しているため、使用できません。
-
slurmctld
が再起動されます。 -
AWS ParallelCluster コンピューティングフリートが停止し、すべてのノードの電源オフと電源オンが開始されます。
関連ログ
容量不足エラーと高速容量不足フェイルオーバーモードに関連するログは、ヘッドノードの Slurm の resume
ログと clustermgtd
ログにあります。
- Slurm
resume
(/var/log/parallelcluster/slurm_resume.log
) -
容量が不足しているためにノードを起動できない場合のエラーメッセージ。
[slurm_plugin.instance_manager:_launch_ec2_instances] - ERROR - Failed RunInstances request: dcd0c252-90d4-44a7-9c79-ef740f7ecd87 [slurm_plugin.instance_manager:add_instances_for_nodes] - ERROR - Encountered exception when launching instances for nodes (x1) ['queue1-dy-c-1-1']: An error occurred (InsufficientInstanceCapacity) when calling the RunInstances operation (reached max retries: 1): We currently do not have sufficient p4d.24xlarge capacity in the Availability Zone you requested (us-west-2b). Our system will be working on provisioning additional capacity. You can currently get p4d.24xlarge capacity by not specifying an Availability Zone in your request or choosing us-west-2a, us-west-2c.
- Slurm
clustermgtd
(/var/log/parallelcluster/clustermgtd
) -
Queue1 のコンピューティングリソース c-1 は、容量が不足しているため無効になっています。
[slurm_plugin.clustermgtd:_reset_timeout_expired_compute_resources] - INFO - The following compute resources are in down state due to insufficient capacity: {'queue1': {'c-1': ComputeResourceFailureEvent(timestamp=datetime.datetime(2022, 4, 14, 23, 0, 4, 769380, tzinfo=datetime.timezone.utc), error_code='InsufficientInstanceCapacity')}}, compute resources are reset after insufficient capacity timeout (600 seconds) expired
容量不足タイムアウトの期限が切れると、コンピューティングリソースはリセットされ、コンピューティングリソース内のノードは
idle~
に設定されます。[root:_reset_insufficient_capacity_timeout_expired_nodes] - INFO - Reset the following compute resources because insufficient capacity timeout expired: {'queue1': ['c-1']}