劉睿濤,陳左寧
(1.數學工程與先進計算國家重點實驗室,江蘇 無錫 214215; 2.國家并行計算機工程技術研究中心,北京 100190)
超級計算機性能的提升帶來了系統規模的不斷增大。其中,10P量級高性能計算機的規模目前已經達到數萬處理器規模。不斷增加的系統規模與復雜度,在高性能計算領域帶來了巨大的可靠性挑戰。據估算,E量級高性能計算機的平均無故障時間只有30 min左右[1-3]。針對超級計算機的故障特征,科研人員進行了相關研究,對以藍色基因系統為代表的多個大型系統的故障分析,建立了初步的故障特征模型,但其中有些研究的故障類型較少[4-6],還有些研究的故障單元粒度較粗[7-9],缺乏對超級計算機全面的細粒度故障分析。目前,研究人員對Taitan超級計算機的大規模GPU故障進行了分析,但由于缺乏精確的故障時間信息,其分析只能以24 h為最大時間精度[10]。
為解決系統可用性問題,基于檢查點/重啟的容錯技術得到廣泛應用。研究人員通過對系統故障建模,并對檢查點進行了優化,但未從應用運行模式上進行失效模型的分析[7]。近年來,隨著故障預測研究的不斷深入,并取得一定進展[11-15]。但是,超級計算機的容錯由于未能與系統的實際可靠性數據相結合,在大規模并行應用上未獲得最佳的運行效率。此外,由于超級計算機越來越高的復雜度,指數分布的故障模型是否適應P級超級計算機,可應用以此為依據導出的檢查點間隔優化策略[16],需要結合超級計算機進行分析。
根據實際運行環境的可靠性對檢查點時機進行優化,指導系統級或應用級檢查點的執行,可有效降低檢查點開銷,提升超級計算機的可用性。本文以神威太湖之光系統為研究主體,分析該超級計算機中復雜多樣的系統故障,建立了面向超級計算機復雜故障的部件級和應用級失效模型,并以該模型為基礎,給出數據驅動的自適應容錯模型,設計自適應優化算法。
神威太湖之光計算機系統是一臺數十億億次(100 petaflops)級超級計算機,能有效支持計算密集型、通信密集型和I/O密集型應用。該系統包括40 960個CPU,每個機倉由4個運算超節點組成。每個超節點包括32個運算插件卡和1個網絡背板。每個運算插件卡上集成8個CPU和1個集成網絡卡。CPU節點采用異構眾核處理器,片上集成260個異構核心,采用計算陣列和分布式共享存儲相結合的異構眾核體系結構。CPU節點配置大容量DDR3-2133存儲器芯片,采用PCIe 3.0接口,提供高帶寬系統數據交換能力。太湖之光系統的組織結構如圖1所示。

圖1 太湖之光系統組織結構
1.2.1 數據采集
太湖之光通過一套覆蓋包括主機計算系統在內的全系統監控與維護診斷基礎設施進行全機主要目標的監控、診斷與維護。分布式故障采集框架如圖2所示。

