天天看點

伺服器可靠性提升(一)記憶體CE增強隔離技術

伺服器可靠性提升(一)記憶體CE增強隔離技術

“穩定性及成本效益是雲服務的核心競争力。穩定性是基礎,沒有它雲服務的摩天大樓分分鐘就變成危房。雖然雲原生架構的應用能更好地容忍單點的故障,但這并不意味着我們可放低标準,因為即使是單點故障也通常會對客戶造成影響、破壞口碑,更不要說是系統整體故障。”阿裡巴巴研究員餘鋒曾在2018年杭州雲栖大會技術分享時表示。

為了提升系統的穩定, 阿裡巴巴基礎設施伺服器系統創新團隊聯合阿裡雲等業務團隊,對伺服器硬體問題導緻非預期的當機進行治理。

提升系統的整體可靠性,為什麼首先從記憶體入手?

1)記憶體部件作為馮諾伊曼的計算機體系結構中,發展的最快的部件之一,記憶體的發展和演進速度已經超過CPU的發展速度,同時記憶體占據最重要的位置之一,作為直接向中央處理器提供資料緩存的關鍵部件,記憶體系統的故障,直接導緻處理器停止響應,導緻系統當機;

2)從計算機記憶體的工程工藝角度,記憶體作為近幾年技術飛速發展的一個部件,單DIMM容量從幾百M到今天的最大幾百G,記憶體的存儲密度越來越高,記憶體的電壓越來越低,與之相反的,記憶體的主頻反而越來越高,記憶體作為一個半導體的器件,存儲單元的密度上升,電壓降低,主頻的提升,這些不利因素,抵消掉半導體可靠性技術提升的紅利以後,導緻記憶體的故障率升高。

3)随着CPU處理器技術的發展,單CPU支援的記憶體容量越來越大,目前主流的CPU,從兩年前的兩個通道,發展到現在的六個通道,DDR通道的帶寬和頻率相對兩年前提升一倍以上,與之對應的伺服器配置的記憶體條數越來越多,總容量越來越大,運作頻率越來越高,這些也導緻了整個計算機系統中,記憶體出現問題的比率越來越高。從統計資料上看,記憶體故障導緻的當機比率占到很大一部分,這符合預期,記憶體失效問題比例高也在情理之中。

伺服器可靠性提升(一)記憶體CE增強隔離技術

是以對于硬體導緻的非預期當機問題的治理也是先從降低記憶體故障率入手。

通過對某典型産品業務硬體當機資料分析, 發現UCE(不可糾正錯誤)問題占比在記憶體故障導緻的當機問題中超過大半, 是以記憶體故障治理也主要聚焦在如何降低記憶體UCE問題,伺服器團隊目前主要做了以下方面的工作:

記憶體故障隔離增強,避免持續惡化

1.記憶體錯誤的分級處理

2.伺服器故障診斷系統

未來針對伺服器可靠性提升,還會陸續開展以下幾個方面:

1.資源級/硬體級的故障隔離

2.記憶體故障預測

3.HDD &SSD 故障預測

為什麼要做記憶體CE的增強隔離?

現在的記憶體都已經有ECC校驗功能,單個bit錯誤會自動糾正過來,不會對系統造成影響。既然記憶體最常見的錯誤已經能夠被自動糾正過來,且不會對系統的運作造成影響,那麼我們還有必要做增強的故障記憶體隔離嗎,記憶體故障增強隔離到底增強了些什麼,我們這樣做的收益到底是什麼?

首先,這裡直接引用google paper《DRAM Errors in the Wild: A Large-Scale Field Study》中的結論。如下

伺服器可靠性提升(一)記憶體CE增強隔離技術

Correlations between correctable and uncorrectable errors in the same DIMM.The left graph shows the UE probability in a month depending on whether there were CEs in the same month or in the previous month. The numbers on top of the bars give the increase in UE probability compared to a month without Ces (three left-most bars) and the case where there were no Ces in the previous month (three right-most bars). The right graph shows the factor increase in the probability of observing an UE as a function of the number of Ces in the same month.

記憶體條在一段時間内有可糾正錯誤産生,這條記憶體再次出現問題的機率會明顯增加,出現CE和UE的機率都會變高。CE需要作業系統來處理,會消耗系統的處理資源,UE在目前的Intel Xeon處理器上,會直接導緻當機。記憶體增強隔離通過對已經出現錯誤的記憶體單元進行處理,來達到消除影響系統正常運作的潛在風險,進而提升系統可靠性。是以,雖然目前的伺服器記憶體,已經支援了單bit自動糾錯的功能,但是為了提升系統的可靠性,降低記憶體問題導緻的性能下降,當機風險,記憶體的單bit糾錯功能是不夠的,還需要采取一些額外的方式,來提升系統的可靠性。

了解核心的人可能會問,linux作業系統中有一整套完備的機制,來對記憶體的故障進行管理。作業系統也支援記憶體的故障管理了,阿裡的增強隔離和Linux中的記憶體故障管理有什麼差異,難道比Linux的記憶體故障管理還要全面嗎?Linux對記憶體的故障管理定義的比較完整。Linux對記憶體的錯誤主要是依照MCE來進行處理的。

目前OS中,對于記憶體page的隔離是通過系統的mcelog服務實作。mcelog中的MCE隔離動作如下:

伺服器可靠性提升(一)記憶體CE增強隔離技術

通過這些表格可以看到linux作業系統對記憶體的故障做了一些處理,Linux對記憶體的故障處理使用了一些故障管理的腳本,留了一些處理接口,依照這些腳本和接口,能夠減少一些記憶體故障對系統的影響,但是這些接口和處理腳本,還存在一些問題解決不了,其中最大的一個障礙就是OS能夠感覺,能夠處理的問題,都不算是太嚴重的問題,都是可以解決的問題。有相當一部分的問題,OS感覺到的時候,OS已經死掉了。對于這一類的問題,是目前引起伺服器當機的主要問題。

為此,基礎設施伺服器系統創新團隊,獨創一套機制,通過帶内帶外的方式,成功的在OS的基礎上,設計出一套記憶體故障隔離增強的解決方案。

——當檢測到系統的記憶體出現一些輕微的故障的時候,我們通過基于出錯存儲單元實體位置的相關性,統計出錯單元的故障頻度和故障數變化率,使用基本的漏桶算法加上人工智能的自學習算法,來評估這個故障會不會惡化,進而決策是否需要将這個記憶體單元從系統中隔離出來。

——通過和阿裡核心,阿裡固件的配合,來確定隔離操作成功,并且不會對作業系統的運作以及業務軟體的運作造成影響,進而将記憶體故障成功的控制在問題發生的初期。

——通過提前對故障的記憶體單元進行處理,確定業務運作的穩定性,降低當機率,提升系統穩定性, 目前阿裡的記憶體故障隔離技術對優化當機率的貢獻,已經做到了25%。

總結

針對目前OS中mcelog 服務的不足,基礎設施伺服器創新團隊做了上述的增強改進。通過對故障記憶體page 的有效隔離,避免進一步出現不可糾正的記憶體錯誤,降低當機率提升系統穩定性。

對于記憶體故障隔離,未來将會根據記憶體故障位址解析所在的 row 、colom 、bank ,rank 等,更加精準的判讀出故障機關在記憶體DIMM上分布情況, 了解記憶體錯誤在一個DIMM上的分布情況。同時也會基于預測算法對故障單元周圍的顆粒進行提前隔離。

目前關鍵的技術已經突破,核心idea也已經申請專利。

伺服器可靠性提升(一)記憶體CE增強隔離技術

繼續閱讀