首页 » 智能 » 清华计算机系舒继武 CCF-ADL 讲习班上篇:闪存存储系统的软件层优化_在这_闪存

清华计算机系舒继武 CCF-ADL 讲习班上篇:闪存存储系统的软件层优化_在这_闪存

神尊大人 2025-01-19 05:06:34 0

扫一扫用手机浏览

文章目录 [+]

6月14-16日,中国打算机学会学科前沿讲习班在北京开讲。
作为数据存储方面的专家,清华大学打算机系教授舒继武在CCF-ADL第79期讲习班上为学术青年们带来了现有存储系统软件层的一些研究进展。
舒继武教授本次的演讲主题为《闪存存储系统的软件层优化》。

以下为舒继武演讲内容,雷锋网进行了不改变原意的编辑。

清华计算机系舒继武 CCF-ADL 讲习班上篇:闪存存储系统的软件层优化_在这_闪存 智能

磁盘自从2000年以来,带宽100兆旁边,没有太大的变革,延时也没有太大的变革,今后我以为纵然有优化也不会很大。

其余一个,IBM 2020年要构建一个大的存储系统,它有2 GIOP/sec,须要500万块磁盘,占地超2000平方米,能耗高达22兆瓦。

现在PCIe的带宽,它的延迟有一个很大变革。
如果基于这种来构建IBM2GIOP系统,用SCM存储的话,只须要8000个模块,占地面历年夜幅缩减,能耗近1000瓦。

自从1984年日本东芝推出闪存这个东西以来,该当来说变革很大,从当时的盘到卡,到现在的各种阵列,再到各种大的分布式系统。

那我们来看看在构造上有什么变革?其余一点我想解释,闪存来构建外存储系统有哪些上风?第一个是低延迟、高带宽;其余一个是本钱上风,IOPS来构建的话本身由于它的高带宽、低延迟,以是它得到的单位IOPS该当比磁盘大得多。
它从本钱上来讲该当是比磁盘便宜的。

其余一个由于它是电子的,不是机器的,以是可靠性、能耗都不用说了。
从早期Flash的扩展卡到现在运用的情形下,盘这个东西大家都知道,包括我们现在很多的小卡,那像这种东西它的接口问题,容量问题等得不到办理,以是这个肯定是一个根本的问题。

后来就发展到卡,那便是说PCIe的这种闪存卡,把它插到这个主机上来构成一个别系,它的好处是什么?利用这个本身强大打算能力和超大内存,以是这个卡能够得到很大的发挥。

还有便是它的很多driver,在这些主机上,它能够做到很多的异地更新,包括对付系统的开放,能够做很好的一些针对性的开放。
而且在这个发展过程当中也经历过一个过程,从早期这种卡的运用,这种大的盘运用,要供应很多层,到后来卡的运用当中,它把很多层给跳过去了。

那当然它里面很大略的一个问题是它容量做不大,你一块卡现在1T、2T,其余一个,这个卡的散热非常成问题,我们有早期的,2013年、2014年从华为拿到的卡,可以达到七八十度,把鸡蛋放在上面都能够烤熟,以是这个都是它的一些问题。

那由于它的容量做不大嘛,它的可靠性也有问题。
后来就发展到成为SSD的阵列,这样它的容量就可以变得很大,可靠性也会做一些提升。
那做阵列的话有两种办法,像SSD这种规格,就像用磁盘一样的模式,那这样的话有很多问题,便是磁盘终年夜。
从工业化的角度来看它不用做太多的事情,当然它肯定要SSD要做一些优化。

当然也存在会发生那种性能上溘然低落等类似的问题,它只是对掌握器做了优化,但是还远没有发挥SSD本身的一些特点。

后来有一个厂商就说,做一个全新的磁盘阵列掌握器,重新设计这个掌握器,完备是面向SSD的,那在这里面要考虑很多东西,它的掌握器得考虑到SSD本身的垃圾回收,包括新的一些操作,并发的一些操作,完备是一个全新的,不像这种只是优化的,由于这个还是在磁盘的根本上做一些改进,像这种便是完备不考虑磁盘,面向SSD的,那它的性能该当来说有一个量级的变革。