圖2 分布式故障采集框架
該基礎設施主要包括維護BMC(Base Board Management Controller)、運算維護板PM(Processor Management)、頂層網絡維護板TNM(Top Net Management)及監控軟件。
維護BMC用于實現對插件內CPU及其主存、HCA芯片的維護和監控。BMC是維護系統的最基礎部件,向下提供多條并行維護通道與被維護的器件連接,向上與維護管理網絡互連,構成可伸縮的維護系統。運算維護板(PM)位于運算中板的背面,每個運算底板一塊,用來實現對中板內所有計算網絡插件(CN)、運算節點BMC、以太網交換板等目標的管理、監控。
借助分布式的故障采集框架,在太湖之光系統上設置了以下故障傳感器:
1)CPU節點故障傳感器;
2)IBA卡故障傳感器;
3)電源故障傳感器;
4)溫度傳感器;
5)軟件傳感器。
傳感器設置和數據采集覆蓋了全部計算單元。通過故障采集框架,對分布于系統的傳感器獲取的數據進行在線實時存儲,建立系統的故障分析大數據集。
故障傳播會導致故障之間的相關性,對故障分析帶來影響[17-19]。為了確保能夠獲得真實故障源,避免故障傳播,太湖之光系統采用了軟硬件協同設計方法?;谟布O計,在CPU節點和其他主要部件上采用了主動與被動隔離設計。例如,當計算核心檢測到自身發生不可糾錯或故障時,將主動進行自我隔離,主要包括阻止該計算核心到其他部件的請求、丟棄該計算核心的響應。故障部件也可以通過軟件設置進行隔離。在軟件設計上,當部件的不可糾錯或故障被檢測到時,軟件基礎架構對相關的應用進行容錯處理,并對故障部件立即隔離。
1.2.2 故障分類
故障記錄主要包括故障主體(CPUID,COREID)、故障標識(FAULT_TYPE_ID)、故障名稱(FAULT_NAME)、發生時間(OCCUR_TIME)、實時溫度(CPU_TEMP)、故障現場(FAULT_SCENE)等項目。故障主體描述故障發生目標,包括CPU核心、CPU控制部件、內存、HCA、電源、維護部件等。故障標識和故障名稱涵蓋了CPU主核與從核故障、CPU控制部件故障、內存故障、HCA故障、維護部件故障、供電部件和冷卻部件故障等詳細故障類型。發生時間記錄了故障發生的時間(精確到秒級)。CPU溫度記錄了故障發生時CPU的實時溫度。故障現場記錄了故障的詳細現場信息。
為了對故障進行統計分析,根據系統結構和組裝特征,將各類詳細故障類型歸類為CPU故障(不包括DRAM內存)、內存故障、CPU節點故障(包含CPU和DRAM)、計算插件卡故障、互連設備故障、維護設備故障、電源設備故障和冷卻設備故障等故障大類,每個故障大類又根據部件微結構進一步細分為詳細的故障類型。例如內存故障細分為內存單錯和內存多錯故障等,CPU故障細分為各計算部件故障和相關控制部件故障等。
根據故障嚴重程度和處理方式,每個故障又分為非嚴重故障和嚴重故障。非嚴重故障是指不會導致系統失效的非正常狀態或可由硬件自行糾錯的非正常狀態(例如,可糾正的DRAM單錯)。嚴重故障是指立即會導致系統失效的非正常狀態或必須由軟件系統進行容錯干預的非正常狀態。
太湖之光系統有170多個詳細故障類型,其中導致主機系統失效的嚴重故障有108類。
數據預處理是指對故障進行分類和過濾、優化故障分析以及提升分析效率[20]。
在大規模并行計算機運行中,失效是指系統在遇到某些故障時,無法通過硬件自身的自動容錯機制進行在線修復并繼續運行。對非嚴重故障,硬件系統可以通過糾錯機制自動恢復(例如ECC檢糾單錯)。對嚴重故障,則無法自動修復,此時系統會中斷正常運行,造成系統失效,需要在帶外系統和軟件的干預下進行容錯和恢復。系統失效由嚴重故障引起,因而在進行失效時間分析時,需過濾掉非嚴重故障。
本文數據預處理是對原始故障記錄進行排重和過濾,保留與失效有關的嚴重故障,避免信息丟失,確保失效分析有效性,以加速分析過程。
數據預處理包括3步:1)過濾掉在線故障記錄中的不合格記錄,例如帶有空缺項記錄(空缺項記錄很少,主要由監控程序異常造成);2)對重復數據進行去重,例如同一時刻同一目標的相同故障記錄,借助數據庫sql查詢技術,實現數據去冗;3)根據故障分類及等級選取所需故障類型,篩除不相關故障。
本文選取太湖之光系統3年時間(2014-07-01—2017-07-01)的故障數據作為數據源。經過數據預處理,可將分析數據壓縮至原始數據的13%,如圖3所示。
從時間上對故障進行量化分析,可以定量描述故障分布,掌握系統動態可靠性特征,為容錯優化提供基礎。
從圖4可以看出,系統對可靠性影響最大的是主機計算系統(主要包括CPU、內存和互連系統等)。本節以太湖之光主機系統的CPU節點為基本部件單元,在不同時間區間上分析其失效間隔時間,并建立細粒度失效分布模型。

