專利名稱:一種基于內(nèi)存緩存技術(shù)的多核系統(tǒng)容錯(cuò)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及并行計(jì)算機(jī)領(lǐng)域的容錯(cuò)方法,尤其指一種多核系統(tǒng)上基于 內(nèi)存緩存技術(shù)的容錯(cuò)方法。
背景技術(shù):
當(dāng)前通過提高頻率來提高芯片性能的半導(dǎo)體技術(shù)發(fā)展思路很難持續(xù)下 去,在單個(gè)芯片上多個(gè)處理器核(多核)來提供更高的系統(tǒng)吞吐率方法已經(jīng)成為摩爾定律 繼續(xù)適用的主要方式。為了使得并行計(jì)算機(jī)系統(tǒng)性能持續(xù)提高,當(dāng)前的并行計(jì)算機(jī)系統(tǒng)使 用了大量的多核處理器和大容量存儲(chǔ)器,例如IBM BlueGene/L系統(tǒng)包括了幾十萬個(gè)CPU 核。采用這樣大量CPU核和大容量存儲(chǔ)器的系統(tǒng)經(jīng)常面臨著系統(tǒng)單點(diǎn)故障和全系統(tǒng)故障, 系統(tǒng)無故障運(yùn)行的時(shí)間可能只有幾個(gè)小時(shí)。并行計(jì)算機(jī)系統(tǒng)的可靠性沒有明顯的提高,甚 至隨著系統(tǒng)規(guī)模的增大,可靠性降低。為了將應(yīng)用擴(kuò)展到幾十萬并發(fā)度的水平,需要容錯(cuò)技 術(shù)保證在單點(diǎn)或者全系統(tǒng)故障情況下應(yīng)用能夠持續(xù)運(yùn)行。檢查點(diǎn)技術(shù)是當(dāng)前并行計(jì)算機(jī)采用的主要容錯(cuò)技術(shù),應(yīng)用程序的狀態(tài)被定期保存 到穩(wěn)定存儲(chǔ)設(shè)備上,當(dāng)系統(tǒng)出現(xiàn)故障時(shí),應(yīng)用可以從檢查點(diǎn)映像中恢復(fù)執(zhí)行。系統(tǒng)級檢查點(diǎn) 是經(jīng)常被采用的方法之一。如圖1是當(dāng)前多核系統(tǒng)上采用傳統(tǒng)系統(tǒng)級檢查點(diǎn)方法的軟硬件部署。并行計(jì)算機(jī) 系統(tǒng)由多個(gè)計(jì)算節(jié)點(diǎn)、一個(gè)管理節(jié)點(diǎn)和一個(gè)磁盤I/O系統(tǒng)構(gòu)成。計(jì)算節(jié)點(diǎn)完成計(jì)算功能, 一個(gè)計(jì)算節(jié)點(diǎn)由多個(gè)處理器和一個(gè)共享的存儲(chǔ)器構(gòu)成,每個(gè)處理器包括多個(gè)(一般為偶數(shù) 個(gè))處理器核。管理節(jié)點(diǎn)完成系統(tǒng)管理功能。磁盤I/O系統(tǒng)是當(dāng)前計(jì)算機(jī)系統(tǒng)主流的存儲(chǔ) 設(shè)備,具有數(shù)據(jù)非易失性,用于保存應(yīng)用程序和數(shù)據(jù)。計(jì)算節(jié)點(diǎn)之間由高速計(jì)算網(wǎng)絡(luò)連接,通過高速計(jì)算網(wǎng)絡(luò)進(jìn)行計(jì)算過程中的通信。 計(jì)算節(jié)點(diǎn)、管理節(jié)點(diǎn)和磁盤I/O系統(tǒng)之間通過存儲(chǔ)網(wǎng)絡(luò)連接,通過存儲(chǔ)網(wǎng)絡(luò)向磁盤I/O系統(tǒng) 傳輸程序、數(shù)據(jù)。計(jì)算節(jié)點(diǎn)、磁盤I/O系統(tǒng)和管理節(jié)點(diǎn)之間通過管理網(wǎng)絡(luò)連接,管理節(jié)點(diǎn)通 過管理網(wǎng)絡(luò)提交作業(yè),維護(hù)計(jì)算節(jié)點(diǎn)和I/O系統(tǒng)。計(jì)算節(jié)點(diǎn)上安裝有操作系統(tǒng)、作業(yè)管理系統(tǒng)、通信庫和全局文件系統(tǒng),管理節(jié)點(diǎn)安 裝有作業(yè)管理系統(tǒng)和全局文件系統(tǒng),磁盤I/O系統(tǒng)安裝有全局文件系統(tǒng)。應(yīng)用進(jìn)程映像的 保存需要計(jì)算節(jié)點(diǎn)上的操作系統(tǒng)內(nèi)核模塊的支持,這個(gè)內(nèi)核模塊稱為系統(tǒng)容錯(cuò)模塊。當(dāng)前 并行計(jì)算機(jī)都提供作業(yè)管理系統(tǒng),用于完成由管理節(jié)點(diǎn)到計(jì)算節(jié)點(diǎn)上作業(yè)的提交和管理。 作業(yè)一般是由計(jì)算節(jié)點(diǎn)上協(xié)作運(yùn)行的多個(gè)并行任務(wù)組成,作業(yè)管理系統(tǒng)通過管理網(wǎng)絡(luò)將并 行任務(wù)提交給計(jì)算節(jié)點(diǎn)運(yùn)行,并負(fù)責(zé)管理并行任務(wù)。計(jì)算節(jié)點(diǎn)運(yùn)行多個(gè)并行任務(wù),一個(gè)并行 任務(wù)至少包括一個(gè)計(jì)算線程,計(jì)算線程完成計(jì)算功能。多個(gè)計(jì)算節(jié)點(diǎn)的并行任務(wù)通過通信 庫利用高速計(jì)算網(wǎng)絡(luò)通信完成作業(yè)運(yùn)行,通信庫為每個(gè)節(jié)點(diǎn)上的并行任務(wù)分配了邏輯編號 ID。所有的并行任務(wù)通過全局文件系統(tǒng)接口和存儲(chǔ)網(wǎng)絡(luò)完成到磁盤I/O系統(tǒng)的數(shù)據(jù)存取。系統(tǒng)級檢查點(diǎn)方法是通過作業(yè)管理系統(tǒng)發(fā)起檢查點(diǎn)過程,計(jì)算線程進(jìn)入等待狀 態(tài),通過系統(tǒng)容錯(cuò)模塊清空通信庫建立的通信通道,保存全部待發(fā)送和已接收但未處理的 消息數(shù)據(jù),達(dá)到全局一致的狀態(tài),關(guān)閉通信通道,將整個(gè)應(yīng)用執(zhí)行的中間運(yùn)行狀態(tài)保存到磁 盤I/O系統(tǒng),然后計(jì)算線程恢復(fù)運(yùn)行。當(dāng)應(yīng)用程序出現(xiàn)運(yùn)行故障時(shí),讀取保存在磁盤I/O系 統(tǒng)的中間運(yùn)行狀態(tài),從最近的中間運(yùn)行狀態(tài)恢復(fù)應(yīng)用進(jìn)程執(zhí)行。這種方法保存了整個(gè)應(yīng)用
4進(jìn)程的物理內(nèi)存映像,不需要對應(yīng)用程序作任何修改,對用戶透明,使用方便。但是系統(tǒng)級檢查點(diǎn)方法數(shù)據(jù)存儲(chǔ)的開銷較高,當(dāng)前并行計(jì)算機(jī)一次內(nèi)存映像保存 就達(dá)到TB到PB的量級,而全局文件系統(tǒng)的帶寬僅僅為幾個(gè)GB到幾十個(gè)GB,單位GB內(nèi)存的 帶寬很低。例如2010年6月T0P500中性能排名最高的系統(tǒng)Cray Jaguar的單位GB內(nèi)存 的帶寬只有0. 8MB/s,曾經(jīng)排名最高的IBM Roadrunner的單位GB內(nèi)存的帶寬只有2MB/s, 因此檢查點(diǎn)過程中面臨的I/O瓶頸嚴(yán)重。在這樣大規(guī)模的系統(tǒng)上,一次全系統(tǒng)檢查點(diǎn)時(shí)間 可能需要幾十分鐘,這對于幾個(gè)小時(shí)進(jìn)行一次檢查點(diǎn)操作的應(yīng)用是很大的時(shí)間開銷。并且 多個(gè)系統(tǒng)結(jié)點(diǎn)同時(shí)產(chǎn)生大量1/0,在I/O網(wǎng)絡(luò)中產(chǎn)生競爭沖突。多個(gè)映像文件寫入同一個(gè) I/O系統(tǒng)產(chǎn)生擁塞,文件系統(tǒng)將不堪重負(fù),降低了系統(tǒng)的可靠性。如何基于當(dāng)前并行計(jì)算機(jī)的多核發(fā)展趨緩和可靠性亟待提高的需求,提供新的多 核系統(tǒng)容錯(cuò)方法是本領(lǐng)域技術(shù)人員極為關(guān)注的技術(shù)問題。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提出一種多核系統(tǒng)上基于內(nèi)存緩存的檢查點(diǎn)容錯(cuò)方 法,解決檢查點(diǎn)過程中對I/O資源的突發(fā)性需求,減少檢查點(diǎn)操作的時(shí)間。本發(fā)明分為兩個(gè)階段第一階段是為了支持容錯(cuò),應(yīng)用程序運(yùn)行期間對作業(yè)中間 運(yùn)行狀態(tài)保存的階段,稱為檢查點(diǎn)階段;第二階段是當(dāng)應(yīng)用程序出現(xiàn)錯(cuò)誤情況下,使用保存 的中間運(yùn)行狀態(tài)恢復(fù)應(yīng)用程序運(yùn)行的階段,稱為恢復(fù)階段。具體步驟如下第一階段即檢查點(diǎn)階段,應(yīng)用程序運(yùn)行期間對作業(yè)中間運(yùn)行狀態(tài)進(jìn)行保存,方法 如下第一步,部署并行計(jì)算機(jī)系統(tǒng)硬件和軟件。本發(fā)明采用的并行計(jì)算機(jī)硬件和傳統(tǒng) 系統(tǒng)級檢查點(diǎn)方法采用的系統(tǒng)相同,區(qū)別在于軟件的部署。部署方法是1. 1部署多個(gè)計(jì)算節(jié)點(diǎn)、一個(gè)管理節(jié)點(diǎn)和一個(gè)磁盤I/O系統(tǒng)。計(jì)算節(jié)點(diǎn)完成計(jì)算功能,一個(gè)計(jì)算節(jié)點(diǎn)由多個(gè)處理器和一個(gè)共享的存儲(chǔ)器構(gòu)成, 每個(gè)處理器包括偶數(shù)個(gè)處理器核。管理節(jié)點(diǎn)完成系統(tǒng)管理功能。磁盤I/O系統(tǒng)是當(dāng)前計(jì)算 機(jī)系統(tǒng)主流的存儲(chǔ)設(shè)備,具有數(shù)據(jù)非易失性,用于保存應(yīng)用程序和數(shù)據(jù)。1.2通過網(wǎng)絡(luò)完成連接。計(jì)算節(jié)點(diǎn)之間由高速計(jì)算網(wǎng)絡(luò)連接,通過高速計(jì)算網(wǎng)絡(luò)進(jìn)行計(jì)算過程中的通信。 計(jì)算節(jié)點(diǎn)、管理節(jié)點(diǎn)和磁盤I/O系統(tǒng)之間通過存儲(chǔ)網(wǎng)絡(luò)連接,通過存儲(chǔ)網(wǎng)絡(luò)向磁盤I/O系統(tǒng) 傳輸程序、數(shù)據(jù)。計(jì)算節(jié)點(diǎn)、磁盤I/O系統(tǒng)和管理節(jié)點(diǎn)之間通過管理網(wǎng)絡(luò)連接,管理節(jié)點(diǎn)通 過管理網(wǎng)絡(luò)提交作業(yè),維護(hù)計(jì)算節(jié)點(diǎn)和I/O系統(tǒng)。1.3軟件部署,方法是計(jì)算節(jié)點(diǎn)上安裝有操作系統(tǒng)、作業(yè)管理系統(tǒng)、通信庫和全局文件系統(tǒng),管理節(jié)點(diǎn)安 裝有作業(yè)管理系統(tǒng)和全局文件系統(tǒng),磁盤I/O系統(tǒng)安裝有全局文件系統(tǒng)。作業(yè)由計(jì)算節(jié)點(diǎn) 上協(xié)作運(yùn)行的多個(gè)并行任務(wù)組成,作業(yè)管理系統(tǒng)通過管理網(wǎng)絡(luò)將并行任務(wù)提交給計(jì)算節(jié)點(diǎn) 運(yùn)行,并負(fù)責(zé)管理并行任務(wù)。與傳統(tǒng)系統(tǒng)級檢查點(diǎn)不同,計(jì)算節(jié)點(diǎn)上的每個(gè)并行任務(wù)除了包 括一個(gè)計(jì)算線程以外,還包括一個(gè)用于支持容錯(cuò)的幫助線程,幫助線程在檢查點(diǎn)階段將緩 存在內(nèi)存的中間運(yùn)行狀態(tài)保存到磁盤I/O系統(tǒng),在恢復(fù)階段將中間運(yùn)行狀態(tài)從磁盤I/O系 統(tǒng)讀入到內(nèi)存。與傳統(tǒng)系統(tǒng)級檢查點(diǎn)方法不同,系統(tǒng)容錯(cuò)模塊首先將計(jì)算線程的中間運(yùn)行
5狀態(tài)保存到內(nèi)存,然后由幫助線程將內(nèi)存的中間運(yùn)行狀態(tài)保存到磁盤I/O系統(tǒng)。因?yàn)閮?nèi)存 的速度比磁盤I/O系統(tǒng)的速度高很多,中間運(yùn)行狀態(tài)到內(nèi)存的保存過程速度很快,而幫助 線程將內(nèi)存的中間運(yùn)行狀態(tài)保存到磁盤I/O系統(tǒng)的過程則可以和計(jì)算線程的計(jì)算并行進(jìn) 行,不影響計(jì)算時(shí)間,因此采用本發(fā)明可極大地減少容錯(cuò)的時(shí)間。第二步,作業(yè)管理系統(tǒng)提交并行任務(wù),方法是2. 1管理節(jié)點(diǎn)的作業(yè)管理系統(tǒng)與計(jì)算節(jié)點(diǎn)的作業(yè)管理系統(tǒng)通信,請求在計(jì)算節(jié)點(diǎn) 生成指定數(shù)目的并行任務(wù),計(jì)算節(jié)點(diǎn)的作業(yè)管理系統(tǒng)根據(jù)請求生成并行任務(wù)。因?yàn)槊總€(gè)并行任務(wù)(即2個(gè)線程)要占用兩個(gè)處理器核,所以每個(gè)計(jì)算節(jié)點(diǎn)上最 大生成的并行任務(wù)的數(shù)目是計(jì)算節(jié)點(diǎn)上處理器核數(shù)的一半。同時(shí)為了保證完成檢查點(diǎn)功 能,每個(gè)計(jì)算節(jié)點(diǎn)要保留足夠的內(nèi)存資源用于完成檢查點(diǎn)操作,需保留內(nèi)存資源的一半用 于檢查點(diǎn)操作。在多個(gè)計(jì)算節(jié)點(diǎn)啟動(dòng)的并行任務(wù)通過通信庫使用高速計(jì)算網(wǎng)絡(luò)通信,通信 庫在并行任務(wù)啟動(dòng)時(shí)為該并行任務(wù)分配了邏輯編號ID,ID的范圍為0 N-1,其中N為并 行任務(wù)數(shù)。2. 2并行任務(wù)的計(jì)算線程完成應(yīng)用指定的計(jì)算功能。2. 3計(jì)算節(jié)點(diǎn)上具有邏輯編號ID (不包括邏輯編號0和邏輯編號N_l)的并行任 務(wù)的幫助線程建立與邏輯編號為ID+1和邏輯編號為ID-I的并行任務(wù)的幫助線程之間的連 接,邏輯編號為0的并行任務(wù)的幫助線程只與邏輯編號為1的并行任務(wù)的幫助線程建立連 接,邏輯編號為N-I的并行任務(wù)的幫助線程只與邏輯編號為N-2的并行任務(wù)的幫助線程建 立連接,這樣建立了所有并行任務(wù)的幫助線程的一個(gè)排序,順序就是邏輯編號的順序。2. 4并行任務(wù)的幫助線程進(jìn)入睡眠狀態(tài),準(zhǔn)備從計(jì)算線程接收檢查點(diǎn)保存請求。第三步,系統(tǒng)容錯(cuò)模塊保存計(jì)算線程的中間運(yùn)行狀態(tài),過程如下3. 1管理節(jié)點(diǎn)的作業(yè)管理系統(tǒng)通知計(jì)算節(jié)點(diǎn)作業(yè)管理系統(tǒng)開始檢查點(diǎn)操作,計(jì)算 節(jié)點(diǎn)作業(yè)管理系統(tǒng)向本地并行任務(wù)發(fā)送信號,啟動(dòng)檢查點(diǎn)操作;3. 2并行任務(wù)收到檢查點(diǎn)信號后,暫停計(jì)算線程的計(jì)算,系統(tǒng)容錯(cuò)模塊清空通信 庫建立的通信通道中的數(shù)據(jù),保留全部待發(fā)送和已接收但未處理的消息數(shù)據(jù),關(guān)閉通信通 道;3. 3系統(tǒng)容錯(cuò)模塊檢查內(nèi)存是否具有足夠的空間用于保存計(jì)算線程的中間運(yùn)行狀 態(tài),如果有足夠空間,執(zhí)行3. 5 ;如果沒有足夠空間,執(zhí)行3. 4。3. 4計(jì)算線程進(jìn)入睡眠狀態(tài),執(zhí)行3. 5。3. 5本地并行任務(wù)使用系統(tǒng)容錯(cuò)模塊將計(jì)算線程的中間運(yùn)行狀態(tài)保存在內(nèi)存,打 開通信通道,喚醒幫助線程,恢復(fù)計(jì)算線程為運(yùn)行狀態(tài)。3. 6計(jì)算線程運(yùn)行;第四步,幫助線程保存計(jì)算線程的中間運(yùn)行狀態(tài),過程如下4. 1幫助線程睡眠等待;4. 2幫助線程被計(jì)算線程喚醒后檢查內(nèi)存,查找是否有尚未保存到磁盤I/O系統(tǒng) 的計(jì)算線程的中間運(yùn)行狀態(tài)。如果沒有計(jì)算線程的中間運(yùn)行狀態(tài)需要保存,執(zhí)行4. 1 ;如果 有計(jì)算線程的中間運(yùn)行狀態(tài)需要保存,執(zhí)行4. 3 ;4. 3根據(jù)磁盤I/O系統(tǒng)穩(wěn)定運(yùn)行最大支持的客戶節(jié)點(diǎn)數(shù)目M,M為正整數(shù),計(jì)算節(jié) 點(diǎn)的幫助線程依邏輯編號ID的排序,依照ID由小到大的順序,依次將內(nèi)存的計(jì)算線程的中
6間運(yùn)行狀態(tài)保存到磁盤I/O系統(tǒng),每次最大并發(fā)保存的幫助線程數(shù)限制不超過M。這里M的值可以根據(jù)對磁盤I/O系統(tǒng)的測試獲得。如果I/O系統(tǒng)支持的寫帶寬為WB,計(jì)算節(jié)點(diǎn)的數(shù)目為N,每個(gè)節(jié)點(diǎn)需要保存的中間運(yùn)行狀態(tài)平均大小為C,經(jīng)過CXN/WB時(shí)間后完成N個(gè)節(jié)點(diǎn)的中間運(yùn)行狀態(tài)輸出。4. 4幫助線程喚醒等待檢查點(diǎn)完成的計(jì)算線程,執(zhí)行4. 1。本發(fā)明第二階段恢復(fù)過程的技術(shù)方案如下并行任務(wù)恢復(fù)運(yùn)行的過程是檢查點(diǎn)執(zhí)行過程的逆過程,任務(wù)恢復(fù)運(yùn)行的步驟為第五步,建立并行任務(wù)結(jié)構(gòu),方法是5. 1根據(jù)并行任務(wù)的計(jì)算線程的中間運(yùn)行狀態(tài)的保存位置,作業(yè)管理系統(tǒng)提取對 應(yīng)的作業(yè)運(yùn)行參數(shù),包括作業(yè)之前運(yùn)行的并行任務(wù)總數(shù)TN、每個(gè)節(jié)點(diǎn)運(yùn)行的并行任務(wù)數(shù) LN,然后分配TN/LN個(gè)計(jì)算節(jié)點(diǎn),通知計(jì)算節(jié)點(diǎn)上的作業(yè)管理系統(tǒng)啟動(dòng)并行任務(wù),TN和LN均 為正整數(shù);5. 2計(jì)算節(jié)點(diǎn)上的管理服務(wù)進(jìn)程啟動(dòng)并行任務(wù),并行任務(wù)包括兩個(gè)線程,也就是計(jì) 算線程和幫助線程,這里的計(jì)算線程只具有操作系統(tǒng)線程兩部分(內(nèi)核狀態(tài)和用戶狀態(tài)) 中的內(nèi)核狀態(tài)部分,用戶狀態(tài)部分尚需要從以前保存的計(jì)算線程的中間運(yùn)行狀態(tài)恢復(fù);5. 3計(jì)算線程進(jìn)入睡眠狀態(tài),等待幫助線程喚醒;5. 4采用步驟2. 3所述的方法,幫助線程根據(jù)并行任務(wù)的邏輯ID構(gòu)成一個(gè)排序;第六步,幫助線程將內(nèi)存的中間運(yùn)行狀態(tài)進(jìn)行恢復(fù),方法是6. 1根據(jù)磁盤I/O系統(tǒng)穩(wěn)定運(yùn)行最大支持的客戶節(jié)點(diǎn)數(shù)目M,計(jì)算節(jié)點(diǎn)的幫助線程 依邏輯編號ID的排序,依照ID由小到大的順序,依次將磁盤I/O系統(tǒng)中計(jì)算線程的中間運(yùn) 行狀態(tài)讀入到內(nèi)存,每次最大并發(fā)讀取的幫助線程數(shù)限制不超過M。如果I/O系統(tǒng)支持的讀帶寬為RB,計(jì)算節(jié)點(diǎn)的數(shù)目為N,每個(gè)節(jié)點(diǎn)需要讀取的中間 運(yùn)行狀態(tài)平均大小為C,經(jīng)過CXN/RB時(shí)間后完成N個(gè)節(jié)點(diǎn)的中間運(yùn)行狀態(tài)讀入。6. 2幫助線程通知系統(tǒng)容錯(cuò)模塊恢復(fù)運(yùn)行狀態(tài),幫助線程轉(zhuǎn)入睡眠狀態(tài)。第七步,系統(tǒng)容錯(cuò)模塊將計(jì)算線程進(jìn)行恢復(fù),方法是7. 1系統(tǒng)容錯(cuò)模塊恢復(fù)計(jì)算線程的處理器狀態(tài)、寄存器信息、內(nèi)存信息。完成本地 信息恢復(fù)后,系統(tǒng)容錯(cuò)模塊打開通信庫的通信通道。7. 2系統(tǒng)容錯(cuò)模塊將計(jì)算線程轉(zhuǎn)移到執(zhí)行狀態(tài),繼續(xù)計(jì)算線程的執(zhí)行。本發(fā)明給出了一種多核系統(tǒng)上基于內(nèi)存緩存的檢查點(diǎn)容錯(cuò)方法。當(dāng)前并行系統(tǒng)的 CPU和內(nèi)存資源豐富,而I/O帶寬受限,本發(fā)明提出的方法使用這些CPU和內(nèi)存來緩存中間 運(yùn)行狀態(tài),使用幫助線程將中間運(yùn)行狀態(tài)保存到磁盤I/O系統(tǒng)。幫助線程的保存和計(jì)算線 程的計(jì)算是并發(fā)進(jìn)行的。幫助線程的磁盤I/O可以有效的調(diào)度,解決了中間運(yùn)行狀態(tài)保存 過程中全部計(jì)算節(jié)點(diǎn)同時(shí)申請磁盤I/O資源的突發(fā)性需求,幫助線程的保存和計(jì)算線程的 計(jì)算并發(fā)提高了容錯(cuò)性能。與現(xiàn)有高性能計(jì)算機(jī)容錯(cuò)方法相比,本發(fā)明充分利用了現(xiàn)有并 行計(jì)算機(jī)豐富的CPU和內(nèi)存資源,實(shí)現(xiàn)了計(jì)算和容錯(cuò)的并行。采用本發(fā)明可以達(dá)到以下技 術(shù)效果1、本發(fā)明第三步利用內(nèi)存緩存將計(jì)算線程的中間運(yùn)行狀態(tài)首先保存到內(nèi)存,然后 計(jì)算線程繼續(xù)執(zhí)行,計(jì)算線程的中間運(yùn)行狀態(tài)由幫助線程保存到磁盤I/O系統(tǒng),與計(jì)算線 程的計(jì)算并行執(zhí)行。因?yàn)閮?nèi)存速度較I/O系統(tǒng)的速度要高很多,計(jì)算線程的中間運(yùn)行狀態(tài)到內(nèi)存的保存對程序執(zhí)行時(shí)間的影響很小,而到磁盤I/O的保存和計(jì)算線程的計(jì)算并行執(zhí) 行,所以顯著降低了系統(tǒng)級檢查點(diǎn)的容錯(cuò)時(shí)間。2、本發(fā)明第四步和第六步將計(jì)算線程的中間運(yùn)行狀態(tài)在內(nèi)存和I/O磁盤系統(tǒng)映 像的讀/寫過程中,依據(jù)磁盤I/O系統(tǒng)穩(wěn)定運(yùn)行最大支持的客戶節(jié)點(diǎn)數(shù)目M來進(jìn)行,這種方 式避免了全部計(jì)算節(jié)點(diǎn)同時(shí)請求磁盤I/O系統(tǒng),減少了磁盤I/O系統(tǒng)的訪間沖突,改善了讀 /寫時(shí)間的同時(shí),提高了 I/O磁盤系統(tǒng)的穩(wěn)定性。
圖1是傳統(tǒng)系統(tǒng)級檢查點(diǎn)并行計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)圖;圖2是本發(fā)明第一步部署的并行計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)圖;圖3是本發(fā)明第三步系統(tǒng)容錯(cuò)模塊和第四步幫助線程保存計(jì)算線程的中間運(yùn)行 狀態(tài)的流程圖;圖4是本發(fā)明第六步幫助線程和第七步系統(tǒng)容錯(cuò)模塊恢復(fù)計(jì)算線程運(yùn)行的流程 圖;圖5是采用本發(fā)明減少了容錯(cuò)時(shí)間的示意圖。
具體實(shí)施例方式圖1是傳統(tǒng)系統(tǒng)級檢查點(diǎn)并行計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)圖。圖2是本發(fā)明第一步部署的并行計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)圖。與傳統(tǒng)系統(tǒng)級檢查點(diǎn)不同, 計(jì)算節(jié)點(diǎn)上的每個(gè)并行任務(wù)除了包括一個(gè)計(jì)算線程以外,還包括一個(gè)用于支持容錯(cuò)的幫助 線程,幫助線程在檢查點(diǎn)階段將緩存在內(nèi)存的中間運(yùn)行狀態(tài)保存到磁盤I/O系統(tǒng),在恢復(fù) 階段將中間運(yùn)行狀態(tài)從磁盤I/O系統(tǒng)讀入到內(nèi)存。與傳統(tǒng)系統(tǒng)級檢查點(diǎn)方法不同,計(jì)算節(jié) 點(diǎn)上的系統(tǒng)容錯(cuò)模塊首先將計(jì)算線程的中間運(yùn)行狀態(tài)保存到內(nèi)存,然后由幫助線程將內(nèi)存 的中間運(yùn)行狀態(tài)保存到磁盤I/O系統(tǒng)。因?yàn)閮?nèi)存的速度比磁盤I/O系統(tǒng)的速度高很多,中 間運(yùn)行狀態(tài)到內(nèi)存的保存過程速度很快,而幫助線程將內(nèi)存的中間運(yùn)行狀態(tài)保存到磁盤I/ 0系統(tǒng)的過程則可以和計(jì)算線程的計(jì)算并行進(jìn)行,不影響計(jì)算時(shí)間,因此本發(fā)明極大減少了 容錯(cuò)的時(shí)間。圖3是本發(fā)明本發(fā)明第三步系統(tǒng)容錯(cuò)模塊和第四步幫助線程保存計(jì)算線程的中 間運(yùn)行狀態(tài)的流程圖。系統(tǒng)容錯(cuò)模塊保存計(jì)算線程的中間運(yùn)行狀態(tài)的過程如下第三步,系統(tǒng)容錯(cuò)模塊保存計(jì)算線程的中間運(yùn)行狀態(tài),過程如下3. 1管理節(jié)點(diǎn)的作業(yè)管理系統(tǒng)通知計(jì)算節(jié)點(diǎn)作業(yè)管理系統(tǒng)開始檢查點(diǎn)操作,計(jì)算 節(jié)點(diǎn)作業(yè)管理系統(tǒng)向本地并行任務(wù)發(fā)送信號,啟動(dòng)檢查點(diǎn)操作;3. 2并行任務(wù)收到檢查點(diǎn)信號后,暫停計(jì)算線程的計(jì)算,系統(tǒng)容錯(cuò)模塊清空通信 庫建立的通信通道中的數(shù)據(jù),保留全部待發(fā)送和已接收但未處理的消息數(shù)據(jù),關(guān)閉通信通 道;3. 3系統(tǒng)容錯(cuò)模塊檢查內(nèi)存是否具有足夠的空間用于保存計(jì)算線程的中間運(yùn)行狀 態(tài),如果有足夠空間,執(zhí)行3. 5 ;如果沒有足夠空間,執(zhí)行3. 4 ;3. 4計(jì)算線程進(jìn)入睡眠狀態(tài),執(zhí)行3. 5 ;3. 5本地并行任務(wù)使用系統(tǒng)容錯(cuò)模塊將計(jì)算線程的中間運(yùn)行狀態(tài)保存在內(nèi)存,打
8開通信通道,喚醒幫助線程,恢復(fù)計(jì)算線程為運(yùn)行狀態(tài);3. 6計(jì)算線程運(yùn)行;第四步,幫助線程保存計(jì)算線程的中間運(yùn)行狀態(tài),過程如下4. 1幫助線程睡眠等待;4. 2幫助線程被計(jì)算線程喚醒后檢查內(nèi)存,查找是否有尚未保存到磁盤I/O系統(tǒng) 的計(jì)算線程的中間運(yùn)行狀態(tài);如果沒有計(jì)算線程的中間運(yùn)行狀態(tài)需要保存,執(zhí)行4. 1 ;如果 有計(jì)算線程的中間運(yùn)行狀態(tài)需要保存,執(zhí)行4. 3 ;4. 3根據(jù)磁盤I/O系統(tǒng)穩(wěn)定運(yùn)行最大支持的客戶節(jié)點(diǎn)數(shù)目M,M為正整數(shù),計(jì)算節(jié) 點(diǎn)的幫助線程依邏輯編號ID的排序,依照ID由小到大的順序,依次將內(nèi)存的計(jì)算線程的中 間運(yùn)行狀態(tài)保存到磁盤I/O系統(tǒng),每次最大并發(fā)保存的幫助線程數(shù)限制不超過M,M的值根 據(jù)對磁盤I/O系統(tǒng)的測試獲得;4. 4幫助線程喚醒等待檢查點(diǎn)完成的計(jì)算線程,執(zhí)行4. 1。圖4是本發(fā)明第六步幫助線程和第七步系統(tǒng)容錯(cuò)模塊恢復(fù)計(jì)算線程運(yùn)行的流程 圖。第六步,幫助線程將內(nèi)存的中間運(yùn)行狀態(tài)進(jìn)行恢復(fù),方法是6. 1根據(jù)磁盤I/O系統(tǒng)穩(wěn)定運(yùn)行最大支持的客戶節(jié)點(diǎn)數(shù)目M,計(jì)算節(jié)點(diǎn)的幫助線程 依邏輯編號ID的排序,依照ID由小到大的順序,依次將磁盤I/O系統(tǒng)中計(jì)算線程的中間運(yùn) 行狀態(tài)讀入到內(nèi)存,每次最大并發(fā)讀取的幫助線程數(shù)限制不超過M ;6. 2幫助線程通知系統(tǒng)容錯(cuò)模塊恢復(fù)運(yùn)行狀態(tài),幫助線程轉(zhuǎn)入睡眠狀態(tài);第七步,系統(tǒng)容錯(cuò)模塊將計(jì)算線程進(jìn)行恢復(fù),方法是7. 1系統(tǒng)容錯(cuò)模塊恢復(fù)計(jì)算線程的處理器狀態(tài)、寄存器信息、內(nèi)存信息,然后打開 通信庫的通信通道;7. 2系統(tǒng)容錯(cuò)模塊將計(jì)算線程轉(zhuǎn)移到執(zhí)行狀態(tài),繼續(xù)計(jì)算線程的執(zhí)行。圖5是采用本發(fā)明減少了容錯(cuò)時(shí)間的示意圖。以Linux/x86雙核系統(tǒng)為運(yùn)行環(huán)境, 系統(tǒng)的物理內(nèi)存2GB,I/O帶寬400MB/S,單位GB內(nèi)存的帶寬200MB/S。使用一個(gè)存儲(chǔ)空間 需求為800MB(滿足不超過存儲(chǔ)空間一半的要求)的應(yīng)用程序,用于分析本發(fā)明的有效性。 測試以下3種情況程序的執(zhí)行時(shí)間沒有容錯(cuò)支持(NOCR)、使用本發(fā)明(RAMFS)和使用傳 統(tǒng)的容錯(cuò)方法(DISK)。本發(fā)明和傳統(tǒng)容錯(cuò)方法在程序運(yùn)行期間都完成了同樣次數(shù)的檢查 點(diǎn)操作,這里實(shí)際完成了 7次檢查點(diǎn)。圖5給出了該情況下程序的執(zhí)行時(shí)間,所有時(shí)間相對 于NOCR情況進(jìn)行了歸一化。從圖中可以看出,沒有容錯(cuò)支持的情況下執(zhí)行時(shí)間最短,使用 本發(fā)明的情況RAMFS,因?yàn)槿蒎e(cuò)導(dǎo)致的時(shí)間延長不到1%,而使用傳統(tǒng)的容錯(cuò)方法DISK,檢 查點(diǎn)導(dǎo)致時(shí)間延長超過4%。由此可以看出采用本發(fā)明顯著減小了容錯(cuò)時(shí)間。
9
權(quán)利要求
1. 一種基于內(nèi)存緩存技術(shù)的多核系統(tǒng)容錯(cuò)方法,其特征在于基于內(nèi)存緩存技術(shù)的多核 系統(tǒng)容錯(cuò)方法分為兩個(gè)階段第一階段是應(yīng)用程序運(yùn)行期間對作業(yè)中間運(yùn)行狀態(tài)保存的階 段,稱為檢查點(diǎn)階段,第二階段是當(dāng)應(yīng)用程序出現(xiàn)錯(cuò)誤情況下,使用保存的中間運(yùn)行狀態(tài)恢 復(fù)應(yīng)用程序運(yùn)行的階段,稱為恢復(fù)階段,第一階段包括第一步至第四步,第二階段包括第五 步至第七步,具體步驟如下第一步,部署并行計(jì)算機(jī)系統(tǒng)硬件和軟件,方法是.1.1部署多個(gè)計(jì)算節(jié)點(diǎn)、一個(gè)管理節(jié)點(diǎn)和一個(gè)磁盤I/O系統(tǒng),計(jì)算節(jié)點(diǎn)完成計(jì)算功能, 一個(gè)計(jì)算節(jié)點(diǎn)由多個(gè)處理器和一個(gè)共享的存儲(chǔ)器構(gòu)成,每個(gè)處理器包括偶數(shù)個(gè)處理器核; 管理節(jié)點(diǎn)完成系統(tǒng)管理功能;磁盤I/O系統(tǒng)保存應(yīng)用程序和數(shù)據(jù);.1.2通過網(wǎng)絡(luò)完成連接計(jì)算節(jié)點(diǎn)之間由高速計(jì)算網(wǎng)絡(luò)連接,通過高速計(jì)算網(wǎng)絡(luò)進(jìn)行 計(jì)算過程中的通信;計(jì)算節(jié)點(diǎn)、管理節(jié)點(diǎn)和磁盤I/O系統(tǒng)之間通過存儲(chǔ)網(wǎng)絡(luò)連接,通過存儲(chǔ) 網(wǎng)絡(luò)向磁盤I/O系統(tǒng)傳輸程序、數(shù)據(jù);計(jì)算節(jié)點(diǎn)、磁盤I/O系統(tǒng)和管理節(jié)點(diǎn)之間通過管理網(wǎng) 絡(luò)連接,管理節(jié)點(diǎn)通過管理網(wǎng)絡(luò)提交作業(yè),維護(hù)計(jì)算節(jié)點(diǎn)和I/O系統(tǒng);.1.3軟件部署計(jì)算節(jié)點(diǎn)上安裝有操作系統(tǒng)、作業(yè)管理系統(tǒng)、通信庫和全局文件系統(tǒng), 操作系統(tǒng)內(nèi)核模塊中含系統(tǒng)容錯(cuò)模塊;管理節(jié)點(diǎn)安裝有作業(yè)管理系統(tǒng)和全局文件系統(tǒng),磁 盤I/O系統(tǒng)安裝有全局文件系統(tǒng);作業(yè)由計(jì)算節(jié)點(diǎn)上協(xié)作運(yùn)行的多個(gè)并行任務(wù)組成,作業(yè) 管理系統(tǒng)通過管理網(wǎng)絡(luò)將并行任務(wù)提交給計(jì)算節(jié)點(diǎn)運(yùn)行,并負(fù)責(zé)管理并行任務(wù);計(jì)算節(jié)點(diǎn) 上的每個(gè)并行任務(wù)除了包括一個(gè)計(jì)算線程以外,還包括一個(gè)用于支持容錯(cuò)的幫助線程,幫 助線程在檢查點(diǎn)階段將緩存在內(nèi)存的中間運(yùn)行狀態(tài)保存到磁盤I/O系統(tǒng),在恢復(fù)階段將中 間運(yùn)行狀態(tài)從磁盤I/O系統(tǒng)讀入到內(nèi)存;第二步,作業(yè)管理系統(tǒng)提交并行任務(wù).2.1管理節(jié)點(diǎn)的作業(yè)管理系統(tǒng)與計(jì)算節(jié)點(diǎn)的作業(yè)管理系統(tǒng)通信,請求在計(jì)算節(jié)點(diǎn)生成 指定數(shù)目的并行任務(wù),計(jì)算節(jié)點(diǎn)的作業(yè)管理系統(tǒng)根據(jù)請求生成并行任務(wù);在多個(gè)計(jì)算節(jié)點(diǎn) 啟動(dòng)的并行任務(wù)通過通信庫使用高速計(jì)算網(wǎng)絡(luò)通信,通信庫在并行任務(wù)啟動(dòng)時(shí)為該并行任 務(wù)分配邏輯編號ID,ID的范圍為0 N-1,其中N為并行任務(wù)數(shù);.2. 2并行任務(wù)的計(jì)算線程完成計(jì)算功能;.2. 3計(jì)算節(jié)點(diǎn)上具有邏輯編號ID的并行任務(wù)的幫助線程建立與邏輯編號為ID+1和邏 輯編號為ID-I的并行任務(wù)的幫助線程之間的連接,ID不包括0和N-I ;邏輯編號為0的并 行任務(wù)的幫助線程只與邏輯編號為1的并行任務(wù)的幫助線程建立連接,邏輯編號為N-I的 并行任務(wù)的幫助線程只與邏輯編號為N-2的并行任務(wù)的幫助線程建立連接,這樣建立了所 有并行任務(wù)的幫助線程的一個(gè)排序,順序就是邏輯編號的順序;.2.4并行任務(wù)的幫助線程進(jìn)入睡眠狀態(tài),準(zhǔn)備從計(jì)算線程接收檢查點(diǎn)保存請求;第三步,系統(tǒng)容錯(cuò)模塊保存計(jì)算線程的中間運(yùn)行狀態(tài),過程如下.3.1管理節(jié)點(diǎn)的作業(yè)管理系統(tǒng)通知計(jì)算節(jié)點(diǎn)作業(yè)管理系統(tǒng)開始檢查點(diǎn)操作,計(jì)算節(jié)點(diǎn) 作業(yè)管理系統(tǒng)向本地并行任務(wù)發(fā)送信號,啟動(dòng)檢查點(diǎn)操作;.3. 2并行任務(wù)收到檢查點(diǎn)信號后,暫停計(jì)算線程的計(jì)算,系統(tǒng)容錯(cuò)模塊清空通信庫建立 的通信通道中的數(shù)據(jù),保留全部待發(fā)送和已接收但未處理的消息數(shù)據(jù),關(guān)閉通信通道;.3. 3系統(tǒng)容錯(cuò)模塊檢查內(nèi)存是否具有足夠的空間用于保存計(jì)算線程的中間運(yùn)行狀態(tài), 如果有足夠空間,執(zhí)行3. 5 ;如果沒有足夠空間,執(zhí)行3. 4 ;·3. 4計(jì)算線程進(jìn)入睡眠狀態(tài),執(zhí)行3. 5 ;·3. 5本地并行任務(wù)使用系統(tǒng)容錯(cuò)模塊將計(jì)算線程的中間運(yùn)行狀態(tài)保存在內(nèi)存,打開通 信通道,喚醒幫助線程,恢復(fù)計(jì)算線程為運(yùn)行狀態(tài);·3.6計(jì)算線程運(yùn)行;第四步,幫助線程保存計(jì)算線程的中間運(yùn)行狀態(tài),過程如下·4.1幫助線程睡眠等待;·4. 2幫助線程被計(jì)算線程喚醒后檢查內(nèi)存,查找是否有尚未保存到磁盤I/O系統(tǒng)的計(jì) 算線程的中間運(yùn)行狀態(tài);如果沒有計(jì)算線程的中間運(yùn)行狀態(tài)需要保存,執(zhí)行4. 1 ;如果有計(jì) 算線程的中間運(yùn)行狀態(tài)需要保存,執(zhí)行4. 3 ;·4. 3根據(jù)磁盤I/O系統(tǒng)穩(wěn)定運(yùn)行最大支持的客戶節(jié)點(diǎn)數(shù)目M,M為正整數(shù),計(jì)算節(jié)點(diǎn)的 幫助線程依邏輯編號ID的排序,依照ID由小到大的順序,依次將內(nèi)存的計(jì)算線程的中間運(yùn) 行狀態(tài)保存到磁盤I/O系統(tǒng),每次最大并發(fā)保存的幫助線程數(shù)限制不超過Μ, M的值根據(jù)對 磁盤I/O系統(tǒng)的測試獲得;·4.4幫助線程喚醒等待檢查點(diǎn)完成的計(jì)算線程,執(zhí)行4. 1 ;第五步,建立并行任務(wù)結(jié)構(gòu),方法是·5.1根據(jù)并行任務(wù)的計(jì)算線程的中間運(yùn)行狀態(tài)的保存位置,作業(yè)管理系統(tǒng)提取對應(yīng)的 作業(yè)運(yùn)行參數(shù),包括作業(yè)之前運(yùn)行的并行任務(wù)總數(shù)TN、每個(gè)節(jié)點(diǎn)運(yùn)行的并行任務(wù)數(shù)LN,然 后分配TN/LN個(gè)計(jì)算節(jié)點(diǎn),通知計(jì)算節(jié)點(diǎn)上的作業(yè)管理系統(tǒng)啟動(dòng)并行任務(wù),TN和LN均為正 整數(shù);·5. 2計(jì)算節(jié)點(diǎn)上的管理服務(wù)進(jìn)程啟動(dòng)并行任務(wù),并行任務(wù)包括兩個(gè)線程,也就是計(jì)算線 程和幫助線程,這里的計(jì)算線程只具有操作系統(tǒng)線程的內(nèi)核狀態(tài)部分,用戶狀態(tài)部分需要 從以前保存的計(jì)算線程的中間運(yùn)行狀態(tài)恢復(fù);·5. 3計(jì)算線程進(jìn)入睡眠狀態(tài),等待幫助線程喚醒;·5.4采用步驟2. 3所述的方法,幫助線程根據(jù)并行任務(wù)的邏輯ID構(gòu)成一個(gè)排序;第六步,幫助線程將內(nèi)存的中間運(yùn)行狀態(tài)進(jìn)行恢復(fù),方法是·6.1根據(jù)磁盤I/O系統(tǒng)穩(wěn)定運(yùn)行最大支持的客戶節(jié)點(diǎn)數(shù)目M,計(jì)算節(jié)點(diǎn)的幫助線程依邏 輯編號ID的排序,依照ID由小到大的順序,依次將磁盤I/O系統(tǒng)中計(jì)算線程的中間運(yùn)行狀 態(tài)讀入到內(nèi)存,每次最大并發(fā)讀取的幫助線程數(shù)限制不超過M ;·6.2幫助線程通知系統(tǒng)容錯(cuò)模塊恢復(fù)運(yùn)行狀態(tài),幫助線程轉(zhuǎn)入睡眠狀態(tài);第七步,系統(tǒng)容錯(cuò)模塊將計(jì)算線程進(jìn)行恢復(fù),方法是·7.1系統(tǒng)容錯(cuò)模塊恢復(fù)計(jì)算線程的處理器狀態(tài)、寄存器信息、內(nèi)存信息,然后打開通信 庫的通信通道;·7. 2系統(tǒng)容錯(cuò)模塊將計(jì)算線程轉(zhuǎn)移到執(zhí)行狀態(tài),繼續(xù)計(jì)算線程的執(zhí)行。
2.如權(quán)利要求1所述的一種基于內(nèi)存緩存技術(shù)的多核系統(tǒng)容錯(cuò)方法,其特征在于計(jì)算 節(jié)點(diǎn)的作業(yè)管理系統(tǒng)生成并行任務(wù)時(shí),每個(gè)計(jì)算節(jié)點(diǎn)上最大生成的并行任務(wù)的數(shù)目是計(jì)算 節(jié)點(diǎn)上處理器核數(shù)的一半,且每個(gè)計(jì)算節(jié)點(diǎn)要保留內(nèi)存資源的一半用于檢查點(diǎn)操作。
全文摘要
本發(fā)明公開了一種基于內(nèi)存緩存技術(shù)的多核系統(tǒng)容錯(cuò)方法,目的是解決檢查點(diǎn)過程中對I/O資源的突發(fā)性需求,減少檢查點(diǎn)操作的時(shí)間。技術(shù)方案是部署并行計(jì)算機(jī)系統(tǒng)時(shí)為每個(gè)并行任務(wù)部署一個(gè)幫助線程,操作系統(tǒng)中的系統(tǒng)容錯(cuò)模塊將計(jì)算線程的中間運(yùn)行狀態(tài)保存到內(nèi)存,幫助線程將內(nèi)存的中間運(yùn)行狀態(tài)保存到磁盤I/O系統(tǒng)。當(dāng)應(yīng)用程序出現(xiàn)錯(cuò)誤情況下,幫助線程和統(tǒng)容錯(cuò)模塊使用保存的中間運(yùn)行狀態(tài)恢復(fù)應(yīng)用程序運(yùn)行。本發(fā)明利用現(xiàn)有并行計(jì)算機(jī)豐富的CPU和內(nèi)存資源,實(shí)現(xiàn)了計(jì)算和容錯(cuò)的并行,顯著降低了系統(tǒng)級檢查點(diǎn)的容錯(cuò)時(shí)間,提高了I/O磁盤系統(tǒng)的穩(wěn)定性。
文檔編號G06F11/14GK102147755SQ20111009390
公開日2011年8月10日 申請日期2011年4月14日 優(yōu)先權(quán)日2011年4月14日
發(fā)明者左克, 彭林, 易會(huì)戰(zhàn), 李春江, 杜云飛, 楊燦群, 王 鋒, 趙克佳, 陳娟, 黃春 申請人:中國人民解放軍國防科學(xué)技術(shù)大學(xué)