本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Slurm Workload Manager (slurm
)
叢集容量大小和更新
叢集的容量是由叢集可以擴展的運算節點數量所定義。運算節點由 AWS ParallelCluster 組態 中運算資源中定義的 Amazon EC2 執行個體提供支援(Scheduling/SlurmQueues/ComputeResources)
,並組織成 1:1 對應至 (Scheduling/SlurmQueues)
的佇列 Slurm 分割區。
在運算資源中,您可以設定必須始終在叢集中執行的運算節點 (執行個體) 數量下限 (MinCount
),以及運算資源可擴展至 (MaxCount
3) 的執行個體數量上限。
在叢集建立時間或叢集更新時, MinCount
會針對叢集中定義的每個運算資源 (Scheduling/SlurmQueues/ ComputeResources
),依 中設定的數量 AWS ParallelCluster 啟動 Amazon EC2 執行個體。啟動以涵蓋叢集中運算資源最少數量節點的執行個體稱為靜態節點。啟動後,除非發生特定事件或條件,否則靜態節點應持續存在於叢集中,系統不會終止這些節點。例如,這類事件包括 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
的 。從 3.9.0 AWS ParallelCluster 版開始,減少佇列的大小需要先停止運算機群或將 QueueUpdateStrategy 設定為 TERMINATE,才能進行叢集更新。在下列情況下,不需要停止運算機群或將 QueueUpdateStrategy 設定為 TERMINATE:
-
將新佇列新增至排程/
SlurmQueues
-
將運算資源
Scheduling/SlurmQueues/ComputeResources
新增至佇列 -
增加運算資源
MaxCount
的 -
增加運算資源的 MinCount Word 和增加至少相同數量的相同運算資源的 MaxCount
考量與限制
本節旨在概述調整叢集容量大小時應考慮的任何重要因素、限制或限制。
-
從名稱為
Scheduling/https://docs.aws.amazon.com/parallelcluster/latest/ug/Scheduling-v3.html#Scheduling-v3-SlurmQueuesSlurmQueues
的所有運算節點移除佇列時<Queue/Name>-*
,會從 中移除靜態和動態 Slurm 組態和對應的 Amazon EC2 執行個體將會終止。 -
Scheduling/SlurmQueues/https://docs.aws.amazon.com/parallelcluster/latest/ug/Scheduling-v3.html#Scheduling-v3-SlurmQueues-ComputeResourcesComputeResources
從佇列中移除運算資源時,所有名為 的運算節點<Queue/Name>-*-<ComputeResource/Name>-*
,包括靜態和動態節點,都會從 Slurm 組態和對應的 Amazon EC2 執行個體將會終止。
變更運算資源的MinCount
參數時,我們可以區分兩種不同的案例,如果 MaxCount
保持等於 MinCount
(僅限靜態容量),如果 MaxCount
大於 MinCount
(混合靜態和動態容量)。
僅限靜態節點的容量變更
-
如果
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]
-
在
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
,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>]
如果靜態節點受到 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 執行個體的情況下,除非沒有其他節點滿足任務需求,否則在移除節點上執行的 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)
-
Reload (重新載入) Slurm 組態
(scontrol reconfigure)
-
啟動
clustermgtd (supervisorctl start clustermgtd)
如需 的相關資訊 Slurm,請參閱 https://slurm.schedmd.com
支援的叢集和 SLURM 版本
下表列出 AWS ParallelCluster 和 Slurm 支援的 AWS 版本。
AWS ParallelCluster version(s) | 支援 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 |