圖4 太湖之光故障分布模型
1)分析方法
指數(Exponential)分布(T~E(λ))、對數正態(Lognormal)分布(T~LN(μ,σ2))、Weibull分布(T~W(m,η))和Gamma分布(T~Γ(α,λ))是具有代表性的幾種壽命分布[21]。4種分布的密度函數如表1所示。

表1 典型壽命分布
本文選用上述數學模型,按照劃定的時間區間,在相同時空維度上對比分析系統內各基本故障單元的失效時間特征。 通過最大似然估計法,采用累積失效分布數據對候選分布參數進行擬合。然后使用Kolmogorov-Smirnov檢驗候選分布與實際數據符合度,產生的P值作為模型擬合度評估標準。P值越低,符合度越差;反之,則越好。一般要求P值大于閾值0.05,才認為該分布與實際數據符合。
2)太湖之光失效時間分析
根據實際失效數據,本文繪制了太湖之光系統中隨機選取的2個CPU節點在不同時間區間上的失效間隔時間分析(圖5)。其中,實線曲線表示實際失效間隔時間數據,其他虛線曲線分別對應擬合的Weibull、Gamma和對數正態分布,圖5(a)、圖5(d)為第1時間區間(2014-07-01—2015-07-01),圖5(a)、圖5(e)為第2時間區間(2015-07-01—2016-07-01),圖5(c)、圖5(f)為第3時間區間(2016-07-01—2017-07-01)。

圖5 不同時間區間的失效間隔時間分布示例
從圖5可以看出,在3個不同時間區間上,指數分布模型是與CPU節點的實際失效數據最不符合的分布,Weibull、Gamma和對數正態分布與實際失效數據符合度較好。
表2是隨機選取的2個CPU節點失效間隔時間分布參數與擬合度分析。與真實故障數據對應的對指數分布、對數正態分布、Gamma分布和Weibull分布參數及Kolmogorov-Smirnov檢驗產生的p值在表中列出。
以CPU節點(4-3-26-1-1)為例:
在第1時間區間內,指數分布的K-S檢驗p-value=0.017 665 46,小于通常的分布檢驗符合度標準0.05,與實際失效數據不符合;Weibull、Gamma和對數正態分布分布都符合實際失效數據,Weibull符合度最好(p-value=0.912 390 5),其次是Gamma(p-value=0.779 198 4),最后是對數正態分布(p-value=0.179 714 3)。
在第2時間區間內,指數分布和Gamma分布與實際失效數據不符合(指數分布的p-value=4.229 95e-14,Gamma分布的p-value=0.046 696 84),對數正態分布符合度最好(p-value=0.668 755 8),其次是Weibull分布(p-value=0.149 518)。
在第3時間區間內,這4個分布與實際失效數據都符合,符合度最好的是Weibull分布(p-value=0.990 419 4),其次是Gamma分布(p-value =0.722 965 8)和對數正態分布(p-value=0.462 257),最后是指數分布(p-value=0.149 760 3)。


表2 太湖之光失效分布及參數
此外容易發現,在CPU節點(4-3-26-1-1)上,雖然Weibull分布與實際失效間隔時間符合度最好,但不同時間區間上,其Weibull分布參數有較明顯差異(第1時間區間,m=0.592 533 5,壽命特征η=476 345.9;第2時間區間,m=0.405 037 4,η=50 703.25;第3時間區間,m=0.623 815 7,η=446 174.6)。這說明同一個部件的失效分布模型參數隨著時間也在不斷變化,并且CPU節點(4-3-26-1-1)在3個時間段上的故障數也不同。進一步深入分析發現,在這3個時間段上,該CPU的負載有不同的特征。
同樣,對表2另一個CPU節點失效數據的擬合分析顯示,Weibull分布與實際失效間隔時間符合度最好,可以用于定量描述故障單元的失效間隔時間。并且發現相同類型不同位置的故障單元之間,與其失效間隔時間對應的Weibull分布的參數也不相同。
對太湖之光系統不同粒度的所有故障單元進行分析顯示,Weibull分布與故障單元的實際失效數據符合度最好,并且在不同的時間區間內,其形狀參數和壽命參數都不同。這說明雖然同一個部件的失效分布模型可以用Weibull分布進行描述,但根據故障單元運行負載的變化,分布參數也會隨之變化。
3)結果分析

