

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

# Slurm 3.7.x 版中的動態節點配置策略
<a name="scheduler-dynamic-node-allocation-v3-3.7.x"></a>

ParallelCluster 使用 2 種類型的動態節點配置策略來擴展叢集：
+ 

**根據可用的請求節點資訊進行配置：**
  + **所有節點繼續**或**節點清單**擴展：

    ParallelCluster 只會在 Slurm的`ResumeProgram`執行時，根據 請求Slurm的節點清單名稱來擴展叢集。它只會依節點名稱將運算資源配置給節點。節點名稱清單可以跨越多個任務。
  + **任務層級恢復**或**任務層級**擴展：

    ParallelCluster 會根據每個任務的需求、目前分配給任務的節點數量，以及需要繼續的節點，來擴展叢集。ParallelCluster 會從`SLURM_RESUME_FILE`環境變數取得此資訊。
+ 

**使用 Amazon EC2 啟動策略進行配置：**
  + **最佳嘗試**擴展：

    ParallelCluster 使用目標容量下限等於 1 的 Amazon EC2 啟動執行個體 API 呼叫來擴展叢集，以啟動部分但不一定是支援請求節點所需的所有執行個體。
  + **All-or-nothing**擴展：

    ParallelCluster 使用 Amazon EC2 啟動執行個體 API 呼叫來擴展叢集，只有在啟動支援請求節點所需的所有執行個體時，該呼叫才會成功。在此情況下，它會呼叫目標容量下限等於總請求容量的 Amazon EC2 啟動執行個體 API。

根據預設，ParallelCluster **使用節點清單**擴展搭配**最佳 **Amazon EC2 啟動策略來啟動部分，但不一定是支援請求節點所需的所有執行個體。它會嘗試佈建盡可能多的容量，以便為提交的工作負載提供服務。

從 ParallelCluster 3.7.0 版開始，ParallelCluster 使用**任務層級**擴展搭配**all-or-nothing** EC2 啟動策略，用於以**獨家模式**提交的任務。當您以獨佔模式提交任務時，該任務具有其配置節點的獨佔存取權。如需詳細資訊，請參閱 Slurm 文件中的 [EXCLUSIVE](https://slurm.schedmd.com/slurm.conf.html#OPT_EXCLUSIVE)。

若要以排他性模式提交任務：
+ 將Slurm任務提交至叢集時傳遞獨佔旗標。例如 `sbatch ... --exclusive`。

  或
+ 將任務提交至已設定為 [`JobExclusiveAllocation`](Scheduling-v3.md#yaml-Scheduling-SlurmQueues-JobExclusiveAllocation) 的叢集佇列`true`。

在排他性模式下提交任務時：
+ ParallelCluster 目前會批次處理啟動請求，以包含最多 500 個節點。如果任務請求超過 500 個節點，則 ParallelCluster 會針對每組 500 個節點提出**all-or-nothing**啟動請求，並針對其餘節點提出額外的啟動請求。
+ 如果節點配置位於單一運算資源中，則 ParallelCluster 會針對每組 500 個節點提出**all-or-nothing**啟動請求，並針對其餘節點提出額外的啟動請求。如果啟動請求失敗，ParallelCluster 會終止所有啟動請求建立的未使用容量。
+ 如果節點配置跨越多個運算資源，則 ParallelCluster 需要為每個運算資源提出**all-or-nothing**啟動請求。這些請求也會批次處理。如果其中一個運算資源的啟動請求失敗，ParallelCluster 會終止所有運算資源啟動請求建立的未使用容量。

具有**all-or-nothing**啟動策略已知限制**的任務層級**擴展：
+ 當您在具有單一執行個體類型的運算資源中提交任務時，在跨越多個可用區域的佇列中，只有在單一可用區域中可提供所有容量時，**all-or-nothing** EC2 啟動 API 呼叫才會成功。
+ 當您在具有多個執行個體類型的運算資源中提交任務時，在具有單一可用區域的佇列中，只有在單一執行個體類型可提供所有容量時，**all-or-nothing** Amazon EC2 啟動 API 呼叫才會成功。
+ 當您在具有多個執行個體類型的運算資源中提交任務時，在跨越多個可用區域的佇列中，不支援**all-or-nothing**Amazon EC2 啟動 API 呼叫，而 ParallelCluster 會改為執行**最佳嘗試**擴展。