北京2023年10月27日 /美通社/ -- 近日,浪潮云海首席科學(xué)家張東、資深研究員亓開元在《中國計算機(jī)學(xué)會通訊》2023年第9期發(fā)表論文《面向一云多芯的系統(tǒng)設(shè)計方法》,深入分析一云多芯背后的關(guān)鍵挑戰(zhàn)問題,闡釋面向一云多芯的系統(tǒng)設(shè)計方法和關(guān)鍵技術(shù)路線,并在此基礎(chǔ)上,描繪了一云多芯三階段發(fā)展路線圖,為促進(jìn)一云多芯向應(yīng)用感知、架構(gòu)無感知的目標(biāo)迭代演進(jìn)提供新思路。
近年來,巨大的市場需求加速了我國云計算軟硬件的發(fā)展,從芯片、整機(jī)、云操作系統(tǒng)、中間件到應(yīng)用軟件的云計算創(chuàng)新鏈、產(chǎn)業(yè)鏈已初步形成。隨著行業(yè)"上云用數(shù)賦智"進(jìn)程的不斷加速和深化,應(yīng)用場景呈現(xiàn)多樣化趨勢,越來越多的數(shù)據(jù)中心選擇多元化的算力構(gòu)建,給融合池化管理和靈活彈性調(diào)度帶來了新的挑戰(zhàn)。
中央處理器(CPU)作為應(yīng)用最廣泛的算力器件,多廠商、不同架構(gòu)疊加組合造成的多元異構(gòu)現(xiàn)象尤為突出。Intel、AMD等x86架構(gòu)仍是數(shù)據(jù)中心的主導(dǎo)力量,但占比逐步縮減;ARM架構(gòu)憑借運算核心多、功耗低等優(yōu)勢,發(fā)展勢頭強(qiáng)勁;開源的RISC-V架構(gòu)也逐步興起。同時,在全球產(chǎn)業(yè)鏈重構(gòu)的背景下,我國核心器部件的研發(fā)和生產(chǎn)也進(jìn)入蓬勃發(fā)展階段,但因起步較晚、技術(shù)路線各異、發(fā)展水平不一,多元異構(gòu)處理器將會長期并存發(fā)展。
一云多芯關(guān)鍵科學(xué)問題
云計算作為一種追求性價比的算力供給模式,其處理器的升級、換代和擴(kuò)容正從單一架構(gòu)向多元異構(gòu)轉(zhuǎn)變。在多元異構(gòu)處理器功能、性能和可靠性存在差異的情況下,為滿足高效穩(wěn)定的技術(shù)需求,實現(xiàn)應(yīng)用跨處理器低成本或自由切換,規(guī)避供應(yīng)風(fēng)險,保障關(guān)鍵業(yè)務(wù)長期穩(wěn)定運行,"一云多芯"成為云計算發(fā)展的必然趨勢。
互聯(lián)網(wǎng)行業(yè)面向公有云的一云多芯工作開始得較早,憑借技術(shù)和資金儲備自研高性價比的處理器,如亞馬遜推出基于ARM的Graviton處理器,打破了對x86架構(gòu)的依賴。針對行業(yè)私有云南向資源多樣性與北向應(yīng)用復(fù)雜性的矛盾,目前國內(nèi)金融、電信、能源等行業(yè)也已開始進(jìn)行一云多芯的研究和建設(shè),早期通過云管理層實現(xiàn)納管多個異構(gòu)資源池,雖然能形成統(tǒng)一入口,但由于資源池割裂、應(yīng)用無法跨架構(gòu)編排,造成資源供給效率低下。
云海云操作系統(tǒng)(InCloud OS)、Apsara Stack、EasyStack等通過單一資源池實現(xiàn)異構(gòu)資源的統(tǒng)一調(diào)度和互聯(lián)互通,但當(dāng)前階段主要解決"多芯"的混部問題,距離以應(yīng)用為中心的跨架構(gòu)運行和低成本切換尚有較大差距。為滿足多芯共存條件下業(yè)務(wù)的穩(wěn)定運行、平滑切換和彈性伸縮,如下科學(xué)問題和技術(shù)難題亟待解決。
1.應(yīng)用跨架構(gòu)可移植及運行環(huán)境等價性問題。應(yīng)用程序運行在多芯系統(tǒng)不同處理器架構(gòu)的節(jié)點上,首先需要確保程序本身的跨架構(gòu)可移植。進(jìn)一步,層次化、模塊化的復(fù)雜應(yīng)用在異構(gòu)節(jié)點間進(jìn)行動態(tài)遷移、遠(yuǎn)程調(diào)用或水平擴(kuò)展,如何保障運行環(huán)境(操作系統(tǒng)、運行時、依賴庫等)的跨架構(gòu)等價可執(zhí)行成為挑戰(zhàn)(見圖1)。
2.多元異構(gòu)算力量化分析和負(fù)載感知調(diào)度問題。多元異構(gòu)CPU性能差異達(dá)2~10倍,附加異構(gòu)加速單元的節(jié)點間計算能力的差異更是數(shù)量級的。應(yīng)用在異構(gòu)節(jié)點間遷移、切換或伸縮時,需要保證用戶體驗前后一致,遵守業(yè)務(wù)的服務(wù)水平協(xié)議(Service Level Agreement,SLA)。如何針對多元異構(gòu)算力等價關(guān)系進(jìn)行評估建模和量化分析,實現(xiàn)負(fù)載感知均衡調(diào)度和自適應(yīng)彈性伸縮成為關(guān)鍵科學(xué)問題。
3.非對等架構(gòu)下分布式應(yīng)用的狀態(tài)一致性保證問題。相比于傳統(tǒng)分布式節(jié)點的對等性,一云多芯應(yīng)用分布的異構(gòu)節(jié)點非對等性不容忽視。針對非對等分布式云原生應(yīng)用,實現(xiàn)有狀態(tài)任務(wù)在異構(gòu)節(jié)點間高效一致性共識協(xié)商和數(shù)據(jù)同步,以及無狀態(tài)任務(wù)的非侵入流量動態(tài)控制和平滑切分,成為跨架構(gòu)云原生應(yīng)用編排的關(guān)鍵技術(shù)難點。
一云多芯系統(tǒng)設(shè)計和關(guān)鍵技術(shù)
ACM圖靈獎獲得者尼古拉斯·沃斯(Niklaus Wirth)提出了著名的公式"程序=數(shù)據(jù)結(jié)構(gòu)+算法",揭示了程序的時間和空間本質(zhì)。一云多芯系統(tǒng)作為一種軟件定義外延,除了數(shù)據(jù)平面的指令邏輯和數(shù)據(jù)狀態(tài)兩個時空要素外,還包括控制平面對多元異構(gòu)資源的管控。因此,一云多芯系統(tǒng)可以抽象為"資源管理+運行程序+數(shù)據(jù)狀態(tài)"。
其中,資源管理通過軟件定義提供計算、存儲、網(wǎng)絡(luò)和安全等硬件資源抽象,以虛擬機(jī)、容器、裸金屬(bare metal)等粒度為應(yīng)用提供資源封裝及運行環(huán)境;運行程序按照分層解耦分為資源層、平臺層和應(yīng)用層,例如,承載用戶業(yè)務(wù)的應(yīng)用程序、資源管理程序;數(shù)據(jù)狀態(tài)是指程序運行所依賴的內(nèi)存瞬時數(shù)據(jù)、數(shù)據(jù)庫持久化數(shù)據(jù)及流量狀態(tài)等。
根據(jù)上述定義,一云多芯系統(tǒng)應(yīng)從程序的可運行性、資源的可管理性及狀態(tài)的可遷移性三方面分別進(jìn)行設(shè)計。
1. 程序的可運行性程序的跨架構(gòu)運行在一云多芯系統(tǒng)中,程序的首要設(shè)計目標(biāo)是可運行性,即可以在不同處理器架構(gòu)的環(huán)境中移植運行,技術(shù)路線包含跨平臺語言、跨平臺編譯以及指令翻譯技術(shù)(見下表程序的跨架構(gòu)運行技術(shù))
主要特點 |
適用場景 |
局限性 |
|
跨平臺語言 |
程序本身適用具有跨平臺特性的編程 |
Web應(yīng)用、OpenStack各組 |
運行時環(huán)境依賴、本地庫依賴 |
跨平臺編譯 |
通過編譯生成與目標(biāo)架構(gòu)匹配的二進(jìn) |
應(yīng)用的跨平臺構(gòu)建。例如通過 |
對于可執(zhí)行程序、仍然需要二 |
二進(jìn)制翻譯 |
無需重新編譯。實現(xiàn)二進(jìn)制指令的直接 |
桌面輕量應(yīng)用、模擬器、科研 |
性能損耗較大,對處理器能力 |
跨平臺語言以Java、Python為代表,通過跨平臺語言實現(xiàn)程序架構(gòu)無關(guān)部分的跨架構(gòu)運行,但仍然存在一些架構(gòu)相關(guān)的問題:(1)運行時環(huán)境依賴,例如,Java程序在多芯系統(tǒng)中運行需要提供不同架構(gòu)的Java虛擬機(jī)(Java Virtual Machine,JVM)運行時;(2)本地庫依賴,例如Java本地接口(Java Native Interface,JNI)需要跨平臺移植。
跨平臺編譯即交叉編譯,借助特定處理器架構(gòu)環(huán)境及編譯工具生成其他架構(gòu)的可執(zhí)行程序。交叉編譯通過架構(gòu)無關(guān)的源代碼實現(xiàn)程序的跨平臺二進(jìn)制代碼生成,但是對于可執(zhí)行程序,仍然需要統(tǒng)一二進(jìn)制代碼與處理器架構(gòu)。
二進(jìn)制翻譯即指令集翻譯技術(shù),是解決應(yīng)用跨架構(gòu)移植問題的研究熱點,實現(xiàn)方法包括軟件級二進(jìn)制翻譯和芯片級二進(jìn)制翻譯。無論軟件級還是芯片級,均受到翻譯系統(tǒng)的限制。軟件級二進(jìn)制翻譯需要對應(yīng)用運行環(huán)境進(jìn)行改造,增加了運行環(huán)境的復(fù)雜性,而芯片級二進(jìn)制翻譯過程性能損耗嚴(yán)重。例如,目前針對純運算類程序的翻譯器效率是直接編譯的60%~70%,如果涉及系統(tǒng)調(diào)用、鎖等操作,效率將下降到30%~40%,并且二進(jìn)制翻譯過程依然存在指令集不兼容的問題,例如高級矢量擴(kuò)展(Advanced Vector Extensions,AVX)指令。
運行時的等價封裝
跨平臺語言解決了應(yīng)用的跨架構(gòu)問題,但是需要提供跨架構(gòu)的運行時;交叉編譯解決了跨架構(gòu)編譯問題,但是仍然存在運行時的動態(tài)庫依賴問題。因此,程序在多芯系統(tǒng)中運行不僅需要考慮自身的可運行性,對于現(xiàn)代化的復(fù)雜應(yīng)用,還應(yīng)綜合考慮其依賴的運行時??尚械穆肪€是結(jié)合標(biāo)準(zhǔn)化的容器方式對應(yīng)用程序及其運行時依賴進(jìn)行封裝,作為實現(xiàn)應(yīng)用的跨架構(gòu)部署及切換的基礎(chǔ)資源封裝。
也就是說,基于同一套源代碼,針對不同的架構(gòu)構(gòu)建不同的容器鏡像,如果程序是基于跨平臺的語言構(gòu)建的,則將程序腳本或中間代碼與運行時封裝為容器;如果程序是基于非跨平臺的語言構(gòu)建的,則可以通過交叉編譯,構(gòu)建各種架構(gòu)下的二進(jìn)制文件,然后將其與依賴庫等封裝為容器,此流程可以通過一套流水線作業(yè)自動構(gòu)建,并推送至鏡像庫。
綜上所述,一云多芯程序可運行性設(shè)計包括三個方面,首先實現(xiàn)應(yīng)用程序的跨架構(gòu)編譯及運行,其次構(gòu)建標(biāo)準(zhǔn)容器化封裝,最后通過云資源編排管理實現(xiàn)輕量化部署(見圖2)。
2.資源的可管理性資源可管理性包括架構(gòu)感知和算力量化分析,以及面向系統(tǒng)的資源均衡調(diào)度和面向業(yè)務(wù)的彈性伸縮。
架構(gòu)感知技術(shù)架構(gòu)感知是一云多芯實現(xiàn)節(jié)點調(diào)度、界面功能自適應(yīng)展示的關(guān)鍵,是支撐程序的可運行性、實現(xiàn)資源封裝生命周期管理的基礎(chǔ),可通過收集器、調(diào)度器、攔截器實現(xiàn)。(1)收集器采集并上報各節(jié)點的CPU架構(gòu)、硬件特性等信息,建立包含架構(gòu)特性的主機(jī)列表。(2)調(diào)度器為各種粒度的資源封裝選擇匹配的主機(jī)節(jié)點,采用級聯(lián)過濾器機(jī)制,加載多個獨立的過濾器,依次對創(chuàng)建請求與主機(jī)進(jìn)行匹配。在一云多芯場景下,通過級聯(lián)架構(gòu)感知過濾器,識別資源封裝創(chuàng)建請求中的鏡像架構(gòu)標(biāo)簽,根據(jù)CPU架構(gòu)特性匹配結(jié)果過濾出主機(jī)節(jié)點。(3)攔截器用于建立可動態(tài)擴(kuò)展的"架構(gòu)-功能"映射矩陣,解析資源封裝管理請求的動作及架構(gòu)特征,執(zhí)行攔截請求并將結(jié)果反饋展示,從而實現(xiàn)不同架構(gòu)功能差異化的自動識別、動態(tài)擴(kuò)展,屏蔽底層實現(xiàn)差異,提供統(tǒng)一的資源管理視圖。
算力量化技術(shù)
因不同架構(gòu)的處理器計算能力不同,相同應(yīng)用即便使用了同等規(guī)格的資源封裝(例如相同的CPU核心、內(nèi)存等),在異構(gòu)環(huán)境上運行的性能也存在差異。根據(jù)應(yīng)用場景,算力可分為CPU通用算力和XPU異構(gòu)算力。一云多芯系統(tǒng)目前面臨的主要問題是CPU的多元異構(gòu),多廠商的ARM、x86架構(gòu)處理器在指令集、核心數(shù)、生產(chǎn)工藝等方面均有所不同,因此在性能上也存在差異。這種差異性可以通過算力等價關(guān)系刻畫,根據(jù)層次劃分為規(guī)格算力、有效算力和業(yè)務(wù)算力(見表2)。
其中,規(guī)格算力的通用性最強(qiáng),有效算力對特定負(fù)載類型更具針對性,業(yè)務(wù)算力更加貼近真實的應(yīng)用場景,但由于負(fù)載和應(yīng)用的多樣性,有效算力、業(yè)務(wù)算力的測算需要聯(lián)合上下游生態(tài)共同完成。
定義 |
測算對象 |
量化方法 |
測算工具 |
|
規(guī)格算力 |
從服務(wù)器系統(tǒng)資源層面測試評估
|
處理器、內(nèi)存、磁盤和 |
系統(tǒng)整機(jī)規(guī)格性能基 |
SPEC CPU、 |
有效算力 |
從平臺層面測試評估中間件的資 |
Redis、MySQL、 |
針對中間件的井發(fā)性 |
Redis-Benchmark 、 |
業(yè)務(wù)算力 |
從應(yīng)用層面使用真實業(yè)務(wù)負(fù)載測 |
客戶關(guān)系管理(CRM) |
針對業(yè)務(wù)事務(wù)處理能 響應(yīng)時延、選代時間等 |
Jmeter、LoadRunner |
均衡調(diào)度技術(shù)
從資源層面,在為資源封裝選擇節(jié)點時,根據(jù)節(jié)點計算能力利用均衡策略對負(fù)載進(jìn)行調(diào)度,這是一個以資源利用率最大化為目標(biāo)的約束優(yōu)化問題。均衡調(diào)度算法作用在級聯(lián)過濾器之后,從過濾出的主機(jī)節(jié)點中選擇負(fù)載相對最小的作為最終目標(biāo),對于一云多芯系統(tǒng),此過程的關(guān)鍵是節(jié)點的算力量化分析?;谝?guī)格算力評估多類型資源的規(guī)格系數(shù),再結(jié)合歸一化、主資源公平等數(shù)值方法,能夠測算出各節(jié)點的可用算力。基于歸一化的算法如下:
節(jié)點j的得分Scorej是r種資源類型權(quán)重得分之和,包括CPU、內(nèi)存、硬盤等,如式(1)。各資源類型權(quán)重得分算法如式(2),其中,ResourceNormalizedji為節(jié)點j資源i可分配量的最小-最大正向歸一化,如式(3)所示;WeighterMultiplieri為資源的權(quán)重,可根據(jù)負(fù)載的CPU、內(nèi)存或IO密集類型調(diào)整權(quán)重,體現(xiàn)每種資源的重要程度,coefficientji為各資源的規(guī)格算力系數(shù),例如,ARM型和x86型CPU的規(guī)格算力量化關(guān)系為1∶2,規(guī)格系數(shù)分別為1和2,可分配CPU核數(shù)相同的情況下,x86型節(jié)點被調(diào)度的優(yōu)先級更高,從而實現(xiàn)一云多芯場景下基于算力量化的均衡調(diào)度。
彈性伸縮技術(shù)
為了支撐面向業(yè)務(wù)峰值和低谷的彈性伸縮,要做到資源封裝的精準(zhǔn)規(guī)劃、快速調(diào)度和算力等價,保證應(yīng)用服務(wù)彈得對、彈得快、彈得準(zhǔn)。(1)在資源規(guī)劃方面,根據(jù)應(yīng)用負(fù)載特定周期內(nèi)的概率分布特征,基于歷史數(shù)據(jù)時間序列建立負(fù)載趨勢模型,刻畫應(yīng)用負(fù)載、服務(wù)質(zhì)量與資源關(guān)系的負(fù)載畫像和容量畫像,通過負(fù)載趨勢預(yù)測和應(yīng)用異常反饋方式規(guī)劃資源封裝伸縮需求。(2)在快速調(diào)度方面,基于架構(gòu)感知、均衡調(diào)度技術(shù),在擴(kuò)展資源封裝時快速調(diào)度至最佳節(jié)點,并拉起應(yīng)用服務(wù),保障應(yīng)用服務(wù)及時響應(yīng)。(3)在彈性伸縮引發(fā)資源封裝跨架構(gòu)切換時,基于算力量化技術(shù)刻畫不同架構(gòu)的算力,根據(jù)有效算力、業(yè)務(wù)算力計算資源封裝的等價關(guān)系,確保業(yè)務(wù)的服務(wù)質(zhì)量隨資源增減而線性伸縮。
3.狀態(tài)的可遷移性資源層的應(yīng)用狀態(tài)遷移將持久化數(shù)據(jù)、內(nèi)存瞬時狀態(tài)、外設(shè)配置以及網(wǎng)絡(luò)流量整體遷移至目標(biāo)節(jié)點,涉及資源封裝內(nèi)所有相關(guān)數(shù)據(jù)狀態(tài)。除了應(yīng)用本身之外,還涉及操作系統(tǒng)、中間件等,遷移難度較大。為解決此問題,可進(jìn)一步遵循資源層、平臺層和應(yīng)用層解耦的思路,采用基于云原生微服務(wù)治理的狀態(tài)同步和流量切分方法。
資源封裝遷移
虛擬機(jī)的在線熱遷移技術(shù)已經(jīng)相對成熟,通常通過預(yù)拷貝算法將源虛擬機(jī)的內(nèi)存增量狀態(tài)以迭代的方式傳輸?shù)侥康闹鳈C(jī),也出現(xiàn)了后拷貝、混合拷貝等優(yōu)化算法以及硬件壓縮加速技術(shù),加速內(nèi)存拷貝收斂,減少停機(jī)時間,提升遷移效率。但是虛擬機(jī)遷移仍存在相同廠商CPU代際差距、不同廠商同架構(gòu)兼容性、不同架構(gòu)無法熱遷移的限制。容器的在線遷移技術(shù)研究起步較晚,本質(zhì)上是進(jìn)程組的遷移,當(dāng)前的研究主要基于用戶空間的檢查點和恢復(fù)(Checkpoint and Restore In Userspace,CRIU)實現(xiàn)容器運行時狀態(tài)的遷移,并衍生出了一系列縮短遷移時間、降低不可用時間的優(yōu)化方法。
此外,自適應(yīng)容器在線遷移通過動態(tài)調(diào)整壓縮算法的加速因子實現(xiàn)CPU和網(wǎng)絡(luò)帶寬資源的匹配,減少容器快照的傳輸時間。以虛擬機(jī)和容器為資源封裝粒度的整體遷移,雖然已經(jīng)有了一些研究與應(yīng)用,但是仍存在遷移數(shù)據(jù)量大、停機(jī)時間和總遷移時間長的問題,實現(xiàn)應(yīng)用跨架構(gòu)平滑切換難度較大。隨著云原生技術(shù)的發(fā)展,結(jié)合服務(wù)治理方式成為可行路線,其中的關(guān)鍵技術(shù)包括有狀態(tài)服務(wù)的數(shù)據(jù)同步、無狀態(tài)服務(wù)的流量切換。
數(shù)據(jù)狀態(tài)同步
多副本的狀態(tài)同步依賴于分布式一致性算法。ACM圖靈獎獲得者萊斯利·蘭伯特(Leslie Lamport)提出了基于消息傳遞且具有高容錯性的Paxos共識算法,ZooKeeper的ZAB,MySQL的wsrep、Etcd,Redis的Raft協(xié)議都基于其核心思想實現(xiàn)了數(shù)據(jù)狀態(tài)一致性。在此基礎(chǔ)上,一云多芯平臺層的數(shù)據(jù)狀態(tài)同步需要進(jìn)一步考慮節(jié)點非對稱特征。下文以Raft協(xié)議為例進(jìn)行說明。
選舉(leader election)過程:主節(jié)點(leader)向所有的從節(jié)點(follower)周期性發(fā)送心跳來保證主節(jié)點地位,當(dāng)一個從節(jié)點在一個超時周期內(nèi)沒有收到心跳,則該節(jié)點轉(zhuǎn)化為候選(candidate)節(jié)點參與選舉。一云多芯系統(tǒng)中各節(jié)點的處理能力、網(wǎng)絡(luò)條件等不同導(dǎo)致超時影響差異化,可采用基于極大似然估計的適應(yīng)性方法,避免心跳延遲大、處理能力弱的節(jié)點頻繁觸發(fā)選舉,同時保證處理能力強(qiáng)的節(jié)點可快速發(fā)起選舉。對于投票策略,采用節(jié)點優(yōu)先級或縮小隨機(jī)超時取值范圍機(jī)制,使強(qiáng)節(jié)點更容易獲得多數(shù)票。
復(fù)制(log replication)過程:采用法定寫入(quorum write)機(jī)制,主節(jié)點接收來自客戶端的請求,向從節(jié)點發(fā)起寫入提議并接收反饋投票,每個提議獲得的票數(shù)大于半數(shù)才能提交寫入。在一云多芯中異構(gòu)節(jié)點作為容災(zāi)可用區(qū)(Availability Zone,AZ)設(shè)計,須保證各容災(zāi)可用區(qū)都被寫入。
業(yè)務(wù)流量切分
云原生應(yīng)用通過網(wǎng)關(guān)或負(fù)載均衡器將流量分發(fā)至各無狀態(tài)副本實例,流量就是無狀態(tài)工作負(fù)載的狀態(tài)。在多芯系統(tǒng)中,當(dāng)應(yīng)用在異構(gòu)節(jié)點間遷移或彈性伸縮時,需要切分流量,并引流至對應(yīng)節(jié)點的副本上。為保證服務(wù)質(zhì)量不降級,根據(jù)有效算力、業(yè)務(wù)算力量化分析確定等價目標(biāo)副本的規(guī)格和數(shù)量,并分配其承擔(dān)的流量比例,流量切換應(yīng)與業(yè)務(wù)邏輯充分解耦,可采用服務(wù)網(wǎng)格的思想實現(xiàn)。
控制面感知副本變化生成流量切分策略,下發(fā)至網(wǎng)絡(luò)代理和網(wǎng)關(guān)。對于東西向流量,網(wǎng)絡(luò)代理劫持流量并根據(jù)切分策略按比例轉(zhuǎn)發(fā)到不同的副本。對于南北向流量,網(wǎng)關(guān)在流量轉(zhuǎn)發(fā)時根據(jù)切分策略轉(zhuǎn)發(fā)到不同副本。在流量切分的瞬時過程中,受目標(biāo)節(jié)點副本未啟動、TCP連接延遲等因素的影響,會出現(xiàn)無法響應(yīng)、丟包等應(yīng)用服務(wù)質(zhì)量下降的情況,可以通過預(yù)熱、探針、重試、排水技術(shù)保障應(yīng)用跨架構(gòu)的平滑切換。
一云多芯發(fā)展路徑
按照資源可管理性、程序可運行性、狀態(tài)可遷移性系統(tǒng)設(shè)計,一云多芯可以分三個階段逐步演進(jìn)(見圖6)。
階段一:混合部署、統(tǒng)一管理、統(tǒng)一視圖
第一階段以可管理性為目標(biāo),實現(xiàn)異構(gòu)處理器節(jié)點的統(tǒng)一池化管理、統(tǒng)一服務(wù)目錄和統(tǒng)一監(jiān)控運維,可運行性和可遷移性方面通過同源異構(gòu)、離線遷移、手動切換、業(yè)務(wù)切分實現(xiàn)應(yīng)用跨架構(gòu)的部署和協(xié)同。目前國內(nèi)外一云多芯建設(shè)主要處于這一階段。遵循系統(tǒng)設(shè)計方法,筆者團(tuán)隊在InCloud OS的研發(fā)實踐中,提出了基于同源異構(gòu)的持續(xù)集成、基于不可變基礎(chǔ)設(shè)施的持續(xù)交付及架構(gòu)感知調(diào)度方法,支持同一主線云操作系統(tǒng)源代碼編譯,構(gòu)建異構(gòu)節(jié)點的可執(zhí)行程序,實現(xiàn)C/C++、Java、Python、Go多語言千萬級代碼在8種主流處理器上的分鐘級構(gòu)建,為各類型應(yīng)用提供了參考指導(dǎo)方案。
在基于InCloud OS建設(shè)的云平臺中,單資源池支持所有主流處理器架構(gòu),并按每個控制器1000個節(jié)點級聯(lián)擴(kuò)展,實現(xiàn)了相距超過1000公里的三地數(shù)據(jù)中心一云多芯跨域統(tǒng)一管理、互聯(lián)互通,支撐云數(shù)智多樣化業(yè)務(wù)需求,制定了技術(shù)規(guī)范和參考架構(gòu)。
階段二:業(yè)務(wù)牽引、分層解耦、架構(gòu)升級
在第一階段的基礎(chǔ)上,為進(jìn)一步滿足應(yīng)用的低成本跨架構(gòu)切換,第二階段通過分層解耦和架構(gòu)升級,實現(xiàn)應(yīng)用的跨架構(gòu)遷移、多架構(gòu)混合部署和流量切分。筆者團(tuán)隊分別在資源層、平臺層及應(yīng)用層進(jìn)行了初步探索。
1.在資源層,結(jié)合GuestOS感知應(yīng)變機(jī)制進(jìn)一步提升面向多元CPU的遷移適用性,提出了基于一致性快照的在線遷移方法。通過變更數(shù)據(jù)塊追蹤和多線程異步優(yōu)化,實現(xiàn)10 TB大規(guī)格虛擬機(jī)的快速完整遷移。遷移后,系統(tǒng)啟動初始化硬件檢查,若不支持相關(guān)CPU特性則切換到應(yīng)變(fallback)措施,保證系統(tǒng)正常運行,特別針對Windows虛擬機(jī)實現(xiàn)了CPU、固件自適應(yīng),兼容Win XP以上桌面版和Win 2000以上服務(wù)器版,已在實際生產(chǎn)環(huán)境中展開應(yīng)用。然而,虛擬機(jī)遷移的方式對應(yīng)用是無感知的,遷移可能產(chǎn)生數(shù)據(jù)庫和應(yīng)用異常的風(fēng)險,需要應(yīng)用開發(fā)者配合,對虛擬機(jī)遷移后的可用性進(jìn)行進(jìn)一步驗證。
2.在平臺層,目前生產(chǎn)環(huán)境采用的方案是通過數(shù)據(jù)同步、業(yè)務(wù)切分實現(xiàn)有狀態(tài)應(yīng)用的跨架構(gòu)運行?;贗nCloud OS提供x86和ARM數(shù)據(jù)庫集群服務(wù)及數(shù)據(jù)同步服務(wù),數(shù)據(jù)同步服務(wù)根據(jù)源端數(shù)據(jù)庫預(yù)寫日志(Write Ahead Log,WAL)捕獲數(shù)據(jù)變化,在傳輸中通過加密壓縮算法、事務(wù)合并、網(wǎng)絡(luò)包封裝優(yōu)化網(wǎng)絡(luò)協(xié)議開銷和延遲,在目標(biāo)端通過分組多任務(wù)并行和原生加載機(jī)制提升重放效率,實現(xiàn)亞秒級數(shù)據(jù)同步。應(yīng)用基于讀寫分離架構(gòu)設(shè)計,面向x86架構(gòu)數(shù)據(jù)庫讀寫、ARM架構(gòu)數(shù)據(jù)庫只讀,實現(xiàn)一云多芯場景下數(shù)據(jù)庫跨架構(gòu)運行。
3.在應(yīng)用層,InCloud OS于2023年1月完成首個一云多芯場景下SPEC Cloud基準(zhǔn)測試,驗證了基于單一資源池承載多型x86、ARM處理器架構(gòu)的資源可管理性、計算密集型聚類算法K-means的跨架構(gòu)程序可運行性、IO密集型分布式數(shù)據(jù)庫Cassandra的狀態(tài)可遷移性,并結(jié)合均衡調(diào)度算法,實現(xiàn)了擴(kuò)展性超過90%,性能超過SLA基線20%,平均上線時間超過世界紀(jì)錄25%。
階段三:軟件定義、算力標(biāo)準(zhǔn)、全棧多芯
一云多芯是芯與云的融合,是平臺和生態(tài)的協(xié)同。在第三階段,通過處理器、整機(jī)、云操作系統(tǒng)、數(shù)據(jù)庫、中間件和應(yīng)用等產(chǎn)業(yè)鏈上下游的共同配合,實現(xiàn)應(yīng)用與處理器架構(gòu)的徹底解耦,保障業(yè)務(wù)長期穩(wěn)定運行。
1.在算力資源層,提升處理器性能、可靠性的同時,通過系統(tǒng)設(shè)計定義處理器設(shè)計標(biāo)準(zhǔn)化和兼容性,同時推動二進(jìn)制翻譯技術(shù)在應(yīng)用過程中不斷優(yōu)化。在支持處理器多芯的基礎(chǔ)上,擴(kuò)展對GPU、DPU等異構(gòu)算力的統(tǒng)一抽象,實現(xiàn)異構(gòu)加速協(xié)同。
2.在平臺層,突破應(yīng)用特征感知的可變粒度資源調(diào)度分配技術(shù),解決應(yīng)用類型與資源封裝的自適應(yīng)配置和編排問題,研究函數(shù)拓?fù)渚幣?、高效調(diào)度和快速啟動技術(shù),解決大規(guī)模云原生應(yīng)用的靈活構(gòu)建和彈性擴(kuò)展問題。
3.在應(yīng)用層,促進(jìn)應(yīng)用支持多芯同源異構(gòu),完善云原生化轉(zhuǎn)型升級最佳實踐,與資源層和平臺層相結(jié)合,實現(xiàn)應(yīng)用感知、架構(gòu)無感知的平滑切換和彈性伸縮。
4.在算力評估、標(biāo)準(zhǔn)和測評方面,研究多元異構(gòu)有效算力的量化方法,聯(lián)合專業(yè)測評機(jī)構(gòu)及產(chǎn)業(yè)鏈上下游,建立一云多芯行業(yè)標(biāo)準(zhǔn)。
結(jié)束語:一云多芯是解決數(shù)據(jù)中心多芯共存問題的必然趨勢。為解決應(yīng)用跨架構(gòu)可運行、算力量化分析、負(fù)載感知調(diào)度、非對等架構(gòu)分布式狀態(tài)一致性的問題,筆者團(tuán)隊提出了一云多芯系統(tǒng)的核心設(shè)計理念和系統(tǒng)設(shè)計方法。
1.堅持系統(tǒng)觀念,場景驅(qū)動、系統(tǒng)設(shè)計。從以CPU為核心向以系統(tǒng)為核心的設(shè)計模式轉(zhuǎn)變,以應(yīng)用為導(dǎo)向建立多元異構(gòu)融合、軟件定義和軟硬協(xié)同的技術(shù)發(fā)展路線,持續(xù)提升計算效率和能效比。
2.加強(qiáng)生態(tài)協(xié)作,分層解耦、開放標(biāo)準(zhǔn)。處理器、整機(jī)、云操作系統(tǒng)、中間件、應(yīng)用逐層解耦,通過生態(tài)協(xié)同消除單一技術(shù)路線帶來的垂直封閉、生態(tài)離散問題,實現(xiàn)一云多芯標(biāo)準(zhǔn)化和規(guī)范化。
3.制定發(fā)展路線圖,迭代創(chuàng)新、持續(xù)演進(jìn)。從混合部署、離線遷移和手動切換,到基于架構(gòu)升級的平滑切換和彈性伸縮,再到算力標(biāo)準(zhǔn)和全棧多芯迭代演進(jìn)。
當(dāng)前的研究和實踐工作正處于第一階段向第二階段的過渡時期,圍繞程序可運行性、資源可管理性和狀態(tài)可遷移性技術(shù)進(jìn)行了探索和布局,下一步需要加強(qiáng)產(chǎn)業(yè)鏈、創(chuàng)新鏈協(xié)作,向應(yīng)用感知、架構(gòu)無感知的目標(biāo)迭代演進(jìn),推動一云多芯計算理論基礎(chǔ)更加堅實完備,軟硬協(xié)同和軟件定義機(jī)制更加成熟有效,應(yīng)用感知場景范式更加清晰可行,產(chǎn)業(yè)生態(tài)更加標(biāo)準(zhǔn)規(guī)范。