(1)同一部件隨著時間或負載的變化,與其失效時間對應的Weibull分布參數不斷變化。
(2)類型相同但位置不同的部件,與其失效時間對應的Weibull分布參數不盡相同。
(3)同一部件在不同時期的故障率(或故障數)不同。
并行應用規模用計算單元(計算單元以CPU節點為基本單位)數量進行定量描述??梢宰鋈缦潞侠砑僭O:在并行應用運行過程中,所有計算單元的故障之間獨立。事實上,通過1.2.1節分析可知,該假設合理。
在大規模并行系統中,并行應用的各個任務之間關系一般有2種:強相關性和弱相關性。強相關性是指并行應用的任務之間有相互依賴關系,在任務的不同階段需要進行交互。弱相關性是指并行應用的任務之間基本無依賴關系,無交互關系。
對于具有任務強相關性的并行應用,在任何一個任務或其運行部件發生失效時,將影響到整個并行應用,一般需要檢查點重啟機制重新部署并行應用。對于具有任務弱相關性的并行應用,在任何一個任務或其運行部件發生失效時,根據容錯模式可以采取降級運行,刪除失效任務,或者重新部署失效任務,使其恢復運行,都不會影響并行應用中的其他任務。
對于任務強相關性的并行應用,只要該應用使用的計算單元之一發生了嚴重故障,就會導致該應用運行中斷。因此,在分析這種并行應用的失效模式時,采用其所使用計算單元的串聯模型。
對于任務弱相關性的并行應用,可將其視為與獨立任務一一對應的多個應用。以獨立任務為單位,分析失效模型。
1)任務強相關性并行應用失效模型
應用規模用N表示,Fjob(N,t)表示規模為N的應用在t時刻之前失效的概率,Fnode(N,t)表示個數為N的計算單元集合在t時刻之前發生失效的概率,Fi(t)表示計算單元i在t時刻之前發生失效的概率。那么有:
(1)
規模為N的任務強相關性應用的故障概率模型如圖6所示。

圖6 規模為N的強相關性應用失效模型

若ftimei是計算單元i的上次發生故障時間,則有:
Fi(t)=FTBF(t-ftimei)=
(2)
其中,t≥ftimei,t為時鐘時間,ftimei是計算單元i的上次發生故障時間或開始運行的時間。
從而式(1)演變為:
(3)
(4)
其中,t≥max(ftime1,ftime2,…,ftimeN),Fjob(N,t)是應用的可靠性分布函數,fjob(N,t)是應用的失效概率密度函數。至此,應用級失效分布模型建立,可據此進行應用的可靠性和容錯優化分析。
規模為N的應用平均無故障時間為:

(5)
從失效分布模型可以看出,該模型與幾個參數密切相關,包括應用規模N、應用啟動時間starttime、各計算單元上次故障發生時間ftimei、各計算單元的形狀參數mi和壽命分布參數ηi,如表3所示。

表3 應用失效模型參數及含義
在應用運行過程中,應用的平均無故障時間可以根據式(5)進行計算。但注意到在應用發生了故障之后,發生故障的計算單元的ftimei相應發生變化。另外,從2.1節分析發現,計算單元的失效分布模型參數(mi和ηi)也隨時間或負載而變化??梢?應用失效分布模型是動態變化的。
2)任務弱相關性并行應用失效模型
將并行應用按照獨立任務進行拆解,以獨立任務為單位,分別建立失效模型。獨立任務的失效模型與任務強相關性并行應用一致。
本節分析任務強相關性并行應用。對于任務弱相關性并行應用,可將并行應用按照獨立任務進行拆解,然后以獨立任務為單位,優化任務強相關性并行應用的自適應容錯方法。
在任何采用檢查點/重啟技術的容錯系統中,都需要在檢查點開銷與計算開銷之間取得平衡,以實現最低開銷下的容錯。過于頻繁或者過長的檢查點間隔都會導致系統容錯開銷或丟失的計算量增大,一個最優的檢查點策略才能盡量降低檢查點開銷,提高容錯效率。
一般地,檢查點相關的參數包括檢查點保留開銷、檢查點間隔時間(或計算時間)、檢查點恢復開銷、因故障損失的計算時間等,檢查點參數如表4所示。