你要构建一个大系统可能还是不足。
磁盘阵列达到几十T也就了不起了,后来有一个分布式闪存阵列,这一个是CMU,它考虑角度不一样,前面的磁盘阵列它是考虑IO子系统的性能和可靠性。

它一贯考虑的是怎么把性能做一个匹配,以是基本上用的是低主频的CPU来构建分布式的闪存集成系统,以是在这方面做了很多的运用。

后来UCSD他们也构建了一个别系,但是这个别系跟前面的不一样,它紧张考虑的是性能和匹配的问题,这个考虑的是能耗问题,便是在单个板子上级成了256GB的Flash和2G的DRAM来构建这么一个东西,做了很彻底的一个优化和一个重新设计。
在这个重新设计紧张是考虑并发的。

从构造来看,我们从盘到卡到阵列,到现在构建分布式的存储系统,该当来说还是有一个很大的并发的,该当来说这个能够在真正的大型卡上能够用的东西。

当然这是从构造的并发来看,但是问题来看是软件的问题。

我这里举一个例子,这个是大家都能够看到UCSD曾经在2012年发布的这么一个东西,我们早期的磁盘由于比较慢嘛,那你这个软件的话慢一点它显现不出来。
我们认为现在用PCIE这种Flash的话,软件开销能够达到21.9%。

那么我们来看看在这方面,该当有很多运用,按照层次我大略画了一下,当然这不是一个很严谨的图,便是我们做闪存系统,可能下面有一些闪存的硬件的东西,当然这个也可以是阵列,也可以是裸的。

在这之上可能有一些接口,还有包括FTL,当然有的FTL可能在这里面不包含,把它合到上面去了等等,有一些新的转化层,包括上层有一些文件系统还有一些数据库,再上面有一些运用。

再一个便是文件系统,做得就更好了。
再便是这个闪存的KV存储等等,在这方面该当有很多的事情做。
我们还在这方面做了一些事情,这个赤色的是我们团队做的一些事情。

这是大概说一下,这是软件层的一个变革,须要做一个很改造的变革。
我们来看看要做哪些变革。

由于传统的这种磁盘的模式很慢,CPU给一个信令,CPU就处理(还不能干其他的事情),完了往后再来弄。
但是现在你的硬件快了,你还用这种中断办法的话,高下文切换就很耗韶光,以是CPU这么切换,它可以用其他的一些办法,。
以是在这种情形下,传统的这种终端办法代价很高。

其余一个便是存取路径,那传统的磁盘构造文件系统,包括内存拷贝了几次,两次拷贝过了等等,那在这个过程当中可能你的路径要缩短,乃至要把一个层级合并。
打个比方,文件系统,你的文件系统要做存储管理,你的FTL也要做存储管理,你认为就完备是一种重叠的,是不是可以把这一层给处理掉,这样的话你的IO能够大大缩短匹配这个命令韶光。

其余一个便是软件接口,由于磁盘和这个SD还是不一样,包括它还有日志等等这些东西,以是在这方面提出了很多的一些干系领域软件接口,这是事务方面的事情。

下面我就谈谈这个事务方面处理,闪存的事务处理这方面有很多研究,它有利用闪存的异地更新特性在存储设备中供应原子写入接口,避免双重写入。

这里面有几个层,这个是PCIE上的一个文章,便是你这个事务,如果说我在这个过程中系统崩溃了,他会去扫描,如果这有一点事务写完了,我这个就好弄。
这是一种它的指针,我把这个事务串起来,我末了来解读这些指针是否是闭环,当然这个是串行,这个可以同时扫描,可以并行来做,那它处理事务就快。

那按我们的方法便是,我用一个窗口,事务纵然在窗口中崩溃了,也只是回到这个串口里,以是通过这种模式,使得我们这个事务该当比传统的要快一点。

