中國工程院院士、清華大學計算機系教授鄭緯民發(fā)表主題演講:應鼓勵從頭研發(fā)先進的存儲系統(tǒng)軟件

現(xiàn)在是時候!其中大概有幾個原因:

第一,現(xiàn)有很多設計是基于傳統(tǒng)硬件的,如機械硬盤,其隨機訪問性能差、延遲高,外存帶寬比內(nèi)存帶寬要差兩個數(shù)量級別。過去很多系統(tǒng)軟件都是基于硬盤做的。當今的主流是NVMe SSD閃存,其隨機讀/寫性能和連續(xù)讀/寫是一樣的,外存帶寬與內(nèi)存帶寬只差一個數(shù)量級了,這就給我們帶來機會,系統(tǒng)軟件應該重寫。

第二,原來寫軟件主要有兩種語言:C和Java,兩種語言的表達能力應該說不是太好,內(nèi)存管理需要要手動進行。如今, C++、Rust,這兩種新語言的表達能力更好,內(nèi)存管理也做得更好,邊緣優(yōu)化也很好,這就為從頭寫先進存儲軟件創(chuàng)造了條件。

那么先進存儲軟件從哪里來呢?

相當一部分系統(tǒng)軟件開始時是0到1,發(fā)源于少數(shù)軟件天才,比如Linux是赫爾辛基大學的學生做的,Spark是美國Berkley分校的博士做的,開始時這些軟件功能簡單一點,慢慢的就由1變成100、1000。中國當前的問題是從0到1的例子太少,更多人做的工作是從100到1000,這也不是不好,但是中國更需要0到1。

中國能不能做0到1呢?特別針對存儲,沒有可能做0到1的事情?

在此,我舉2兩個例子來說明。

一是高性能分布式文件系統(tǒng),它屬于存儲系統(tǒng)軟件的范疇,被應用在深圳鵬城國家實驗室的超級計算項目中,榮獲IO500性能排行榜第一名。IO500測什么?測寫入數(shù)據(jù)、再讀出,創(chuàng)建、刪除、寫入文件、查找,非常復雜,例如小文件只有3901個字節(jié),就是這么怪的數(shù)據(jù)讓你測性能。因此IO500的冠軍,意味著存儲系統(tǒng)設計非常優(yōu)秀。

英特爾的DAOS系統(tǒng)以及劍橋大學的Lustre文件系統(tǒng)都參加過該測試,美國象樹嶺國家實驗室也參加過,長沙的天河、廣州超算中心、阿貢實驗室、Oracle等都參加過比賽。

初期我們也想基于國外原型系統(tǒng)做,后來發(fā)現(xiàn)開源軟件問題很大,后來我們從頭開始構建,用Rust語言,基于更通用、更穩(wěn)定的庫,其性能很好,其中就涉及到RDMA、NVMe SSD等新技術,并全面采用旁路技術,降低軟件棧開銷,最終用Rust語言寫出了一個高性能分布式文件系統(tǒng),并把IO500沖到了7043的分數(shù),相比第二名就有2000分不到,最后測試的情況,我們達到36850分。

最后,我們得了6個冠軍,因為10個節(jié)點一比,全系統(tǒng)一比,比帶寬、比延遲,我們都拿了6個冠軍。

第二個例子,基于NVMe SSD來做數(shù)據(jù)庫系統(tǒng),此前一代數(shù)據(jù)庫是基于硬盤的,數(shù)據(jù)存在硬盤上,用內(nèi)存作為緩存,MySQL,Oracle都是這樣思路,但是其中只有6.8%的指令是業(yè)務需要的,也就是讀、寫數(shù)據(jù)庫只有6.8%,剩下的都在做內(nèi)存緩存管理。相比,內(nèi)存數(shù)據(jù)庫數(shù)據(jù)全都放在內(nèi)存,但是內(nèi)存不是持久性設備,斷電數(shù)據(jù)就會丟失,因此為了保證持久性,要把日志、檢查點數(shù)據(jù)放在硬盤中,造成了延遲增加,從10微秒增加到100毫秒。

有沒有可能做一個NVMe SSD數(shù)據(jù)庫,也就是基于閃存的數(shù)據(jù)庫?答案是可以的,但不是簡單地把內(nèi)存、硬盤替換成閃存就可以的,要做一系列優(yōu)化,有很多東西要做,我們做完以后覺得還是可以的。

基于以往的實踐,不難得出三點以下體會:

1.從頭構建先進的存儲系統(tǒng)軟件沒有想象的那么難,因為SSD、RDMA、Rust給了我們重新做系統(tǒng)軟件的機會;

2.外國大學生能做到,中國大學生也能做到。外國年輕人能做到的,中國年輕人也能做到;

3.關鍵是你要開始做,不要等著。

我們需要涌現(xiàn)一批沒事就想寫個系統(tǒng)的年輕人,要對寫軟件有興趣,有了這個興趣,你就行,就可以行。

我覺得我們國家的存儲系統(tǒng),應該說經(jīng)過大家的努力,會越來越好。

 (以上基于2021年全球閃存峰會演講整理,未經(jīng)過本人審閱)

分享到

songjy

相關推薦