表4 檢查點參數及含義
典型的檢查點時序模型如圖7所示。對應用進行檢查點容錯的過程如下:應用開始執行(starttime),并運行一段時間(持續Tc),之后進行一次檢查點保留(開銷Ts),之后循環往復執行上述過程。當應用相關的軟硬件資源發生失效(或嚴重故障)時(丟失計算量Tl),執行檢查點恢復(開銷Tr),并從檢查點處繼續開始執行,依次類推。

圖7 作業檢查點時序模型
一般地,在大規模并行系統中,應用恢復時間相比計算時間和檢查點時間開銷非常小,在此處檢查點優化分析中可以忽略不計。
當應用的故障發生時間T在[starttime+n(Tc+Ts),starttime+(n+1)(Tc+Ts)],n=0,1,…之間時,那么沒有用于計算的時間Tw=T-starttime-nTc。Tw是檢查點容錯的開銷,包括用于檢查點的時間和故障發生時丟失的計算時間。
根據應用級失效分布函數,可以得到Tw的期望值(即平均檢查點容錯開銷):
fjob(N,t)dt
(6)
當E(Tw)達到最小時,可以認為應用的檢查點容錯開銷最小。在應用規模確定后(N和Ts是常量),目標是尋找合適的Tc使得E(Tw)達到最小。這歸結為一個數學最優化問題。本文采用最優化方法和應用數學包來解決尋找最優化Tc的問題。
在檢查點間隔優化模型中,注意到應用的失效概率密度函數f(t,N)參數中的ftimei,在應用啟動后未發生故障的時間段內,可以用初始的參數值ftimei來計算Tc的最優化解。但應用發生了失效并重新啟動運行后,發生故障的計算單元的ftimei就要相應地進行修正。因此,基于檢查點時序模型的優化策略,在應用發生失效之前,存在一個最優檢查點間隔;當應用發生失效后,需要更新應用失效分布中故障計算單元的失效時間參數ftimei,并重新計算最優檢查點時間間隔,如圖8所示。此外,從細粒度失效分布模型分析可以發現,隨著系統負載的變化和時間的推移,計算單元的失效分布模型參數(mi和ηi)也隨之變化。計算單元失效分布參數的變化,說明應用的失效分布是一個動態變化的模型,隨著系統實際運行進行動態變化。

圖8 動態作業失效模型
綜上所述,檢查點間隔優化是一個動態更新過程,該過程具有自適應特征。
計算單元故障發生時間(ftimei)的調整,可以用系統記錄的嚴重故障發生時間直接替換即可。而失效分布參數(mi和ηi)的調整,本文采用基于p值的自適應優化方法進行動態調節。
計算單元分布參數的調整,采用基于p值的自適應分布模型參數優化算法(算法1)。隨著故障采樣窗口的移動,以Kolmogorov-Smirnov檢驗的評估參數p-value作為標準,動態地對失效模型的參數進行修正,提高失效分布模型的準確度。
算法1基于p值的自適應分布模型參數優化
輸入計算單元i的擬合窗口寬度width,當前發生故障時間ftime,最近故障數據歷史采樣ftime1,ftime2,…,ftimewidth-1,最近擬合的Weibull分布參數mi和ηi
輸出計算單元i的最新優化Weibull分布參數mi和ηi
步驟1need_refresh=false;
threshold = 0.5;
步驟2IF 參數mi和ηi為0(說明是第一次計算分布參數或者需要重新更新分布參數)
THEN
選取最近的width個嚴重故障發生時間采樣數據,采用最大似然估計法計算weibull分布的參數;
ELSEIF 參數mi和ηi都不為0
THEN
need_refresh = true;
步驟3采用kolmogorov-smirnov檢驗,檢驗最近width個故障采樣與weibull分布擬合度,得到p-value。
IF((p-value > threshold)‖(need_refresh==false))
THEN
輸出參數mi和ηi;
ELSE IF (need_refresh == true)
need_refresh = false;
置參數mi和ηi為0;
GOTO 步驟2;
算法1的主要思想是通過對嚴重故障發生時間的采樣,利用最大似然估計法得到計算單元的分布參數。在出現新的故障后,視情況動態調整分布參數。采用Kolmogorov-Smirnov檢驗來評估是否需要重新調整分布參數。如果p-value表明基于原來參數的分布與最新故障采樣符合度達到要求,則無需調整分布參數;否則,采用最大似然估計重新計算分布參數。
本文選取太湖之光系統的一個機倉(4機倉),以實際故障為依據,分析檢查點優化的策略及效果。故障數據采集周期為1 a。在該周期中,系統運行以計算密集型課題為主,兼顧訪存、通信和IO密集型課題。檢查點優化過程如圖9所示。

