從2015年發(fā)布以來,SmartX超融合系統(tǒng)就在不斷提升性能,而2019年到2020年的此次性能上的飛躍,效果還是非??捎^的。
SmartX聯(lián)合創(chuàng)始人兼CTO張凱介紹說,2019年,當(dāng)英特爾發(fā)布傲騰持久內(nèi)存之后,SmartX啟動(dòng)了一個(gè)叫Sailfish(旗魚)的項(xiàng)目,Sailfish是已知海洋中最快的一種魚,SmartX決定利用傲騰來優(yōu)化性能,為的是能更好地承載核心系統(tǒng),為了替代傳統(tǒng)裸金屬和傳統(tǒng)中高端磁盤陣列的架構(gòu)。
解決用戶對(duì)于性能的硬性需求,或者說突破超融合能力的上限,就是SmartX成功的重要秘訣之一。
超融合用傲騰的難點(diǎn)和局限性
SmartX利用創(chuàng)新的介質(zhì)特性,以及對(duì)系統(tǒng)底層的開發(fā)能力最終完成了這次大的性能優(yōu)化。但作為首家在超融合中使用傲騰內(nèi)存作為緩存加速的廠商,SmartX知道這事兒很難。
上圖可見,從內(nèi)存到SSD再到磁盤,不同介質(zhì)的容量以及性能表現(xiàn)可以用上圖來表示,內(nèi)存的訪問延遲在0.1微秒的級(jí)別,SSD大概是不到100微秒的水平,而磁盤則是不到1000微秒的水平,當(dāng)兩個(gè)層級(jí)之間性能差異較大時(shí),就會(huì)帶來體性能上的瓶頸。
英特爾傲騰則是在DRAM和NAND SSD之間加入了新的存儲(chǔ)層級(jí),可以使存儲(chǔ)層級(jí)間的性能差異變小,因?yàn)椋硫v有接近DRAM的性能,DRAM內(nèi)存時(shí)延非常接近,另外,傲騰還具有SSD的非易失性,掉電不丟數(shù)據(jù),而且,它的介質(zhì)本身可靠性很高。還有一點(diǎn),傲騰支持字節(jié)尋址,就是每次可以只訪問部分字節(jié),而不是512字節(jié)或者4KB那么多。
2019年,SmartX發(fā)布了采用傲騰持久內(nèi)存的一體機(jī),該一體機(jī)已用于某國內(nèi)金融企業(yè)的VDI場景中,這里用的是內(nèi)存模式,就是直接把傲騰當(dāng)內(nèi)存插上去,而把真正的DRAM內(nèi)存當(dāng)做傲騰內(nèi)存的緩存,這是一種比較簡單的模式,不需要做太多開發(fā),但實(shí)際上傲騰還有另外一種模式,叫做App Direct模式,需要在超融合的系統(tǒng)層次上做一些開發(fā),這是SmartX這次主要的使用方式。
但超融合系統(tǒng)想充分利用App Direct模式其實(shí)有很多限制,由于超融合系統(tǒng)和用戶應(yīng)用同時(shí)運(yùn)行在相同的設(shè)備上,系統(tǒng)和應(yīng)用共同占用資源,如果系統(tǒng)資源占用較多,這意味著應(yīng)用性能就會(huì)受限,這是超融合的特殊之處,超融合雖然有存儲(chǔ)服務(wù)能力,但功能特性的設(shè)計(jì)要考慮性能占用,想要將傲騰性能發(fā)揮出來,無異于戴著腳鐐跳舞。
更重要的是,由于傲騰本身很快,但如果只有傲騰快,系統(tǒng)別的組成部分都很慢的話,傲騰也完全發(fā)揮不了作用。
優(yōu)化性能的黃金套路——化繁為簡做減法
為了減少資源占用,為了發(fā)揮傲騰的性能,SmartX做了許多化繁為簡的操作。據(jù)我個(gè)人觀察,近年來的性能優(yōu)化空間很大程度上都是化繁為簡做減法,比如上圖中NVMe相比SAS/SATA就做了減法,少了中間多個(gè)步驟,NVMe硬盤的延遲和IOPS有大幅提升,SmartX的做法也類似。
在看具體做法前,我們看到上圖中,用戶的應(yīng)用運(yùn)行在一個(gè)個(gè)虛擬機(jī)里,虛擬機(jī)里的延遲高的一個(gè)重要原因是IO路徑長。如上圖,一個(gè)請(qǐng)求從guest虛擬機(jī)發(fā)出到hypervisior,再到存儲(chǔ)軟件,再到內(nèi)核,然后再告訴另外幾個(gè)節(jié)點(diǎn),最后寫到磁盤上,一共需要五個(gè)步驟,每個(gè)步驟都會(huì)增加額外的延遲,最終影響到性能。如果沒有虛擬機(jī)的話,起碼可以省掉hypervisior這一層,所以,裸金屬的方式比虛擬化的性能好。
為了優(yōu)化性能,為高速傲騰掃清道路,SmartX在三個(gè)層次下手優(yōu)化了IO路徑。
第一個(gè),就是在計(jì)算虛擬化層繞過hypervisior,做法是在虛擬機(jī)和存儲(chǔ)軟件之間建立了一個(gè)Shared memory,虛擬機(jī)的請(qǐng)求直達(dá)存儲(chǔ)軟件,化繁為簡,性能up。
第二個(gè)是網(wǎng)絡(luò)層的優(yōu)化,繞開內(nèi)核(Kernal)和TCP協(xié)議。SmartX采用RoCE的方式來實(shí)現(xiàn)RDMA網(wǎng)絡(luò),這種方案能復(fù)用原有的以太網(wǎng)設(shè)備,而且因?yàn)樽隽艘恍┒ㄖ苹墓ぷ?,網(wǎng)絡(luò)的傳輸過程繞開了整個(gè)Kernal。另外,由于UDP、TCP協(xié)議都是由硬件網(wǎng)卡來計(jì)算的,沒有用CPU的資源,減輕了CPU的負(fù)擔(dān),最終,整個(gè)網(wǎng)絡(luò)速度非常高,延遲非常低,化繁為簡,性能up。
第三個(gè)是存儲(chǔ)層的優(yōu)化,繞開了Kernal。存儲(chǔ)層的優(yōu)化看的也非常清楚,就是通過走DMA繞開了Kernal,從而提升效率和性能。
第四層優(yōu)化,利用了傲騰的字節(jié)尋址特性優(yōu)化SSD Journal系統(tǒng),也是化繁為簡的操作。眾所周知,SSD是以4KB為單位來進(jìn)行數(shù)據(jù)寫入的,如果不夠4KB的話,也要進(jìn)行一次4KB的寫入操作,如果大于4KB的話,會(huì)把數(shù)據(jù)切成多個(gè)4KB來寫入,以4KB的方式寫入是由NAND SSD的特性決定的。
問題在于,如果有大量小于4KB的數(shù)據(jù)的話,就會(huì)有大量的4KB寫入操作,這種情形叫做寫放大,它會(huì)極大地浪費(fèi)性能,而傲騰因?yàn)橹С忠宰钚?4字節(jié)的寫入方式,所以適合大量小數(shù)據(jù)寫入的情形,極大地降低了寫放大,減少了寫入的數(shù)據(jù)量,意味著性能上會(huì)有很大提升。
以傲騰持久內(nèi)存來支撐的Journal系統(tǒng)的性能能大大提升,整體系統(tǒng)的性能也就水漲船高了。
用搭載了英特爾傲騰持久內(nèi)存的三節(jié)點(diǎn)SmartX Halo P系列一體機(jī)進(jìn)行實(shí)測數(shù)據(jù)顯示,IO性能提升了3.2倍,延遲上有85%的降低,三個(gè)節(jié)點(diǎn)可以提供120萬的IOPS和100微秒的延遲。這都是Sailfish項(xiàng)目帶來的價(jià)值,它讓超融合有了媲美中高端全閃存存儲(chǔ)的能力。
總結(jié)一下
我們看到,SmartX對(duì)性能的極致追求解決了許多超融合解決不了的問題,讓用戶在享受超融合帶來的種種便利的同時(shí),也能體驗(yàn)到超高的性能,也讓超融合開始承載核心業(yè)務(wù),這種突破不僅成就了SmartX,對(duì)超融合市場本身也有很大的鼓舞作用,讓許多超融合廠商相信,只要在一些方面把產(chǎn)品做到極致,差異化的優(yōu)勢(shì)水到渠成。