網(wǎng)格中比較CPU計算能力的一種方法
引 言
在網(wǎng)格計算中,常常需要使用多臺計算機(jī)協(xié)同工作完成一臺超級計算機(jī)才能完成的計算任務(wù),為實現(xiàn)上述目標(biāo),首先應(yīng)通過網(wǎng)格信息服務(wù)獲得網(wǎng)格中各臺主機(jī)CPU計算能力的指標(biāo),然后進(jìn)行判斷選擇,決定由哪些主機(jī)參與計算。
當(dāng)前,已有的網(wǎng)格信息服務(wù)模塊、網(wǎng)格監(jiān)控模塊,如MDS2將系統(tǒng)平均負(fù)載作為反映CPU狀態(tài)的動態(tài)指標(biāo)提供給用戶;另外,通過系統(tǒng)命令或系統(tǒng)調(diào)用也可以獲得 CPU使用率這個動態(tài)指標(biāo)。系統(tǒng)平均負(fù)載是在特定時間間隔內(nèi)運(yùn)行隊列中的平均進(jìn)程數(shù),CPU使用率表示CPU使用程度的指標(biāo),能夠反映出CPU的工作狀態(tài),但由于網(wǎng)格中CPU型號性能的差異,因此,無法用它們直接比較網(wǎng)格中CPU的計算能力。
為直接比較網(wǎng)格中主機(jī) CPU的計算能力,獲得具有可比性的反映CPU計算能力的指標(biāo),我們采用計算量動態(tài)選擇算法,在各臺主機(jī)上周期性地瞬間執(zhí)行計算量適中的Whestone 基準(zhǔn)計算,通過PAPI接口編程對CPU所完成的浮點數(shù)計算進(jìn)行精確計數(shù),用得到的每秒百萬浮點數(shù)MFLOPS作為比較主機(jī)CPU計算能力的指標(biāo),定義為 WMFLOPS。得到WMFLOPS后,通過Globus提供的監(jiān)控和發(fā)現(xiàn)服務(wù)(Monitoring and Discovery Service,MDS),將該指標(biāo)作為資源信息進(jìn)行發(fā)布,作為比較網(wǎng)格節(jié)點CPU計算能力的依據(jù),為用戶選擇計算節(jié)點提供參考。我們編寫了程序 WfpSensor用于上述方法的實現(xiàn)。WfpSensor作為傳感器工作于網(wǎng)格中的各個節(jié)點,周期性地對CPU進(jìn)行計算測試,獲得WMFLOPS的返回值,同時,WfpSensor也是MDS服務(wù)中的本地信息提供者,定時將最新的WMFLOPS值傳遞給MDS系統(tǒng),供用戶查閱。
計算測試子程序
CPU 的計算能力主要體現(xiàn)在浮點數(shù)計算能力、定點數(shù)計算能力和矩陣計算能力等方面,其中某一類程序在CPU上運(yùn)行的效果并不能全面地反映CPU的計算能力,所以許多國際基準(zhǔn)組織開發(fā)了測試CPU計算能力的基準(zhǔn)測試程序,在這類程序中進(jìn)行的操作和運(yùn)算可以相對全面客觀地考察CPU的計算能力。本文方法采用綜合型基準(zhǔn)測試程序Whestone作為WfpSensor的計算測試子程序,Whestone程序中主要包括浮點運(yùn)算、整數(shù)運(yùn)算、涉及到數(shù)組下標(biāo)索引、子程序調(diào)用、參數(shù)傳遞、條件轉(zhuǎn)移和三角/超越函數(shù)等,可以綜合考察CPU提供的計算能力。
返回指標(biāo)WM FLOPS
WfpSensor 進(jìn)程對CPU進(jìn)行計算測試后,取出CPU在測試過程中的指標(biāo)來反映CPU的計算能力。絕大多數(shù)網(wǎng)格計算都是科學(xué)計算,而浮點計算是科學(xué)計算程序中最主要的計算,所以選用每秒百萬浮點數(shù)MFLOPS作為反映CPU計算能力的指標(biāo)。MFLOPS反映了CPU的浮點計算能力,并且MFLOPS是基于操作而非指令的,可以用它來比較兩種不同CPU的計算能力。由于是調(diào)用Whestone程序進(jìn)行測試所得的結(jié)果,因此定義該指標(biāo)為WMFLOPS。
指標(biāo)精確計數(shù)
指標(biāo)確定后,如何在WfpSensor中精確得到Whestone計算結(jié)束后的WMFLOPS值成為問題的關(guān)鍵。由美國田納西大學(xué)計算機(jī)學(xué)院創(chuàng)新計算實驗室開發(fā)的標(biāo)準(zhǔn)應(yīng)用編程接口PAPI( portable application programming interface)能夠滿足上述要求。該軟件通過CPU上的硬件計數(shù)器,對CPU運(yùn)行時產(chǎn)生的某些事件進(jìn)行計數(shù),并建立了一個標(biāo)準(zhǔn)應(yīng)用編程接口方便用戶讀出計數(shù)器的值,通過這些值就可以了解當(dāng)前CPU的工作狀態(tài)。由于CPU生產(chǎn)廠商及型號的不同,CPU硬件計數(shù)器所計數(shù)的硬件事件會有所不同,為標(biāo)準(zhǔn)化指標(biāo)的名稱,使同一工具可以計數(shù)相似的可比較事件,促進(jìn)跨平臺調(diào)試程序的能力,PAPI開發(fā)者選擇了一套和調(diào)試應(yīng)用程序相關(guān)的硬件事件稱為預(yù)定義事件,作為反映CPU當(dāng)前工作狀態(tài)的指標(biāo)。這些指標(biāo)是跨平臺的通用事件,包括了大部分主流RISC類事件,并且盡可能把這些預(yù)定義事件映射到給定CPU的硬件計數(shù)器事件中。在本文方法中,使用了PAPI_FP_INS這個PAPI預(yù)定義事件,它表示進(jìn)程執(zhí)行過程中完成的浮點數(shù)計算。PAPI提供了精確的計時器,精確到微秒,能夠準(zhǔn)確地對進(jìn)程的執(zhí)行時間進(jìn)行計時,如果經(jīng)計數(shù),PAPI_FP_INS事件總數(shù)為n,計算執(zhí)行時間為t(單位:μs) ,那么WMFLOPS=n/t。
計算量動態(tài)選擇
采用計算測試CPU的計算能力,必須保證以下兩點:
(1) 測試進(jìn)程應(yīng)盡可能不影響CPU的正常工作,當(dāng)然由于測試進(jìn)程的引入必將影響到CPU正常運(yùn)行,應(yīng)設(shè)法讓這種影響降到一個可以接受的程度,并且使計算給系統(tǒng)帶來的開銷盡可能小。
(2) 測試進(jìn)程要有一定的計算量,如果計算量過小,會使初始化、函數(shù)調(diào)用等操作消耗的時間在進(jìn)程的執(zhí)行時間t中占有較大的比重,從而使WMFLOPS的值比真實值小,影響測試結(jié)果的精確性。
為同時保證(1)需要較小的計算量和(2)需要較大的計算量,選擇合適的測試計算量十分重要,為此,提出采用計算量動態(tài)選擇的算法確定計算量。
計算量的大小控制可以通過改變WfpSensor中調(diào)用Whestone程序的次數(shù)(NUM_LOOPS)實現(xiàn)。假定使計算執(zhí)行時間t(單位:s)在 0.5~1.5的計算量是合理值,計算量調(diào)節(jié)系數(shù)為xs。WfpSensor啟動時,NUM_LOOPS賦初值。調(diào)用Whestone計算結(jié)束后,如果:
(1) 0.5≤t≤1.5,在合理區(qū)間內(nèi),NUM_LOOPS的值保持不變。
(2) t>1.5,計算量偏大,下次測試應(yīng)減小Whestone的調(diào)用次數(shù),則NUM_LOOPS=NUM_LOOPS/xs。xs為t四舍五入后的整數(shù)值。
(3) t<0.5,計算量偏小,下次測試應(yīng)增加Whestone的調(diào)用次數(shù),則NUM_LOOPS=NUM_LOOPS3xs。xs為(1/t)四舍五入后的整數(shù)值。
具體算法如下:
start_usec=PAPI_get_real_usec();//通過PAPI函數(shù)獲得計算開始時的時刻
do_wst(NUM_LOOPS);//Whestone寫成函數(shù),對它進(jìn)行調(diào)用,NUM_LOOPS是調(diào)用次數(shù)
end_usec=PAPI_get_real_usec();//通過PAPI函數(shù)獲得計算結(jié)束時的時刻
t=(end_usec-start_usec);//獲得計算執(zhí)行的時間
if(t>1.5)//根據(jù)本次計算執(zhí)行時間決定下次測試的調(diào)用次數(shù)
{
if((t-floor(t))>0.5)//取最靠近t的整數(shù)
xs=floor(t)+1;
else
xs=floor(t)
NUM_LOOPS=NUM_LOOPS/xs;//修改調(diào)用次數(shù)
}
else
if(t<0.5)
{
if((1/t-floor(1/t))>0.5)//取最靠近1/t的整數(shù)
xs=floor(1/t)+1;
else
xs=floor(1/t);
NUM_LOOPS =NUM_LOOPS3xs;//修改調(diào)用次數(shù)
}
性能評價
為證實本文方法檢測CPU計算能力的效果,在使用Intel賽揚(yáng)1.3 GHz CPU的主機(jī)上(操作系統(tǒng)為WindowsXP),運(yùn)行WfpSensor,做以下實驗。在實驗中,使用計算π值的科學(xué)計算軟件Superπ和另一基準(zhǔn)測試軟件Linpack作為主機(jī)的計算任務(wù),WfpSensor設(shè)置為每10s采樣一次。為使檢測效果具有可比性,我們編寫了檢測CPU使用率的另一程序 CPUusage對CPU的使用率進(jìn)行記錄,CPUusage也是每10s采樣一次。在同樣的計算條件下,分別由WfpSensor和CPUusage對 CPU的計算能力進(jìn)行測試。
穩(wěn)定性
本實驗檢測WfpSensor和 CPUusage測試數(shù)據(jù)的穩(wěn)定性,機(jī)器啟動后,不運(yùn)行任何程序,分別用WfpSensor和CPUusage進(jìn)行5min測試,所得 WMFLOPS,NUM_LOOPS和CPU使用率如圖1所示,NUM_LOOPS初始值為4000。
由圖1可見,在未運(yùn)行任何用戶程序時,與CPUusage所測數(shù)據(jù)一樣,WfpSensor所測數(shù)據(jù)是穩(wěn)定的,都可以反映出CPU的計算能力。
圖1
靈敏性
檢測WfpSensor和CPUusage對CPU計算負(fù)載變化的靈敏性。在監(jiān)控程序啟動35s后,運(yùn)行Superπ(計算1M位π值),再過45s運(yùn)行 Linpack。5min15s結(jié)束測試,所得WMFLOPS,NUM_LOOPS和CPU使用率如圖2所示。
電子工程世界首頁 》單片機(jī) 》 其他技術(shù) 》
網(wǎng)格中比較CPU計算能力的一種方法 (3)
2012-04-06 18:58:21 作者:郭 東,鞠九濱,胡 亮 來源:吉林大學(xué)學(xué)報
關(guān)鍵字:網(wǎng)格 CPU 計算能力 發(fā)現(xiàn)服務(wù)
圖2
由圖2可見,WfpSensor能夠根據(jù)CPU當(dāng)前狀態(tài)自動選擇計算量,WMFLOPS的值能夠反映出CPU計算能力的動態(tài)變化情況,而CPU使用率的值則不能動態(tài)反映CPU的計算能力。
測試開銷
用測試計算的運(yùn)行時間說明這個問題。在圖2(A)的實驗中,記錄了測試計算的執(zhí)行時間如圖3所示。在設(shè)計算法時,已假定測試計算執(zhí)行時間在0.5~1.5 s范圍內(nèi)是合理值,即為可以接受的測試開銷。如圖3所示,除4個拐點的測試計算執(zhí)行時間值外,其他測試計算執(zhí)行時間值穩(wěn)定于1s左右,符合要求。當(dāng)然,如果認(rèn)為1 s的測試執(zhí)行時間開銷較大,還可以根據(jù)實際情況修改算法,設(shè)置合理的測試計算執(zhí)行時間的區(qū)間。
圖3
實驗結(jié)論
以上實驗數(shù)據(jù)證明,WfpSensor將PAPI和Whestone結(jié)合使用測試CPU計算能力的方法是可行的,而且準(zhǔn)確、有效。動態(tài)計算量的選擇保證了 WfpSensor的測試計算開銷保持在合理的范圍內(nèi),PAPI提供的獨立于硬件和操作系統(tǒng)的編程接口保證了返回指標(biāo)計數(shù)的精確性。
WfpSensor的網(wǎng)格應(yīng)用
WfpSenor跨平臺使用的可行性
WfpSensor 的返回指標(biāo)WMFLOPS可以反映出一臺主機(jī)CPU不同時刻的計算能力,可以用于相同平臺或不同平臺主機(jī)CPU計算能力的比較。首先,WMFLOPS是 Whestone程序結(jié)束后返回的MFLOPS值,浮點計算是基于操作而非指令的,所以它可以用來比較不同CPU的計算能力。其次,WMFLOPS是使用 PAPI編程接口通過CPU硬件計數(shù)器對PAPI_FP_INS事件進(jìn)行計數(shù)的值除以測試進(jìn)程的執(zhí)行時間t得到的,PAPI具有跨平臺性,這為 WfpSensor應(yīng)用于具有較大物理異構(gòu)性的網(wǎng)格環(huán)境提供了極大的支持;同時,PAPI_FP_INS是PAPI定義的標(biāo)準(zhǔn)化預(yù)定義事件,對于不同 CPU的比較更具參考性。
WfpSensor數(shù)據(jù)的發(fā)布
采用Globus中的監(jiān)控和發(fā)現(xiàn)服務(wù)(MDS)將WfpSensor測得的WMFLOPS值發(fā)布出來,供用戶查詢和訂閱。MDS的功能包括信息的發(fā)現(xiàn)、注冊、查詢、修改、注銷等。WfpSensor作為WMFLOPS信息的提供者通過軟狀態(tài)注冊協(xié)議向MDS進(jìn)行注冊,并定期向MDS提供數(shù)據(jù),用戶可以通過MDS系統(tǒng)查詢網(wǎng)格中各主機(jī)CPU的WMFLOPS值,用戶也可以向MDS訂閱WMFLOPS信息,從而了解WMFLOPS值的更新和變化。
CPU計算能力的比較
WMFLOPS 值反映了某一時刻主機(jī)CPU所能提供給新進(jìn)程的計算能力,因此WMFLOPS值越大,則說明主機(jī)CPU所能提供的計算能力越強(qiáng)。例如,用戶需要選取網(wǎng)格中的幾個節(jié)點進(jìn)行網(wǎng)格計算,通過MDS查詢得到網(wǎng)格中5個節(jié)點A,B,C,D,E的最新WMFLOPS值分別為 150.78,89.65,225.38,50.22,189.62,如果僅從CPU計算能力方面考慮,則節(jié)點選擇的順序依次為C,E,A,B,D。也可以將WMFLOPS值結(jié)合MDS提供的內(nèi)存使用率等系統(tǒng)信息綜合考慮選擇計算節(jié)點。
綜上可見,本文提出了一種對網(wǎng)格中各節(jié)點CPU計算能力進(jìn)行直接比較的方法?;鶞?zhǔn)計算測試程序的應(yīng)用保證了測試的全面性、客觀性;計算量動態(tài)選擇算法保證了測試進(jìn)程既能精確地進(jìn)行測試,又不至于給系統(tǒng)帶來過多的開銷;通過PAPI接口,利用CPU計數(shù)器對指標(biāo)精確計數(shù),保證了數(shù)據(jù)的準(zhǔn)確性;PAPI的跨平臺性保證了本方法可以應(yīng)用于軟硬件差別較大的網(wǎng)格環(huán)境中。實驗證明,本文方法能夠穩(wěn)定、靈敏地反映CPU的計算能力,用其比較不同CPU的計算能力正確、有效。