圖9 自適應檢查點優化
表5是根據故障歷史數據計算得到的CPU節點的初始Weibull分布參數(K-S檢驗p-value值都大于0.5)。從表5可以看出,CPU節點之間的可靠性存在顯著差異。

表5 CPU節點及其Weibull分布參數(m,η)
使用檢查點優化模型對2CPU、4CPU、8CPU、16CPU、32CPU和64CPU規模的應用進行檢查點優化分析。結合最優化方法,得到典型的檢查點保留開銷下的最優檢查點間隔時間,如表6所示。隨著保留開銷的增加,應用的最優保留間隔時間也隨之增加。不同規模應用的平均中斷時間(Mean Time To Interrupt,MTTI)如圖10所示,可以看出,隨著應用規模2的冪次遞增,應用MTTI呈現指數級下降。一方面,是由于規模遞增導致的可靠性下降;另一方面,由于CPU節點的可靠度差異,可靠度低的節點顯著拉低了應用運行環境整體可靠性。

表6 最優檢查點間隔時間Tc s

圖10 不同規模的平均中斷時間
最優檢查點間隔曲線如圖11所示,隨著應用MTTI的下降,應用最優化保留間隔也隨之減小,說明頻繁的故障需要更加頻繁地進行檢查點保留,才能保護好已經完成的計算工作,降低故障損失。

圖11 最優化檢查點間隔
圖12是不同應用規模在典型檢查點保留開銷下,常用檢查點間隔時間與最優檢查點間隔的容錯開銷對比??梢钥闯?在每種檢查點保留開銷(Ts=1 min、5 min、10 min、30 min)下,最優保留間隔時間下檢查點容錯開銷都達到最小。例如,在4CPU應用規模下,在檢查點保留開銷為1 min時,最優檢查點間隔造成的容錯開銷相比典型檢查點保留間隔1 h、4 h、8 h和16 h下的容錯開銷,分別只有其90%、54%、37%和26%??梢?數據驅動的檢查點優化方法,可以有效降低檢查點容錯開銷,提高容錯運行環境下的應用執行效率。

圖12 各種應用規模下不同保留間隔的容錯開銷對比
此外,從2CPU~64CPU應用規模的檢查點容錯開銷趨勢中可以看出,隨著規模上升,應用可靠性下降,當一次檢查點保留開銷接近甚至明顯大于應用MTTI時,最優檢查點間隔下的容錯開銷相比其他檢查點間隔時間下的容錯開銷,已經沒有明顯的優勢。此時,容錯的開銷已經接近應用的MTTI,說明檢查點容錯已經很難使用,因為應用運行時間基本都用于進行容錯,真正執行時間非常少。如果沒有有效地降低單次檢查點時間開銷的方法,則基于檢查點的容錯技術已經沒有效果。如果在未來E級超級計算機中,應用運行環境平均無故障時間接近或小于一次保留的時間開銷,那么檢查點技術無法保證應用高效執行,只有提高可靠性、降低保留開銷或者采用基于故障預測的前瞻容錯技術才能保證應用的高效與容錯運行。
本文基于太湖之光超級計算機的維護與監控基礎架構,介紹了故障的采集、分類和預處理機制。針對超級計算機的主機系統故障,建立細粒度的故障分布模型描述主機系統復雜多樣故障的特征,運用應用級失效分布模型評估應用運行的可靠性。利用超級計算機中典型的檢查點容錯技術,根據計算單元的動態故障特征和應用級失效模型,建立數據驅動的自適應容錯模型。以太湖之光系統為例分析了檢查點優化的方法和效果,驗證了數據驅動自適應容錯的有效性。