描述叢集排程器概念

已完成

完成本單元後,您應該能夠描述作業排程器、資源管理員、高效能運算和高輸送量運算的基本功能。

工作排程器

叢集運算作業排程器是一種軟體元件,可管理運算資源 (例如 CPU、記憶體和磁碟),以及將其指派給提交至叢集的作業。 工作排程器會根據資源的可用性、工作的優先順序和其他因素,決定叢集中最適合執行特定工作的節點。 工作排程器可確保平行執行的多個工作不會互相干擾。 工作排程器包含用來保存擱置中工作的佇列,以及用來排程它們的原則。

工作排程器的主要目標是:

  • 盡可能縮短提交作業與完成作業的間隔時間。
  • 最佳化 CPU 使用率。
  • 最大化工作輸送量。

使用者會將非互動式批次工作提交至排程器。 排程器會儲存批次工作、評估其資源需求和優先順序,並將作業散發至適當的計算節點。

透過排程器提交的工作指令碼會將工作新增至工作佇列。 視作業所需的可用資源而定,排程器會決定作業何時會離開佇列,以及將在哪個後端節點上執行。

排程器可以使用數個基本策略來判斷接下來要執行的工作:

  • 先到先服務:作業會以其第一次進入佇列時的相同順序執行。 優點是,每個作業一定會執行,不過,相較於實際執行時間,可能會有少部分作業的等候時間不足。

  • 最短的作業優先:根據作業指令碼中宣告的執行時間,排程器會估計作業的執行時間。 工作會依執行時間的遞增順序排順位。 雖然短的工作會在短暫等候時間之後啟動,但長時間執行的工作 (或至少工作宣告為這類) 可能永遠不會實際啟動。

  • 回填:排程器會維護「先到先服務」的概念,而不會防止長時間執行的作業進行。 只有在可以執行佇列中的第一個工作時,排程器才會執行工作。 否則,排程器會查看佇列的其餘部分,以確認是否可以執行另一個作業,且無須延長佇列中第一個作業的等候時間。 如果找到這樣的工作,排程器就會執行該工作。 小型工作通常會遇到簡短的佇列時間。

資源管理員

叢集運算資源管理員會在運算叢集內配置資源。 資源管理員負責將記憶體、CPU、儲存體和網路頻寬配置給叢集中執行的工作。 此元件會監視叢集中的資源使用量、偵測任何閒置或使用量過低的資源,並將其重新配置給其他需要它們的作業或工作。

Slurm 概觀

Slurm 是開放原始碼工作排程器和資源管理員,可用於在 Linux 叢集上執行工作負載。 Slurm 提供可延伸架構來管理 Linux 叢集中的資源和排程作業。 它支援各種不同的工作類型,包括平行作業、批次工作和互動式工作。 Slurm 可讓使用者透過各種介面提交工作,包括命令列介面、Web 介面和 API。 Slurm 是許多功能最強大的超級電腦和計算叢集的熱門解決方案,當您在 Microsoft Azure 上使用高效能運算 (HPC) 時,可作為選項。

Slurm 可讓您根據資源準則比對適當的計算資源,包括 CPU、GPU 和記憶體。

Slurm 工作排程器具有下列重要功能:

  • 將 HPC 叢集中計算節點的存取權配置給使用者,以便執行其工作
  • 提供在一組已配置節點上啟動、執行和監視工作的架構
  • 藉由管理擱置中的作業佇列,來仲裁資源的競爭

Slurm 工作

當您使用 Slurm 在 Linux HPC 叢集上執行作業時,須進行下列高階步驟:

  1. 作業提交:第一個步驟是使用者藉由建立包含資源需求和作業所需命令集的作業指令碼,將作業提交至 Slurm 排程器。
  2. 作業配置:下一個階段牽涉到 Slurm 排程器檢查作業的資源需求,例如所需的節點數目、CPU 和記憶體數目,以及其他任何限制,例如分割區和時間限制。 根據這些需求,排程器會決定要配置給工作的最佳可用資源,考慮目前的叢集使用量和其他擱置中的作業。
  3. 作業佇列:排程器會判斷所要求的資源是否可用。 如果資源立即可用,工作就會執行。 如果要求的資源無法立即使用,工作會放置在佇列中。 排程器會持續評估佇列工作及其優先順序,以在可用資源時配置資源。
  4. 作業執行:將必要資源配置給工作之後,Slurm 工作就會開始在指派的節點上執行。 指令碼中指定的工作會在節點上執行。
  5. 作業完成:最後一個步驟是完成作業,此時,計算資源會釋回給叢集,而排程器會將作業的狀態更新為已完成。 作業輸出和作業執行期間可能產生的任何錯誤訊息,都會儲存至指定的輸出檔案。
  6. 作業計量和報告:Slurm 會產生已完成作業的相關計量資料,包括資源使用量和執行時間。

Slurm 命令

您可以使用一組命令列公用程式,對透過 Slurm 管理的計算叢集執行動作。 以下是一些常見的 Slurm 使用者命令:

Command 函式
sacct 此命令會報告關於作用中或已完成作業的作業和作業步驟計量資訊。
salloc 使用此命令可即時配置作業的資源。 可讓您繁衍殼層,並制定 srun 命令作為起始平行工作的方式。
sattach 此命令會將標準輸入、輸出和錯誤訊號功能連結至目前正在執行的作業或作業步驟。
sbatch 使用此命令提交工作指令碼以供稍後執行。 這些指令碼通常會包含一或多個 srun 命令,以起始平行工作。
scancel 使用此命令來傳輸所需的節點上的檔案。
scontrol 這是一項 Slurm 系統管理工具,可讓您檢視和修改 Slurm 狀態。 大部分的 scontrol 命令都需要根權限。
sinfo 此命令會顯示 Slurm 管理之分割區和節點的相關資訊。
sprio 使用此命令可檢視對作業優先順序產生影響之元件的資訊。
squeue 使用此命令可檢視作業或作業步驟的狀態。
srun 使用此命令來提交工作以供執行,或即時觸發工作步驟。 您可以使用 srun 來指定資源需求,例如最小和最大節點計數、處理器計數和節點特性。
sstat 使用此命令可檢視執行作業或作業步驟所使用之資源的相關資訊。
strigger 使用此命令可設定或檢視事件觸發程序,例如,在節點失敗或作業接近時間限制時所執行的動作。
sview 使用此命令可檢視 Slurm 管理的作業、分割區和節點的狀態資訊。

您可以在 Slurm 快速入門使用者指南中深入了解 Slurm 命令。