如果僅僅將節(jié)點連成網(wǎng)絡,并不能形成集群,還需要有對這些節(jié)點進行管理的軟件系統(tǒng),集群所依賴的軟件系統(tǒng)集群作業(yè)管理系統(tǒng)JMS(Job Management System)正是為適應這種需求而出現(xiàn)并快速得以發(fā)展。集群JMS可以根據(jù)用戶的需求,統(tǒng)一管理和調(diào)度集群的軟硬件資源,保證用戶作業(yè)公平合理地共享集群資源,提高系統(tǒng)資源利用率和吞吐率。集群JMS包括系統(tǒng)資源管理和作業(yè)調(diào)度管理,作業(yè)調(diào)度技術是集群作業(yè)管理系統(tǒng)中關鍵的技術之一,作業(yè)調(diào)度的功能在于提供作業(yè)提交、調(diào)度、執(zhí)行及控制的新機制,更加有效地利用系統(tǒng)資源、平衡網(wǎng)絡負載、提高系統(tǒng)整體性能。在這種情況下,作業(yè)調(diào)度策略決定了整個集群系統(tǒng)的效率,尤其是提交計算量大的作業(yè)時,良好的作業(yè)調(diào)度策略可以大大加快執(zhí)行速度。因此,作業(yè)調(diào)度策略是提高集群系統(tǒng)執(zhí)行并行作業(yè)的效率及系統(tǒng)資源利用率的關鍵因素,對集群系統(tǒng)提高并行處理能力具有重大的意義。
負載平衡的基本作法是定期收集并分析系統(tǒng)各節(jié)點的實時負載信息,動態(tài)地將作業(yè)進程在處理機之間進行分配和調(diào)整,以消除系統(tǒng)中負載分布的不均勻性。通常表現(xiàn)節(jié)點負載的指標有:(1)CPU的利用率,表示單位時間內(nèi)CPU處理用戶進程和核心進程的時間比。(2)CPU就緒隊列的長度,CPU利用率適合用來判斷節(jié)點是否處于空閑狀態(tài),用就緒隊列的長度可用來表達負載的大小。(3)測試特定進程的響應時間,對于使用固定時間片的操作系統(tǒng)來說這也是一個選擇。(4)磁盤、內(nèi)存、交換區(qū)的可用空間,換頁的頻率,以及I/O的利用率。如果所選用的指標不止一項,可以將這些指標作為變量組合進一個負載計算公式,實時信息代入公式所得的值應該能區(qū)分實際負載的大小。
對于集中式集群JMS的作業(yè)調(diào)度,實現(xiàn)負載平衡最普通的做法是在作業(yè)映射時依據(jù)所收集的各節(jié)點的負載信息,把作業(yè)進程派往能滿足作業(yè)資源需求且預計作業(yè)在那里等待時間最小的節(jié)點。一個簡化的思想是把負載最輕的節(jié)點當作所產(chǎn)生的局部等待時間最小的節(jié)點。在集群JMS對作業(yè)映射進行修正時,同樣可以利用各節(jié)點當前的負載信息,通過對過載節(jié)點上進程的遷移來實現(xiàn)全系統(tǒng)的負載平衡。集群JMS通過各節(jié)點的負載信息,建立所謂的負載轉(zhuǎn)移向量,即在這個向量中每個節(jié)點所對應的元素是該節(jié)點的相對負載與平均負載的差值(或正或負)。如果向量中對應某些節(jié)點的元素的絕對值大到一定程度,就啟動負載平衡過程。再以各進程的工作量為基礎,決定把哪個進程遷至何處。
通用作業(yè)調(diào)度策略可以劃分為兩大類型:一類是面向提高資源利用率的調(diào)度類調(diào)度策略常見的有FirstFit。另一類是面向公平性的調(diào)度策略,確保作業(yè)在較短的時間內(nèi)能夠獲得資源,避免同等優(yōu)先級的作業(yè)因長時間無法執(zhí)行而導致作業(yè)饑餓問題,這類調(diào)度策略常見的是FCFS。
在作業(yè)調(diào)度策略中,公平性往往與高效性目標是沖突的。若要提高資源利用率,應該使作業(yè)調(diào)度隊列中選取的作業(yè)集可以盡可能多的利用資源,而不考慮調(diào)度隊列中作業(yè)的等待時間,這就產(chǎn)生了作業(yè)的餓死問題。解決同等優(yōu)先級作業(yè)的餓死問題,往往依靠的是先來先服務的方式,阻塞其他作業(yè)的執(zhí)行,確保作業(yè)隊列隊首的作業(yè)獲得足夠的資源,避免作業(yè)的長時間等待,可這種阻塞的方式卻導致了系統(tǒng)中產(chǎn)生大量的資源碎片。
傳統(tǒng)的集群作業(yè)調(diào)度策略實現(xiàn)負載平衡的方法都是相當簡練的。例如,將實時的節(jié)點負載值與事先規(guī)定的閾值做比較,或利用綜合負載計算公式將多項負載值換算成一個抽象的值來對比各節(jié)點間負載是否平衡,以此來判斷節(jié)點負載是否適當。在匹配資源需求時,查看節(jié)點上剩余資源是否能夠滿足作業(yè)的資源請求量。通常來說,簡明的策略不但便于實現(xiàn),利于降低調(diào)度成本,而且一樣能在廣泛的集群環(huán)境內(nèi)達到整體上理想的性能和效益。
不夠細致的調(diào)度策略存在著隱患,當簡單的方法遭遇一些特殊的問題就會帶來調(diào)度行為的性能突然下降,需要一定時間來進行自動地恢復。隨著計算機的處理能力越來越強大,使得較為復雜的調(diào)度策略的運轉(zhuǎn)費用也得到降低。特別是相對于大型作業(yè)執(zhí)行時間的長度和通過網(wǎng)絡傳輸作業(yè)和通訊的成本,復雜調(diào)度策略的成本日益變得可以為集群使用者接受。所以,目前的集群作業(yè)調(diào)度策略可設計的更加細致和深入,去挖掘集群提高作業(yè)執(zhí)行性能的潛力。
CPU資源是調(diào)度算法中進行優(yōu)化調(diào)度時所使用的主要的資源項目,算法中提到“節(jié)點性能”,往往就是指節(jié)點的主頻。根據(jù)系統(tǒng)的針對性和應用性的不同,存在很多種的應用節(jié)點負載指標,但沒有統(tǒng)一的標準,具體環(huán)境下可采取不同的指標,較理想的負載指標應當滿足:測量開銷低,較易獲得和計算,以滿足頻繁測量的需要;能客觀體現(xiàn)所有競爭資源上的負載;各個負載指標在測量及控制上彼此獨立。
回填策略是由Lifka最先提出,它需要用戶提供作業(yè)的估計執(zhí)行時間和所需要的節(jié)點資源信息。如果隊列中的下一個待調(diào)度作業(yè)由于缺少某些資源不能被啟動,回填策略會試圖在隊列中尋找下一個可以使用已有的空閑資源,且其執(zhí)行不會延遲該作業(yè)執(zhí)行的作業(yè)。換句話說,回填策略允許一些隊列后面的作業(yè)提前執(zhí)行?;靥畈呗缘氖褂弥饕獮榱藢崿F(xiàn)兩個看起來沖突的目標:盡可能的將短作業(yè)前移,以提高資源利用率;盡可能的避免大作業(yè)等待,因此需要預測作業(yè)的運行時間。
保守回填策略的描述如下:
RunningTasklist={j1,j2,i3,...,jn}按照期望完成時間排序的運行的作業(yè)
QueuedTasklist={il,i2,i3,...,in}按照到達時間先后順序排序的作業(yè)隊列
對每一個在RunningTasklist的j任務,根據(jù)j任務占用的資源分配timeXprocessor的空間,形成timeXprocessor的運行作業(yè)描述文件P,對每一個在QueuedTasklist的i任務檢查P,找到第一個能提供足夠processor運行I的時間點anchor。
從anchor時間點開始掃描P中的time軸
{
if(直到作業(yè)i的預期完成時間都能保證足夠的processor資源可用)
更新P,將anchorXprocessor資源分配給作業(yè)i;
else
繼續(xù)掃描time軸,找到下一個可用的時間點anchor;
}
if(anchor=0)
執(zhí)行該作業(yè);
next i;
回填策略可以有效的提高基于隊列的策略的性能,它在有效的提高小作業(yè)的響應時間的同時而不會導致大作業(yè)出現(xiàn)饑餓。
[1]薛正華,劉偉哲,董小社,伍衛(wèi)國.基于思維進化的集群作業(yè)調(diào)度方法研究[J].西安交通大學學報,2008(06).
[2]張果桃,趙金雁,白中英.基于LT-back fi lling算法的集群作業(yè)調(diào)度系統(tǒng)[J].計算機工程,2007(21).
[3]趙宗弟,胡凱,胡建平.基于PBS的集群作業(yè)調(diào)度策略的設計與實現(xiàn)[J].計算機與數(shù)字工程,2006(11).