Slurm叢集快速容量不足容錯移轉 - AWS ParallelCluster

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Slurm叢集快速容量不足容錯移轉

從 AWS ParallelCluster 版本 3.2.0 開始,叢集會在預設啟用快速容量不足的容錯移轉模式下執行。如此可將偵測到 Amazon EC2 容量不足錯誤時,重試將任務排入佇列所花費的時間降至最低。當您使用多種執行個體類型設定叢集時,這特別有效。

Amazon EC2 檢測到容量不足故障:
  • InsufficientInstanceCapacity

  • InsufficientHostCapacity

  • InsufficientReservedInstanceCapacity

  • MaxSpotInstanceCountExceeded

  • SpotMaxPriceTooLow:如果 Spot 請求價格低於所需的最低 Spot 請求履行價格,則啟用。

  • Unsupported:使用特定不支援的執行個體類型來啟用 AWS 區域。

在快速容量不足的容錯移轉模式下,如果在工作指派給 SlurmQueues/時偵測到容量不足錯誤 compute resource,請 AWS ParallelCluster 執行下列動作:

  1. 它將計算資源設置為 disabled(DOWN)狀態的預定時間段。

  2. 它會用POWER_DOWN_FORCE來取消失敗節點工作的計算資源,並暫停失敗的節點。它會將失敗節點設定為IDLEPOWER_DOWN (!)狀態,然後設定為POWERING_DOWN (%)

  3. 它會將工作重新排序至另一個計算資源。

停用之運算資源的靜態和已啟動節點不會受到影響。工作可以在這些節點上完成。

此週期會重複,直到工作成功指派給一或多個計算資源節點為止。如需節點狀態的相關資訊,請參閱Slurm 多個佇列模式的指南

如果找不到可執行工作的計算資源,則工作會設定為PENDING狀態,直到經過預先定義的時間為止。在此情況下,您可以依照下一節所述修改預先定義的時間週期。

容量逾時參數不足

insufficient_capacity_timeout

insufficient_capacity_timeout指定偵測到容量不足錯誤時,計算資源保持在 disabled (down) 狀態的時間 (以秒為單位)。

依預設,insufficient_capacity_timeout為啟用狀態。

預設值insufficient_capacity_timeout為 600 秒 (10 分鐘)。

如果該insufficient_capacity_timeout值小於或等於零,將停用快速不足容量容錯移轉模式。

您可以在insufficient_capacity_timeout位於的clustermgtd組態檔案中加入參數來變更值HeadNode/etc/parallelcluster/slurm_plugin/parallelcluster_clustermgtd.conf

您可以隨時更新參數,而無需停止運算叢集。

例如:

  • insufficient_capacity_timeout=600:

    如果偵測到容量不足錯誤,則計算資源會設定為 disabled (DOWN)。10 分鐘後,其失敗的節點會設定為 idle~ (POWER_SAVING) 狀態。

  • insufficient_capacity_timeout=60:

    如果偵測到容量不足錯誤,則計算資源位於 disabled (DOWN) 中。1 分鐘後,其失敗的節點會設定為idle~狀態。

  • insufficient_capacity_timeout=0:

    快速容量不足的容錯移轉模式已停用。未停用計算資源。

注意

節點故障且容量不足錯誤與叢集管理協助程式偵測到節點故障的時間之間,最多可能會有一分鐘的延遲時間。這是因為叢集管理常駐程式會檢查節點容量不足故障,並以一分鐘的間隔將計算資源設定為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]

我們提交一個作業到 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)

佇列 1 中的計算資源 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']}