那么我们这个接口的话,在同等性考虑的情形下,我们这个性能提高20%多旁边。

在这个根本上我们也进一步做了优化,对这些做一个差异事务处理,当然在这里面我们考虑了一些事情,便是说异地更新,在这里面有最早的这种东西,日志管理到事务本身的一些特性。

那么再便是讲一下文件系统,刚才讲文件系统的问题很大,第一个我刚才讲了,文件系统要管理,到了这个FTL,你要在上面做优化根本很难,这不是你想象的,是一个很大的危害。

其余便是哪怕它是一个逻辑的东西,你没有那么随意马虎,以是你在上面做一些优化的话很难。

再一个便是我们所有这些东西,都是这个特性的考虑。
由于它是异地更新,异地更新既有它不好的地方,好的地方是能够在这个磁盘上有两个版本。

我们来看看从FTL,包括单层开始,怎么来用它,实际上FTL这个东西是一个很好的东西,Flash构建这种磁盘在系统中用。

那后来就把它用到我们的做事器上,那做事器上就相称于用了一个FTL像磁盘来用,那这样用起来很好、很方便的。
但是这个事情我就说存在着几个问题。

这里面很主要的一个事情便是冷热(数据)分组,这是个很关键的根本。
那么在这里面有一个NAT的表,由于在这里面会有一直地更新,这个很耗性能,也是产生很大的一系列延迟型问题。

其余一个便是有地址对齐的这么一个办法,使得它对这个效率能够得到更高,而且能够担保它的同等性。
那这个现在已经开源了,大家可以在上面拓展一下。
在这个方面它有一定的性能上的提高,比如说F2FS上面,在SATASD的环境下,能够提高2.5倍,在PCIESD的环境下能够达到1.8倍的提高。

那这个事情虽然是在这方面,三星做了一些优化,但是依旧还有很多问题没有办理,而刚才说的文件系统那些都还没有考虑。
后来FusionIO做了一个事情,说你现在FTR是在这个磁盘上,后来就有人把这个FTR放到做事器主机上来做,这还是有差别的。

你想想一个磁盘阵列,它阵列上的内存很小,FTRSD上面的内存很小,它的打算能力虽然有芯片,但是打算能力很弱。
如果我们把FTR放到做事器上的话,它可以利用主机强大的打算功能和大内存,使得这个FTR的能力变得很强,这样的话,它的性能、很多功能也能够提升很高。

而其他的设备,你没办法做很多的优化,它上面把裸的东西挪上去了,能够在上面知道下层的一些分布,以及对应的通道都能够识别得出来,包括角度都能够在这上面做,以是这该当来说是一个很大的改进。
FusionIO和普林斯顿做了这么一个文件系统,便是这个文件系统和和你的FTR功能有一些冗余。
其余一个便是它对FTR做了一些简化。

我们来看看FISHIO提出了DFS这么一个文件系统,这里面紧张是提到了这么一个接口,使它能够供应一些原子性。
其余一个有底层的log机制,使得不要做额外log机制。
其余这个文件系统的块分配操作,便是文件系统的管理全部交给地层完成,这是FusionIO的一个思想,便是把FTR拿到上层来做,主机层和文件系统领悟在一起,这样的话性能提升还是很明显的,这使得EST3它的直接读写性能够提高20%旁边,缓存性能能力提高1倍多。

但是这个思想的话也存在一定问题,它上面是没有考虑闪存文件系统寿命。
那么我们在这方面曾经做了一些事情,包括这三个方面,我们提出了一个工具,便是把每个别系分为两块儿,一个是命名空间管理,一个是存储管理,那这个存储管理便是像把FTR也拿上来,和文件系统的存储管理合在一起,提出来一个工具式FTR,是一个工具存储管理。
其余一个对这个文件系统命名空间也做了一些管理,里面一些,一些目录的频繁更新,我们做了很大一些优化。

