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