張 毅
(中國空氣動(dòng)力研究與發(fā)展中心,綿陽 621000)
高性能計(jì)算(high performance computing,HPC)通常指使用很多處理器(作為單個(gè)機(jī)器的一部分)或者某一集群中組織的若干臺(tái)計(jì)算機(jī)(作為單個(gè)計(jì)算資源操作)的計(jì)算系統(tǒng)和環(huán)境。
在集群計(jì)算中,負(fù)載均衡對于充分發(fā)揮集群計(jì)算能力和最大化地提升并行作業(yè)執(zhí)行性能至關(guān)重要。尤其是隨著計(jì)算規(guī)模的不斷擴(kuò)大,如何形成統(tǒng)一的資源調(diào)配統(tǒng)籌策略,協(xié)同多個(gè)高性能計(jì)算機(jī)系統(tǒng)高效地完成作業(yè),實(shí)現(xiàn)多系統(tǒng)間的作業(yè)遷移容錯(cuò),解決負(fù)載均衡問題,就成為迫切需要解決的問題[2-3]。
本文研究了多集群環(huán)境中作業(yè)統(tǒng)一調(diào)度遷移策略,并將其應(yīng)用于基于Linux系統(tǒng)的一個(gè)由十多套高性能計(jì)算機(jī)集群系統(tǒng)構(gòu)成的計(jì)算中心。這些計(jì)算機(jī)集群在數(shù)年內(nèi)分期建設(shè)而成,每個(gè)集群系統(tǒng)有其內(nèi)部互聯(lián)網(wǎng)絡(luò)和集中存儲(chǔ)系統(tǒng),且生產(chǎn)廠商、結(jié)構(gòu)組成、節(jié)點(diǎn)規(guī)模、整體性能都不盡相同。各個(gè)集群都分別安裝了不同的資源管理調(diào)度軟件,為用戶計(jì)算作業(yè)自動(dòng)分配計(jì)算資源。計(jì)算中心面對的用戶群是進(jìn)行大規(guī)模數(shù)值模擬計(jì)算的科研人員。相比使用專用軟件的生產(chǎn)性應(yīng)用環(huán)境,本計(jì)算集群環(huán)境復(fù)雜程度高,涉及大量程序調(diào)試和計(jì)算方法研究,用戶和計(jì)算作業(yè)的數(shù)量多,各作業(yè)運(yùn)行時(shí)間相差大(從數(shù)小時(shí)到數(shù)月不等),處理器規(guī)模從單核串行作業(yè)到數(shù)千核并行作業(yè)不等。由于各類任務(wù)的計(jì)算需求飽滿,總體上計(jì)算資源非常緊張。
實(shí)際使用中我們發(fā)現(xiàn),各集群以及各用戶之間的資源利用率動(dòng)態(tài)來看常常是很不平衡的。首先每個(gè)集群上用戶提交作業(yè)、調(diào)試程序及數(shù)據(jù)分析處理的時(shí)間段具有很大隨機(jī)性,有時(shí)系統(tǒng)資源相對空閑有時(shí)又非常緊張,同時(shí)各集群都可能在某些時(shí)間段出現(xiàn)一批空閑處理器,而在另外的時(shí)間段則有較多排隊(duì)作業(yè)。因此就需要有提高計(jì)算中心范圍內(nèi)的資源利用率同時(shí)保證重要任務(wù)按期完成的有效策略和實(shí)現(xiàn)方法。為了更有效地管理計(jì)算作業(yè),為用戶提供更加便利的使用環(huán)境,切實(shí)提高各集群及計(jì)算中心整體資源利用率,本文對各系統(tǒng)上作業(yè)的管理調(diào)度方法進(jìn)行了研究和改進(jìn),在各集群上形成了“用戶處理器配額搶占策略”(user processor quota preemption policy,UPQPP),并且實(shí)現(xiàn)了一套多集群環(huán)境下的作業(yè)遷移調(diào)度子系統(tǒng)。在多年的實(shí)際運(yùn)行中以上調(diào)度策略和機(jī)制達(dá)到了預(yù)期的效果。
遷移調(diào)度系統(tǒng)建立在每套集群本地資源管理調(diào)度系統(tǒng)上,因此利用本地調(diào)度系統(tǒng)提高各套集群的管理使用效率是提高全局資源利用率的基礎(chǔ)。各集群上安裝了不同的資源管理和作業(yè)調(diào)度軟件,如:OpenPBS、LSF、PBSpro、slurm等,有的是開源軟件,有的是商業(yè)產(chǎn)品,但從功能上看,大多比較接近,都提供了一系列調(diào)度策略機(jī)制以供選擇配置。如:作業(yè)優(yōu)先級(jí)、運(yùn)行時(shí)間預(yù)留、資源數(shù)限制、調(diào)度回填機(jī)制、服務(wù)質(zhì)量管理、資源搶占等等。這些調(diào)度策略在許多應(yīng)用場景下是有效的,可以組合成滿足不同作業(yè)需求的調(diào)度環(huán)境。實(shí)際使用中,設(shè)置何種策略機(jī)制需要針對具體應(yīng)用需求進(jìn)行分析決策,同時(shí),還需要對不同計(jì)算作業(yè)需求調(diào)度進(jìn)行定制。在本研究應(yīng)用環(huán)境中,由于集群數(shù)多、用戶數(shù)多、運(yùn)行作業(yè)數(shù)多,作業(yè)提交的時(shí)間隨機(jī),有的計(jì)算任務(wù)需要反復(fù)調(diào)試程序,還有的任務(wù)需要保證在時(shí)間節(jié)點(diǎn)內(nèi)完成,因此常常需要預(yù)留資源限制其他用戶使用。各用戶需求不同且經(jīng)常變化,實(shí)際運(yùn)行中如果只是簡單地運(yùn)用上述常見調(diào)度策略,系統(tǒng)管理的復(fù)雜度和工作量都很大,不易達(dá)到預(yù)期的效果。
通過一段時(shí)間的運(yùn)行實(shí)踐,本研究提出“用戶處理器配額搶占策略”UPQPP,在各集群系統(tǒng)上采用了基于此策略的管理調(diào)度,取得了較好效果。UPQPP總體方針如下:
1) 為每個(gè)用戶賬戶分配處理器配額,由項(xiàng)目管理部門根據(jù)各科研任務(wù)需求和完成情況定期制訂和調(diào)整,確保每個(gè)賬戶至少能夠使用配額數(shù)以內(nèi)的CPU核數(shù);
2) 當(dāng)某集群中有空閑節(jié)點(diǎn)或CPU時(shí),配額使用已滿的用戶可以根據(jù)需要超配額使用;
3) 當(dāng)配額使用未滿的用戶提交作業(yè)時(shí),如果自己的資源已被占用,則優(yōu)先搶占那些超配額使用用戶的運(yùn)行作業(yè)的資源,并將這些被搶占的作業(yè)重新排隊(duì)。
UPQPP 策略的偽代碼描述如下:
while (有作業(yè)在排隊(duì)等待運(yùn)行)
{讀取一個(gè)排隊(duì)作業(yè)信息;
if(集群中的空閑計(jì)算核 > 排隊(duì)作業(yè)所需計(jì)算核)
{將排隊(duì)提交到計(jì)算節(jié)點(diǎn)運(yùn)行;}
else
{if(排隊(duì)作業(yè)所需計(jì)算核 + 排隊(duì)作業(yè)所屬用戶所有作業(yè)已占用的計(jì)算核≤排隊(duì)作業(yè)所屬用戶計(jì)算核配額)
{while (排隊(duì)作業(yè)未獲得足夠計(jì)算核)
{查找所占計(jì)算核已超過其規(guī)定配額的其他用戶,選取這些用戶擁有的某些作業(yè)加入被搶占名單;
# 注釋:選取某用戶作業(yè)的順序可以按時(shí)間、作業(yè)核數(shù)正序或倒序,選取的條件是某作業(yè)被搶占后該用戶占用的計(jì)算核仍超過其配額
累計(jì)被搶占作業(yè)的計(jì)算核數(shù);
if(被搶占作業(yè)的計(jì)算核累計(jì) > 排隊(duì)作業(yè)所需計(jì)算核)
{停止被搶占名單中的所有作業(yè),將其重新排隊(duì),騰退出足夠的空閑計(jì)算核;
將排隊(duì)等待作業(yè)提交到計(jì)算節(jié)點(diǎn)運(yùn)行;}
else
{if (所有超過配額用戶的作業(yè)查找完畢)
{last;# 注釋:未查到足夠滿足排隊(duì)作業(yè)需要的可被搶占的作業(yè),返回處理下一個(gè)排隊(duì)作業(yè)}}
# 注釋:返回繼續(xù)查找下一個(gè)可被搶占的作業(yè)}}
#注釋:返回處理下一個(gè)排隊(duì)作業(yè)}
這種基于UPQPP的管理調(diào)度策略,既能滿足任務(wù)緊急的用戶的資源需求,又能充分利用整個(gè)集群系統(tǒng)的計(jì)算資源。首先,各個(gè)用戶都有可能因準(zhǔn)備數(shù)據(jù)、調(diào)試程序、分析結(jié)果等原因在配額生效期間不能隨時(shí)用滿所分配的CPU數(shù),有時(shí)空閑數(shù)還較多,而其他用戶則可能已有批量的作業(yè)在排隊(duì)等待,UPQPP很好地協(xié)調(diào)了資源配置,提高了資源利用率;其次,這種調(diào)度策略使得管理部門也比較方便,可能一兩周只需要調(diào)整一次配額計(jì)劃,大大減輕了系統(tǒng)管理員的負(fù)擔(dān);更重要的是在實(shí)踐中獲得了用戶的認(rèn)可。
常見的資源管理和作業(yè)調(diào)度系統(tǒng)大多并沒有直接支持UPQPP類似的策略。以本文所述的計(jì)算中心為例,針對各集群的不同調(diào)度系統(tǒng)環(huán)境,要實(shí)現(xiàn)上述基于處理器配額的基本管理調(diào)度策略,多數(shù)需要在Linux系統(tǒng)下自行編制控制腳本程序。
1.2.1 OpenPBS
早期集群系統(tǒng)安裝的開源PBS(portable batch system)平臺(tái),對實(shí)現(xiàn)此類基本策略的支持較弱。在OpenPBS環(huán)境下,采用shell編程實(shí)現(xiàn)了一套執(zhí)行以上搶占策略的調(diào)度器:用MySQL數(shù)據(jù)庫分別記錄每個(gè)作業(yè)的處理器數(shù)量、每個(gè)用戶的CPU配額以及配額使用情況;對排隊(duì)序列中各作業(yè)所需的處理器規(guī)模大小進(jìn)行比較,實(shí)現(xiàn)從最小滿足排隊(duì)作業(yè)核數(shù)的超配額用戶作業(yè)開始搶占的策略,以減小搶占作業(yè)的代價(jià)[4]。
1.2.2 LSF
在LSF(load sharing facility)環(huán)境中,利用不同優(yōu)先級(jí)隊(duì)列(queue)之間的作業(yè)可以進(jìn)行搶占的機(jī)制,用shell腳本程序周期性檢查各用戶對CPU配額的使用情況。當(dāng)某用戶提交作業(yè)CPU數(shù)未達(dá)到配額數(shù)時(shí)將其放在高優(yōu)先級(jí)隊(duì)列;當(dāng)超過配額時(shí)將該用戶的一些運(yùn)行作業(yè)轉(zhuǎn)移到低優(yōu)先級(jí)隊(duì)列中,以便其他配額使用未滿用戶的作業(yè)優(yōu)先搶占CPU數(shù);當(dāng)該用戶使用的CPU數(shù)降至配額以下時(shí)再將用戶作業(yè)轉(zhuǎn)移回高優(yōu)先級(jí)隊(duì)列[5]。
1.2.3 slurm
在slurm(simple Linux utility for resource management)環(huán)境中,利用不同QoS(服務(wù)質(zhì)量隊(duì)列)作業(yè)之間可以搶占的機(jī)制,為每個(gè)用戶設(shè)立一個(gè)單獨(dú)的QoS,同時(shí)為所有用戶設(shè)立一個(gè)可被搶占的公用QoS。用戶QoS根據(jù)任務(wù)計(jì)劃設(shè)置限額,其搶占目標(biāo)設(shè)為公用QoS,提交作業(yè)默認(rèn)使用用戶各自的QoS。編制周期性執(zhí)行的shell腳本程序,檢查各用戶作業(yè)使用的CPU配額。當(dāng)用戶作業(yè)CPU數(shù)大于配額時(shí),則將排隊(duì)作業(yè)轉(zhuǎn)移到公用QoS;其他用戶后續(xù)提交的作業(yè),可自動(dòng)擠占這些在公用QoS上的作業(yè);當(dāng)某用戶使用的CPU總數(shù)小于配額時(shí),腳本將其公用QoS上的作業(yè)轉(zhuǎn)移回默認(rèn)的用戶自己的QoS上[6]。
1.2.4 PBSpro
在PBSpro(PBS professional)環(huán)境中,利用作業(yè)隊(duì)列具有的軟限制功能,將每個(gè)用戶的計(jì)劃CPU配額設(shè)為其專用的軟限制數(shù)(max_run_res_soft.ncpus)。用戶可超過這一限制提交作業(yè),其他未超過限制用戶可通過PBSpro提供的機(jī)制自動(dòng)擠占超過軟限制的用戶的作業(yè)。在PBSpro系統(tǒng)中,不需要單獨(dú)編制調(diào)度策略控制程序,只需根據(jù)該調(diào)度系統(tǒng)的機(jī)制進(jìn)行參數(shù)配置即可[7]。
基于用戶CPU配額的搶占策略能明顯提高系統(tǒng)資源利用率,但因過多的搶占造成的機(jī)時(shí)損失有時(shí)也是不容忽視的。因此本研究后期在不同的集群上對搶占策略進(jìn)行了一些調(diào)整,如:根據(jù)作業(yè)規(guī)模、等待時(shí)間和任務(wù)緊迫性等決定是否立即搶占或延遲搶占等等,這樣進(jìn)一步提高了管理的有效性和資源利用率。
通常情況下,當(dāng)某套集群資源比較緊張而大量排隊(duì)等待時(shí),如果要利用其他集群的空閑資源,用戶必須手工發(fā)命令查詢一套或多套集群系統(tǒng)上的運(yùn)行狀態(tài),進(jìn)行比較選擇,然后將程序、數(shù)據(jù)文件復(fù)制到選中的集群上,再登錄到該集群上提交作業(yè),作業(yè)結(jié)束時(shí)再將結(jié)果復(fù)制回原來的集群中,相關(guān)操作相當(dāng)繁瑣。此外,用戶也難以隨時(shí)發(fā)現(xiàn)其他集群的空閑資源。
多集群遷移調(diào)度系統(tǒng)的基本目標(biāo)是在多套集群系統(tǒng)之上建立統(tǒng)一的資源管理和作業(yè)調(diào)度平臺(tái),使計(jì)算中心局域網(wǎng)范圍內(nèi)的用戶能夠不必查詢其他集群資源使用情況,而面向全局提交計(jì)算作業(yè),用戶數(shù)據(jù)文件能夠自動(dòng)遷移到調(diào)度系統(tǒng)選定或者由用戶指定的其他任意集群系統(tǒng)上運(yùn)行,使整個(gè)中心內(nèi)的計(jì)算資源得到充分有效利用。
遷移調(diào)度系統(tǒng)具體實(shí)現(xiàn)的功能包括:當(dāng)某套集群上有面向全局提交的作業(yè)排隊(duì)時(shí),自動(dòng)發(fā)現(xiàn)在其他集群中的空閑計(jì)算資源,選擇運(yùn)行作業(yè)的目標(biāo)集群,將作業(yè)文件上傳到該集群上,并編譯源程序(可選),然后將作業(yè)提交給目標(biāo)集群上的調(diào)度軟件運(yùn)行,同時(shí)監(jiān)控作業(yè)運(yùn)行狀態(tài),運(yùn)行結(jié)束后自動(dòng)將結(jié)果文件下載到原發(fā)送集群。
遷移調(diào)度系統(tǒng)在每套Linux集群上實(shí)時(shí)運(yùn)行一系列監(jiān)控和處理程序模塊,這些模塊與各集群本地的資源管理調(diào)度系統(tǒng)進(jìn)行交互,同時(shí)不同集群上的模塊可以相互調(diào)用,實(shí)現(xiàn)各集群上可用資源和作業(yè)狀態(tài)的實(shí)時(shí)監(jiān)控、遷移目標(biāo)選擇、數(shù)據(jù)傳輸、作業(yè)異地運(yùn)行、運(yùn)行結(jié)果下載和狀態(tài)查詢等功能。
遷移調(diào)度系統(tǒng)程序模塊采用Linux Shell Script腳本語言編程實(shí)現(xiàn),在腳本中調(diào)用一系列操作系統(tǒng)以及各集群本地調(diào)度系統(tǒng)的命令[8]。集群間模塊調(diào)用和數(shù)據(jù)傳輸采用SSH機(jī)制,模塊定期運(yùn)行采用crontab機(jī)制實(shí)現(xiàn)[2]。
2.2.1 模塊化系統(tǒng)部件組成結(jié)構(gòu)
多集群環(huán)境作業(yè)遷移調(diào)度子系統(tǒng)運(yùn)行在各集群的本地作業(yè)調(diào)度系統(tǒng)之上。在各集群上的程序模塊結(jié)構(gòu)是相同的,完成的功能包括作業(yè)提交、資源查詢、作業(yè)調(diào)度遷移、作業(yè)傳輸、數(shù)據(jù)作業(yè)接收運(yùn)行、運(yùn)行狀態(tài)查詢、作業(yè)中止、結(jié)果數(shù)據(jù)傳輸處理等。系統(tǒng)分模塊基本功能結(jié)構(gòu)如圖1所示。
圖1 多集群調(diào)度子系統(tǒng)結(jié)構(gòu)
2.2.2 模塊處理流程和全局作業(yè)狀態(tài)
全局作業(yè)處理基本流程為:
1) 用戶在某套集群上使用全局作業(yè)提交命令mgsub將數(shù)據(jù)目錄、程序名稱、處理器數(shù)量等信息提交到申請隊(duì)列文件中。
2) 調(diào)度程序mgsched通過crontab機(jī)制周期性運(yùn)行,檢查寫入請求的文件,對每個(gè)全局作業(yè)判斷本地集群處理器數(shù)量是否可以滿足作業(yè)運(yùn)行要求。如果不能滿足,則依次調(diào)用各套集群上的資源使用查詢程序findavl檢查其他集群上的空閑資源是否能滿足全局作業(yè)的需要,查詢順序根據(jù)各集群的性能規(guī)模等設(shè)定;如其他某套集群能滿足需要,則將其定為遷移運(yùn)行的目標(biāo)集群,將作業(yè)信息寫入目的端和源端集群的全局作業(yè)隊(duì)列中。
3) 目標(biāo)端集群的全局作業(yè)檢查程序周期性運(yùn)行,掃描寫入目標(biāo)端全局作業(yè)隊(duì)列的內(nèi)容。當(dāng)發(fā)現(xiàn)有新的記錄時(shí),調(diào)用全局作業(yè)運(yùn)行處理程序mgproc。該處理程序執(zhí)行命令將全局作業(yè)的有關(guān)文件從源端上傳到目標(biāo)端指定目錄。如果需要可先進(jìn)行源程序編譯,然后按全局作業(yè)的要求向目標(biāo)端本地的調(diào)度系統(tǒng)提交請求,并產(chǎn)生本地運(yùn)行作業(yè)。本地調(diào)度系統(tǒng)將作業(yè)分配發(fā)送到計(jì)算節(jié)點(diǎn)上運(yùn)行。
4) 用戶可以在源端集群上使用mgstat命令查看全局作業(yè)的狀態(tài),也可以用mgstop命令中止全局作業(yè)的處理過程,包括停止正在運(yùn)行的目標(biāo)端本地作業(yè)。
5) 當(dāng)本地作業(yè)的計(jì)算完成或中途退出后,mgproc程序?qū)⒛繕?biāo)端程序目錄包括結(jié)果文件、屏幕輸出文件全部下載到源端集群提交作業(yè)的目錄下。
全局作業(yè)狀態(tài)(request stat)包括:
Waiting:遷移計(jì)算請求已提交到目標(biāo)集群等待處理。
Uploading:正在向目標(biāo)端集群上傳作業(yè)有關(guān)目錄和文件。
Making:源程序正在進(jìn)行編譯。
Submitted:已提交給本地調(diào)度系統(tǒng),生成本地作業(yè)。
Downloading:本地作業(yè)已完成或退出,正在向源端集群下載有關(guān)目錄和文件。
End:全局作業(yè)已完成處理過程結(jié)束。
Aborted:在處理過程中異常退出。
Stoped:被命令主動(dòng)中止。
各主要模塊處理流程和全局作業(yè)狀態(tài)變化關(guān)系如圖2所示。
圖2 模塊處理流程和全局作業(yè)狀態(tài)
2.3.1 實(shí)現(xiàn)多種作業(yè)調(diào)度系統(tǒng)平臺(tái)的集成
遷移調(diào)度子系統(tǒng)通過執(zhí)行本地調(diào)度系統(tǒng)提供的一系列命令與各個(gè)調(diào)度系統(tǒng)進(jìn)行交互,實(shí)現(xiàn)了在多套安裝運(yùn)行LSF、PBSpro、slurm等不同商用和開源作業(yè)調(diào)度系統(tǒng)的集群上的作業(yè)統(tǒng)一調(diào)度和遷移計(jì)算平臺(tái)。同時(shí),本遷移調(diào)度系統(tǒng)實(shí)現(xiàn)了UPQPP基本管理調(diào)度策略在多集群范圍內(nèi)的集成運(yùn)行,進(jìn)一步提高了計(jì)算中心的資源有效利用。
2.3.2 平行化的功能結(jié)構(gòu)和簡捷的調(diào)度遷移策略
遷移調(diào)度系統(tǒng)在各集群上的功能模塊結(jié)構(gòu)是完全對稱平行的,系統(tǒng)沒有主控機(jī)或主控處理程序,各集群的管理節(jié)點(diǎn)上都具有所有的源端和目的端的程序模塊,各集群都可以以相同的方式提交或接收全局計(jì)算作業(yè)。因此,系統(tǒng)不需要實(shí)時(shí)搜集各集群狀態(tài)和作業(yè)信息,僅在有作業(yè)提交或查詢請求時(shí)才跨集群進(jìn)行狀態(tài)信息搜索,降低了集群之間的通信流量。
本套遷移調(diào)度系統(tǒng)的結(jié)構(gòu)和策略比較適應(yīng)一個(gè)計(jì)算中心局域網(wǎng)范圍內(nèi)的多套集群系統(tǒng)的應(yīng)用環(huán)境。在用的集群系統(tǒng)的套數(shù)在10套以內(nèi),而且各集群上用戶的計(jì)算主要還是在本地系統(tǒng)完成,跨集群的遷移調(diào)度是作為一種補(bǔ)充的便利手段來幫助增強(qiáng)計(jì)算資源的有效利用。按集群系統(tǒng)的性能順序搜索空閑資源的策略雖然可能使作業(yè)調(diào)度的響應(yīng)時(shí)間稍長,但平常開銷較低,而且每個(gè)調(diào)度周期內(nèi)資源查詢的結(jié)果可供本周期提交的所有全局作業(yè)使用,因此能夠很好地滿足批量作業(yè)調(diào)度的要求。
2.3.3 采用文本文件記錄全局作業(yè)運(yùn)行調(diào)度狀態(tài)
各集群系統(tǒng)管理節(jié)點(diǎn)目錄下完全通過文本文件實(shí)現(xiàn)記錄發(fā)送和接收全局作業(yè)信息和運(yùn)行狀態(tài)的多個(gè)隊(duì)列。遷移調(diào)度系統(tǒng)的shell腳本模塊通過sed、awk等工具對這些文本文件內(nèi)容進(jìn)行添加、刪除、修改等操作。對于本套系統(tǒng)的環(huán)境而言,處理文本文件相比數(shù)據(jù)庫記錄有簡捷便利之處,也完全能滿足實(shí)際需要。
2.3.4 對全局作業(yè)批量提交的處理
通常一個(gè)大的計(jì)算任務(wù)需要?jiǎng)澐置芗木W(wǎng)格,一套程序由大量的條件參數(shù)組合。實(shí)際使用環(huán)境中用戶通常同時(shí)提交一批計(jì)算作業(yè)。這些作業(yè)的執(zhí)行文件和相關(guān)數(shù)據(jù)文件大多處于平行的一批子目錄下,而且可能數(shù)十個(gè)作業(yè)共用某一個(gè)子目錄中的網(wǎng)格數(shù)據(jù)大文件。當(dāng)全局作業(yè)需要批量遷移到其他集群上運(yùn)行時(shí),本調(diào)度系統(tǒng)可以自動(dòng)將每個(gè)全局作業(yè)的執(zhí)行目錄上傳到目標(biāo)集群定制好的目錄中,而不需要用戶逐個(gè)指定,共享的網(wǎng)格數(shù)據(jù)大文件只需要上傳一次而不會(huì)重復(fù)傳輸,以減少上傳通信量。批量上傳可同時(shí)并發(fā)以提高批量作業(yè)調(diào)度的效率,但同時(shí)調(diào)度的作業(yè)數(shù)量也會(huì)得到控制以避免網(wǎng)絡(luò)擁塞。
運(yùn)行在各套計(jì)算機(jī)系統(tǒng)上的跨集群作業(yè)遷移調(diào)度系統(tǒng)對整個(gè)中心計(jì)算資源的利用起到了自動(dòng)優(yōu)化調(diào)節(jié)的作用。為了對UPQPP策略以及多集群遷移調(diào)度子系統(tǒng)進(jìn)行通用化的評測,本研究編寫了模擬各集群上作業(yè)隨機(jī)提交、運(yùn)行和搶占的腳本程序進(jìn)行模擬測試。在程序編寫中假設(shè)每套集群的計(jì)算核相等,在測試時(shí)間段內(nèi)提交作業(yè)的總計(jì)算量相當(dāng)。
在模擬程序中,一個(gè)并行計(jì)算作業(yè)可由3個(gè)參數(shù)描述:計(jì)算核數(shù)c、作業(yè)完成所需時(shí)間t和作業(yè)提交時(shí)間。這3個(gè)參數(shù)在各套集群上批量隨機(jī)生成。
定義資源總空閑
(1)
式中:H為總的模擬小時(shí)數(shù),也是模擬循環(huán)調(diào)度的次數(shù);i為每次調(diào)度時(shí)的空閑計(jì)算核數(shù);T為集群總計(jì)算核數(shù)。以R估量調(diào)度的效果,R值越小,說明調(diào)度策略的效果越好。
表1給出了使用程序模擬用戶資源預(yù)留限制策略以及改進(jìn)的UPQPP調(diào)度策略得到的資源空閑率的部分結(jié)果。根據(jù)實(shí)際使用環(huán)境的基本情況,集群CPU總核數(shù)設(shè)為3 000個(gè),提交作業(yè)的用戶數(shù)量設(shè)定為30個(gè),作業(yè)提交的時(shí)間點(diǎn)在整個(gè)測試時(shí)間區(qū)間內(nèi)隨機(jī)生成。表中c是隨機(jī)生成的各作業(yè)核數(shù),t是隨機(jī)生成的各作業(yè)運(yùn)行時(shí)間長度小時(shí)數(shù)。在設(shè)定的每種參數(shù)組合下生成10次以上不同的批量作業(yè),每生成一批作業(yè),即通過運(yùn)行兩種不同的策略的測試程序,測試結(jié)果取平均值。
表1 UPQPP策略效果模擬測試數(shù)據(jù)
從表1可以看出,使用UPQPP調(diào)度策略在用戶較為均衡地提交不同規(guī)模及時(shí)間長度的作業(yè)條件下,比硬性限制用戶CPU核資源的方式明顯產(chǎn)生較少的資源空閑。因此,UPQPP是一種便捷且有效的調(diào)度策略。
表2為遷移調(diào)度系統(tǒng)的測試結(jié)果。設(shè)定總共10套集群系統(tǒng),每套集群計(jì)算核1 000個(gè),測試模擬時(shí)間1 000 h,程序在相同條件下運(yùn)行10次取平均值,以比較多套集群各自運(yùn)行批量作業(yè)和跨集群作業(yè)遷移調(diào)度的過程。表中c和t的定義和表1相同。
表2 遷移調(diào)度子系統(tǒng)效果模擬測試數(shù)據(jù)
從表2可以看出,在不同計(jì)算核規(guī)模及運(yùn)行時(shí)間長度的作業(yè)情況下,跨集群調(diào)度在各集群計(jì)算量基本平衡時(shí)使得整體的空閑CPU時(shí)間比例有較明顯的減少,尤其是在作業(yè)規(guī)模和運(yùn)行時(shí)間差異大且產(chǎn)生較高比例空閑的時(shí)候。而在實(shí)際運(yùn)行時(shí)由于不同用戶在批量提交作業(yè)時(shí)間點(diǎn)上的差異,可能造成某些時(shí)間段各集群使用負(fù)載不均衡程度更高,此時(shí)跨集群調(diào)度系統(tǒng)對資源利用的優(yōu)化作用也會(huì)更加明顯。
本文針對高性能計(jì)算中心內(nèi)基于多種不同調(diào)度軟件平臺(tái)的多Linux集群系統(tǒng)環(huán)境下的應(yīng)用特點(diǎn)和管理調(diào)度問題,通過編程建立了跨平臺(tái)的多集群統(tǒng)一調(diào)度機(jī)制,為用戶使用提供了統(tǒng)一的命令接口,減輕了用戶查找資源和數(shù)據(jù)傳輸?shù)炔僮鞯墓ぷ髁俊8骷簝?nèi)部實(shí)施了基于CPU計(jì)算核配額的作業(yè)搶占策略。程序模擬和實(shí)際運(yùn)用證明,該調(diào)度策略與遷移調(diào)度處理系統(tǒng)相結(jié)合,可以切實(shí)提高計(jì)算中心整體計(jì)算資源利用率和實(shí)際操作的工作效率。