張健 國家超級計算天津中心
超級計算機(jī)是通過高速互聯(lián)網(wǎng)絡(luò)連接并由多個獨立計算節(jié)點組成的超大型計算機(jī)。高速互聯(lián)網(wǎng)絡(luò)是計算節(jié)點之間發(fā)送和接收數(shù)據(jù)的通道。每個計算節(jié)點包含獨立的CPU、內(nèi)存和操作系統(tǒng),所有計算節(jié)點通過掛載分布式共享存儲的方式使用同一套存儲。超級計算機(jī)的這種結(jié)構(gòu),使得既可以滿足單機(jī)用戶的小規(guī)模串行任務(wù)需求,也可以滿足科研、企業(yè)用戶的大規(guī)模并行任務(wù)需求。在超級計算機(jī)上給用戶提供資源調(diào)度、作業(yè)管理、記賬分析等功能的軟件,就是作業(yè)管理系統(tǒng)。
超級計算機(jī)上有成百上千的用戶,假設(shè)每個用戶提交十個作業(yè),那么作業(yè)的規(guī)模就會成千上萬,這些作業(yè)有串行的、有并行的,有交互式的、有批處理的,有計算密集型的、有I/O密集型的,這些作業(yè)都會對超級計算機(jī)的資源造成爭搶。所以,超級計算機(jī)需要一種管理軟件,用于對用戶的作業(yè)進(jìn)行實時響應(yīng)、調(diào)度以及管理,同時,為了保障超級計算機(jī)的資源得到充分利用,還應(yīng)該具有作業(yè)監(jiān)控、作業(yè)記賬、作業(yè)統(tǒng)計和歷史作業(yè)查詢的功能,這個軟件就是作業(yè)管理系統(tǒng)。一個好的作業(yè)管理系統(tǒng)不僅要求保證計算集群有高的吞吐率、高的響應(yīng)速度,還應(yīng)提供調(diào)優(yōu)過的作業(yè)調(diào)度策略來提高用戶作業(yè)響應(yīng)速度和執(zhí)行時間。目前在超級計算機(jī)上使用較多的作業(yè)管理系統(tǒng)有Slurm、PBS和LSF。
Slurm是LLNL等開發(fā)的一種開源作業(yè)管理系統(tǒng),主要功能包括支持細(xì)粒度資源選擇的資源分配、基于綜合優(yōu)先級的作業(yè)調(diào)度、提供快速加載大規(guī)模并行任務(wù)的加載命令、基于檢查點的自動作業(yè)容錯、節(jié)點空閑后自動降低功耗等。Slurm具有高效性、靈活性、可靠性、易用性、易管理型、安全性等主要特點。Slurm不僅對MPICH,Open MPI,BlueGene MPI等多種不同實現(xiàn)的MPI提供良好支持,還支持對圖形處理器(GPU)、集成眾核(Many Integrated Core,MIC)、網(wǎng)絡(luò)帶寬甚至內(nèi)存帶寬等“通用計算資源”的分配。
Slurm主要由控制進(jìn)程slurmctld、節(jié)點監(jiān)控進(jìn)程slurmd、作業(yè)管理進(jìn)程slurmstepd、記賬存儲進(jìn)程slurmdbd和命令工具集組成。控制進(jìn)程slurmctld和記賬存儲進(jìn)程slurmdbd都部署在管理節(jié)點上面,其中slurmctld是Slurm的大腦,負(fù)責(zé)整個超級計算機(jī)的資源分配、作業(yè)調(diào)度和管理控制,而slurmdbd是用戶與控制進(jìn)程訪問記賬數(shù)據(jù)庫的中間層,起到用戶認(rèn)證與安全隔離作用。節(jié)點監(jiān)控進(jìn)程slurmd是計算節(jié)點的守護(hù)進(jìn)程,負(fù)責(zé)收集節(jié)點的資源狀態(tài)并向控制進(jìn)程報告,同時,slurmd接收來自控制進(jìn)程與用戶命令的請求,進(jìn)行作業(yè)步任務(wù)加載、作業(yè)取消等。作業(yè)管理進(jìn)程slurmstepd由slurmd在加載作業(yè)步任務(wù)或批處理作業(yè)時派生,負(fù)責(zé)提供本節(jié)點上相應(yīng)作業(yè)步的所有任務(wù)的啟動、I/O 轉(zhuǎn)發(fā)、信號傳遞、記賬信息收集等功能。
PBS全稱叫Portable Batch System,是由美國NASA的Ames研究中心開發(fā)的作業(yè)管理系統(tǒng)。PBS支持多種操作平臺,包括主流的Windows和LINUX平臺;支持批處理、交互式作業(yè)和串行、多種并行作業(yè),如MPI,PVM,HPF,MPL。PBS的特點包括支持多種作業(yè)調(diào)度方式、提供多種過程語言以便實現(xiàn)新的調(diào)度策略、通過用戶認(rèn)證保證安全、故障自動探測和規(guī)避等。PBS主要有openPBS、Torque和PBS Pro三個版本:openPBS是較早開發(fā)的版本,無后續(xù)更新;Torque是開源的PBS版本;PBS Pro是商業(yè)版的PBS,提供企業(yè)范圍內(nèi)的作業(yè)調(diào)度。
PBS由server、mom、scheduler模塊和命令工具集組成。server是管理模塊,負(fù)責(zé)用戶任務(wù)的管理、提交,保障整個作業(yè)管理系統(tǒng)的穩(wěn)定運(yùn)行。mom是作業(yè)執(zhí)行模塊,也叫作業(yè)執(zhí)行器,是一個守護(hù)進(jìn)程,負(fù)責(zé)將用戶提交的作業(yè)放入執(zhí)行隊列,并在作業(yè)運(yùn)行后將作業(yè)的輸出返回給用戶,一個PBS系統(tǒng)可以存在多個不同mom,以通過不同的作業(yè)調(diào)度策略滿足不同用戶的需求。Scheduler是作業(yè)調(diào)度模塊,也叫作業(yè)調(diào)度器,負(fù)責(zé)調(diào)度執(zhí)行隊列中的作業(yè)應(yīng)該什么時候運(yùn)行、在哪個計算節(jié)點運(yùn)行、以什么方式運(yùn)行,它可以和不同的mom通信并獲取執(zhí)行隊列狀態(tài),然后通過server驗證作業(yè)有效性,最后根據(jù)調(diào)度策略進(jìn)行作業(yè)調(diào)度。PBS的命令工具集主要用于作業(yè)的提交、監(jiān)視、修改和刪除。
LSF全稱叫Load Sharing Facility,是由加拿大的Platform公司開發(fā)的一個分布式作業(yè)管理系統(tǒng)。同Slurm和PBS類似,LSF也支持批處理作業(yè)、交互作業(yè)、串行作業(yè)和多種并行作業(yè)。LSF能夠自動、安全地收集負(fù)載和資源信息,具有良好的容錯性,提供多種調(diào)度策略、進(jìn)程遷移和斷點檢查功能[4]。
LSF是松耦合結(jié)構(gòu),主要由LSF Base、LSF Batch、LSF Jobscheduler、LSF Multi-Cluster和LSF Analyzer這五個部分組成,其中LSF Base提供動態(tài)的負(fù)載管理和透明的資源訪問,LSF Batch提供異構(gòu)環(huán)境下的作業(yè)無縫調(diào)度處理,LSF Job-scheduler提供基于計算節(jié)點的由時間驅(qū)動的作業(yè)調(diào)度,LSF Multi-Cluster支持網(wǎng)絡(luò)連通的多臺超級計算機(jī)的資源共享,LSF Analyzer負(fù)責(zé)提供作業(yè)的全面數(shù)據(jù)分析,并生成記賬報告。LSF Base的功能主要通過守護(hù)進(jìn)程LIM、RES、PIM和ELIM實現(xiàn),LSF Batch的功能主要通過守護(hù)進(jìn)程MBATCHD、MBSCHD和SBATCHD實現(xiàn)。
本文對目前比較流行的三個作業(yè)管理系統(tǒng)Slurm、PBS和LSF進(jìn)行了概述。通過作業(yè)管理系統(tǒng),超級計算機(jī)上用戶作業(yè)的調(diào)度、運(yùn)行、統(tǒng)計和分析能到得到有效保障。在作業(yè)管理系統(tǒng)未來的發(fā)展中,將主要面臨兩個挑戰(zhàn):1、跨平臺的作業(yè)調(diào)度需求將會越來越大,作業(yè)管理系統(tǒng)需要提供功能更加強(qiáng)大的調(diào)度接口;2、隨著云計算、大數(shù)據(jù)和人工智能的發(fā)展,作業(yè)管理系統(tǒng)需要加強(qiáng)對云計算技術(shù)、大數(shù)據(jù)技術(shù)和人工智能技術(shù)的支持。