本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
叢集容量大小和更新
叢集的容量是由叢集可擴充的運算節點數量所定義。運算節點由組 AWS ParallelCluster 態中運算資源中定義的 Amazon EC2 執行個體提供支援(Scheduling/SlurmQueues/ComputeResources)
,並組織成佇列(Scheduling/SlurmQueues)
,以對應 1:1 到Slurm分區。
在計算資源中,您可以設定叢集中必須始終保持執行的最小計算節點 (執行個體MinCount
) 數目,以及運算資源可擴充至 (MaxCount
3) 的執行個體數目上限。
在叢集建立時或叢集更新時,MinCount
針對叢集中定義的每個運算資源 (Scheduling/SlurmQueues/ ComputeResources
) AWS ParallelCluster 啟動所設定數量的 Amazon EC2 執行個體。為了涵蓋叢集中運算資源的最小節點而啟動的執行個體稱為靜態節點。一旦啟動,靜態節點就應該在叢集中是永久性的,除非發生特定的事件或條件,否則它們不會被系統終止。例如,此類事件包括Slurm或 Amazon EC2 運作狀態檢查失敗,以及將Slurm節點狀態變更為「排出」或「關閉」。
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
從 AWS ParallelCluster 版本 3.9.0 開始,減少佇列的大小需要停止運算叢集或QueueUpdateStrategy設定為「終止」,才能進行叢集更新。在下列情況下,不需要停止運算叢集或設定QueueUpdateStrategy為「終止」:
-
將新佇列新增至排程/
SlurmQueues
-
將新的計算資源新增
Scheduling/SlurmQueues/ComputeResources
至佇列 -
增加
MaxCount
運算資源 -
增加 MinCount 運算資源,並增加 MaxCount 至少相同數量的相同運算資源
考量與限制
本節旨在概述調整叢集容量大小時應考慮的任何重要因素、限制或限制。
-
從名稱
<Queue/Name>-*
為靜態和動態的Scheduling/https://docs.aws.amazon.com/parallelcluster/latest/ug/Scheduling-v3.html#Scheduling-v3-SlurmQueuesSlurmQueues
所有運算節點移除佇列時,將從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]
-
-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]
-
更新至
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
的 N 時MinCount < MaxCount
,將透過將數量靜態節點擴展到 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]
-
更新至
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]
這將建立在節點maint_for_update
上命名的Slurm保留區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)
-
重新載入Slurm組
(scontrol reconfigure)
-
啟動
clustermgtd (supervisorctl start clustermgtd)