?作業提交與執行流程
前文提到在 Linux 的 HPC 或超算環境中,可以只在共享存儲上安裝一次應用程序,然后所有計算節點通過掛載共享目錄來訪問和執行這些程序,那么作業提交及執行過程是怎么樣的流程呢?
結構說明:
- 第一行是用戶提交作業的入口;
- 第二行是調度系統客戶端,用戶通過它與調度系統交互;
- 第三行是調度系統管理端,負責調度和資源分配;
- 第四行是兩個計算節點,由調度系統分配作業;
- 最后一行是共享存儲系統,位于計算節點之間,統一提供程序和存儲結果。
流程圖的前兩個,提交作業的機器和調度系統客戶端的機器可以是同一臺,也可以是不同的機器。
- 如果是同一臺機器:最簡單,用戶直接在這臺機器上運行?
sbatch
?等命令; - 如果是不同的機器:提交作業的機器必須能通過某種方式調用調度系統客戶端(比如通過 SSH、API、遠程命令等);
如果是兩臺機器,且提交作業的機器是 Windows 系統:
不能直接運行 Slurm 客戶端命令,因為 Slurm 客戶端工具(如?
sbatch
,?squeue
)是為 Linux/Unix 系統設計的;解決方案包括:
方案 A:通過 SSH 登錄到 Linux 客戶端機器
方案 B:通過 Web 界面(如 Slurm-web)或 REST API 提交
- Windows 用戶使用 SSH 工具(如 PuTTY、MobaXterm、WSL)登錄到一臺安裝了 Slurm 客戶端的 Linux 機器;
- 在那臺 Linux 機器上運行?
sbatch
?提交作業; - Windows 用戶通過瀏覽器訪問 Slurm-web;
- Slurm-web 后端部署在 Linux 上,負責調用 Slurm 客戶端或 REST API;
- 用戶無需直接接觸 Linux 命令行;
Slurm-web登錄頁面如下所示:
提交方式 | 提交端系統要求 | 是否需要 Slurm 客戶端 | 說明 |
---|---|---|---|
本地命令行提交 | Linux | ? 是 | 用戶直接運行 sbatch |
遠程 SSH 提交 | 任意(含 Windows) | ? 是 | 登錄到 Linux 客戶端機器 |
Web 頁面提交(如 Slurm-web) | 任意(含 Windows) | ? 否(用戶端) ? 是(服務端) | 服務端調用 Slurm 客戶端或 API |
REST API 提交 | 任意 | ? 否 | 直接通過 HTTP 請求與調度系統交互 |
? Slurm Web 界面(如 slurm-web)的作業提交機制
1.?Slurm-web 是一個 Web 服務端程序
它通常部署在一臺服務器上,提供一個 Web 頁面供用戶提交作業、查看隊列、監控狀態等。
2.?它如何提交作業?
方式一:調用 Slurm 命令行客戶端(如?
sbatch
,?squeue
)- Slurm-web 的后端服務通常會在服務器上執行這些命令行工具。
- 本質上,它是通過系統調用或 Python 的?
subprocess
?模塊等方式,間接使用 Slurm 的客戶端工具。 - 所以,這種方式?依賴于調度系統客戶端的存在。
這種方式的前提是:
- Slurm 客戶端工具必須已經安裝在運行 Slurm-web 的服務器上;
- 該服務器必須有權限訪問調度系統管理端(比如通過網絡或本地 socket);
- 用戶身份可能通過 Web 登錄系統映射到實際提交作業的 Linux 用戶,或者使用統一的身份認證機制。
方式二:調用 Slurm 的 API(如 Slurm REST API)
- Slurm 提供了 REST API(如 Slurmrestd),允許通過 HTTP 請求提交作業、查詢狀態等。
- 如果 Slurm-web 使用的是 REST API,那么它可以不依賴本地命令行客戶端,而是通過網絡直接與調度系統管理端通信。
- 在這種情況下,REST API 本身就相當于一個“客戶端接口”,只是以 HTTP 的形式存在。
提交方式 | 是否依賴調度系統客戶端 | 說明 |
---|---|---|
調用 sbatch 等命令 | ? 是 | 需要本地安裝 Slurm 客戶端工具 |
調用 Slurm REST API | ? 否(但需要 API 服務) | 通過 HTTP 與 Slurm 管理端通信 |