其余一个我们对这个闪存底层芯片并发处理我们也做了一些优化,这个揭橥在FAST13和FAST14,以及ATC16上面做了一些事情,包括怎么考虑它的耐久性,怎么根据闪存的特色对它设计新目录树管理来做优化。

我们来看看这三个步骤里的第一个步骤,便是做了一个工具式的FTL这么一个稳定性,把它拿到文件系统里面的管理来,那么在这个里面有一些干系技能,提出来一个接口,能够得到上层更多信息。
其余一个我们在这里面做了一些压缩,能够减少它的一些写入量和寿命;还有便是在这个理论的管理上也做了一些优化。

我们做了一个测试,在同步的情形下,这个写入量, OFSS均匀写入数据量为ext3的15.1%,ext3的52.6%,btrfs的10.6%;在异步情形下,OFSS均匀写入数据量为ext36%,而et2的80.2%,btrfs的15.1%。

那么下一步的事情便是我们怎么来利用优化Flash的命名空间管理,在这个里面讲这个目录树有时候更新一页或者一块,这个过程的话很多它都是小写,也是很频繁。
那么在这里面便是说目录树怎么来构建,把它做了一个分离,当然这个过程当中为了掩护它的同等性,我们用了嵌入式的反向指针。
其余一个在这里面做了一些压缩,使得它能够很快速地持久化,便是优化它的命名空间。
那么这个事情的效果是这样,从性能和寿命跟已有的做了一个比较,在性能、寿命上也得到了一定的提升。

那么下面一个是我们的第三个事情,怎么来感知内存内部的并发,由于FLASH系统有很多带、有很多block等等,实际上这些东西都可以并发的,当然在这方面也做了一些干系的事情。

其余一个便是我在这个里面考虑到与固定协同的垃圾回收,便是相称于这里面的并发感知要求调度,而且是在这里面做分配的时候,我可以对它做一些调度,而且能够优化这些调度,乃至并发感知来做这么一个事情,这是我们做这个事情的三个思想。

那这个思想的话,我们也做了一些测试,效果还不错,能够取获得达1到2倍的最好性能,而且跟三星公司也做了比较性能比较。

好,刚才讲的便是文件系统,文件系统还不止这些。
只是现在我个人认为还没有说哪个文件系统把这些问题都彻底办理,或者说很成熟地在用,以是在这个方面该当还有一些事情在做。

其余一个便是在上面的话,还有一些做KV数据库的一些事情。
这个是北大他们做的一个别系,能够给你供应来绕开这个文件系统,这样你的IOlogging就明显地缩短。
其余一个便是它这个是一个基于裸闪存的KV数据库。

那么,这是2016年威斯康星做的一个KV系统,它便是把K和V分离出来,传统的K和V是存在一起的,但是假如K很小,便是4个字节,那你这个东西如果要做一个排期的话,那把KV都这么导进来,一个性能慢,一个是还要里面有寿命的问题,以是就要把K和V来做一些分离,来办理它写放大的问题。

但是它这种思想就很好地能够发挥到闪存随机读的特性,而且它的这个效果也不错。
这是它的一个比较,便是传统的LSM-tree构建的KV系统,它一样平常的带宽也便是2兆到4兆,但是它这种分离了之后,它的性能呈这么一个显示,1KB它能够达到100多,以是说这个性能该当是有一个很大的变革,威斯康星提出来这个key value还是一个很了不起的一个事情。

ATC有一个事情,便是对闪存的接口来做一些扩展,,传统的KV系统中有这些东西,你要做这个logging,你乃至还要mapping,还要在这里面做一些垃圾回收、做一些处理,那你的FTR不是也有这些东西吗?它就把这里面的两块儿有重叠的做了一些简化,做了一个合并,同时还供应了一个接口,使得它的FTR得到一个可扩展的接口,把这个移植到FTR中,这是它的一个思想。

那这也是一个很主要的思想,它的构造是这样的,以是说这里面的KV的logging就短了很多。
那像这种情形下可以看到它结果的比较,叫做NVMKV的系统,它的性能明显有一个大的变革。

