DOITAPP
DOIT数据智能产业媒体与服务平台
立即打开
DOITAPP
DOIT数据智能产业媒体与服务平台
立即打开

中国工程院院士郑纬民教授:从头研发先进的存储系统软件

什么叫从头构建先进的存储软件?

从头开始做,就是都要自己做,而不是在开源软件上的基础上修改、包装。不是说开源软件不好,但这里更加强调要从头自己做起;第二,需要确保先进性,不是做一个比现有开源软件差的软件,而是要做得更好。

中国工程院院士、清华大学计算机系教授郑纬民发表主题演讲:应鼓励从头研发先进的存储系统软件

现在是时候!其中大概有几个原因:

第一,现有很多设计是基于传统硬件的,如机械硬盘,其随机访问性能差、延迟高,外存带宽比内存带宽要差两个数量级别。过去很多系统软件都是基于硬盘做的。当今的主流是NVMe SSD闪存,其随机读/写性能和连续读/写是一样的,外存带宽与内存带宽只差一个数量级了,这就给我们带来机会,系统软件应该重写。

第二,原来写软件主要有两种语言:C和Java,两种语言的表达能力应该说不是太好,内存管理需要要手动进行。如今, C++、Rust,这两种新语言的表达能力更好,内存管理也做得更好,边缘优化也很好,这就为从头写先进存储软件创造了条件。

那么先进存储软件从哪里来呢?

相当一部分系统软件开始时是0到1,发源于少数软件天才,比如Linux是赫尔辛基大学的学生做的,Spark是美国Berkley分校的博士做的,开始时这些软件功能简单一点,慢慢的就由1变成100、1000。中国当前的问题是从0到1的例子太少,更多人做的工作是从100到1000,这也不是不好,但是中国更需要0到1。

中国能不能做0到1呢?特别针对存储,没有可能做0到1的事情?

在此,我举2两个例子来说明。

一是高性能分布式文件系统,它属于存储系统软件的范畴,被应用在深圳鹏城国家实验室的超级计算项目中,荣获IO500性能排行榜第一名。IO500测什么?测写入数据、再读出,创建、删除、写入文件、查找,非常复杂,例如小文件只有3901个字节,就是这么怪的数据让你测性能。因此IO500的冠军,意味着存储系统设计非常优秀。

英特尔的DAOS系统以及剑桥大学的Lustre文件系统都参加过该测试,美国象树岭国家实验室也参加过,长沙的天河、广州超算中心、阿贡实验室、Oracle等都参加过比赛。

初期我们也想基于国外原型系统做,后来发现开源软件问题很大,后来我们从头开始构建,用Rust语言,基于更通用、更稳定的库,其性能很好,其中就涉及到RDMA、NVMe SSD等新技术,并全面采用旁路技术,降低软件栈开销,最终用Rust语言写出了一个高性能分布式文件系统,并把IO500冲到了7043的分数,相比第二名就有2000分不到,最后测试的情况,我们达到36850分。

最后,我们得了6个冠军,因为10个节点一比,全系统一比,比带宽、比延迟,我们都拿了6个冠军。

第二个例子,基于NVMe SSD来做数据库系统,此前一代数据库是基于硬盘的,数据存在硬盘上,用内存作为缓存,MySQL,Oracle都是这样思路,但是其中只有6.8%的指令是业务需要的,也就是读、写数据库只有6.8%,剩下的都在做内存缓存管理。相比,内存数据库数据全都放在内存,但是内存不是持久性设备,断电数据就会丢失,因此为了保证持久性,要把日志、检查点数据放在硬盘中,造成了延迟增加,从10微秒增加到100毫秒。

有没有可能做一个NVMe SSD数据库,也就是基于闪存的数据库?答案是可以的,但不是简单地把内存、硬盘替换成闪存就可以的,要做一系列优化,有很多东西要做,我们做完以后觉得还是可以的。

基于以往的实践,不难得出三点以下体会:

1.从头构建先进的存储系统软件没有想象的那么难,因为SSD、RDMA、Rust给了我们重新做系统软件的机会;

2.外国大学生能做到,中国大学生也能做到。外国年轻人能做到的,中国年轻人也能做到;

3.关键是你要开始做,不要等着。

我们需要涌现一批没事就想写个系统的年轻人,要对写软件有兴趣,有了这个兴趣,你就行,就可以行。

我觉得我们国家的存储系统,应该说经过大家的努力,会越来越好。

 (以上基于2021年全球闪存峰会演讲整理,未经过本人审阅)

未经允许不得转载:DOIT » 中国工程院院士郑纬民教授:从头研发先进的存储系统软件