以是这是刚才讲的软件存储系统里面的事情,紧张讲的便是里面的这个接口,便是通过这个机制传到终端,那你现在还能用终端吗?还是会用更好的办法。
再一个便是它的IO logging的层次,再便是接口问题,它的事务处理问题,主动说了一下它的文件系统和KV系统,以是说它的这个软件还是有很多的优化。
只是现在来说该当还是一个热点,还有在做。

就我理解,真正的大闪存,在很多的运用中还没有说真的把它用上,这也是作为一个磁盘阵列或者说作为一个缓存,作为它的一个部分,它还真正没用上,这是由于这些软件还是不成熟。

那么我们这刚才讲了,这些软件要做,你要构成分布式的这种闪存系统,分布式的协议是很主要的。
这该当是微软他们提出来的叫做CORFU的这么一个协议,它把那些闪存作为一个裸闪存,当然这个闪存是经由定制的,它有网口接口。

为什么说它有网卡的接口,它不是说把一个阵列或者说一个做事器弄到网上,一样平常便是把做事器上有很多的闪存卡或者说磁盘阵列构建这么一个分布式系统,它把这些闪存直接放在网上,用一个网连成一个大的存储池,在这个过程当中它的协议就不一样了。
那传统的要经由做事器那些层次,它是将闪存直接连到网络上。

其余一个为了担保它的强同等性,在里面也做了一些事情,这是它的一个构建,当然优点便是很节能,便是卡嘛,但是你一个做事器的话达到250瓦。

这是其余一个低延迟,它读写延迟低于1ms,而且故障规复也很快,它担保了一些性能的事情。
当然问题便是由于你这个卡是要挂在网上,它做了一些定制,有网卡在这个里面。

当然用起来还是比较受限,它的这个协议还是性能的问题,以是微软在这个根本上又进一步地做了优化,那么这种情形下提出了一个in memory的数据构造,这个构造紧张是供应一个接口,使得你这个闪存中间能够发挥它,而且底层协议能够得到进一步的简化,它这个便是利用树构造做了很多的抽象。
以是这个协议开销是相对付刚才的CORFU来说有一个大的降落,而且他这里面也做了同等性、持久性、原子性、隔离性。

那么,它的问题便是可扩展性的问题,还要受环境的一些制约,特殊是在里面做checkpoint的时候,这个客户开销比较大。

实际上在协议上面我们也做了一定的事情,我在这里面由于做得比较大略,就没有放在这里面讲。
实际上我个人认为,真正的将来要用上,这个协议该当来说是一个很大的变革,现在这个东西该当是基本上都认可了它的低延迟。
怎么来跟它结合,我会不才一阶段提到这一点,它该当来说还有一些值得研究的事情。

刚才讲的便是怎么来构建外层,我再讲一点构建外层的一个展望,便是我个人的定义。

第一个便是软件管理,软件的问题该当来说是里面一个很主要的问题,接入PCIE的SFlash,下面便是磁盘的0.31%,软件开销不得不重视,它包括很多方面的内容。
其余一个,我们传统磁盘的这种系统,软件经历了几十年的发展,有很丰富的一些功能,那这个功能该当来说也希望在这种面向闪存的存储中也该当得以保留,而这些功能又存在一些冲突和抵牾,怎么来处理这些东西,然后希望能够把发展几十年的功能在新构建的环境下用得上,在这里面该当是一个很大的寻衅。

这里面存在一个软件的低开销和这些管理功能之间的抵牾,这是一个值得考虑的事情。

此外,这种系统的变革该当来说是颠覆式的,外层的系统怎么来重新审议。
那么内层的系统,现在新的存储系统除了闪存之外,该当发展了有十多年了。
现在像新的PCM这个东西发展出来,那它肯定是要去做内存,它的性能该当更好,更能办理内存的一些特性,而怎么来构建,该当来说也是一个很大的寻衅。

雷锋网后续还将发布后续演讲内容,敬请期待。

标签:

相关文章