文件系统是一种常用的访问和存储方法。目前,所有常见的文件系统都是根据磁盘的特性设计的。比如为了更好的处理访问磁盘上任何小数据信息的问题,在文件系统中引入了页面缓存系统,使用运行内存缓存文件来加速这种访问。大多数业务流程都具有数据信息的可逆性。因此,根据这种页面缓存系统,可以很好地提高文件系统的性能。此外,文件系统的数据信息的合理布局也会考虑到磁盘的特性,将数据库存储在一起,这样可以高效地完成数据库的存储,防止磁盘抖动。如下图所示,包括文件系统在内的存储软件堆栈将在每个级别上改善磁盘抖动问题。
在用NVMeSSD更换磁盘的整个过程中,发现传统的文件系统在很多方面都不尽如人意,导致性能下降,无法充分发挥NVMeSSD的性能。主要原因如下:
1.传统的存储软件栈采用级联的方式,层次很多。每一层都封装成一个控制模块,说白了就是“模块化”。在面向磁盘的分布式存储中,这种设计方法非常好,其使用价值在于存储软件栈的设计和完成之间的协调能力。当客户必须改进一个功能时,在手机软件堆栈中堆叠一个控制模块是非常高效的,并且可以很好地 *** 纵手机软件的功能和质量。然而,在高性能材料的分布式存储中,存储磁盘不再是性能点不足的根本原因,存储软件栈本身也成为了严重的性能点不足。而传统的手机软件栈并没有考虑到自身发展的瓶颈,手机软件的高效问题,以及如何高效应用CPU的问题。然后,传统的手机软件栈使得CPU的运行效率极低,成为性能短板的关键因素。尤其是近几年,CPU正在向多核发展。以“存储是IO密集型应用”为准则的存储软件栈,很少使用多核高并发解决方案的设计理念,无法充分发挥多核的使用价值。高性能的移动存储设备只需要多处理器的应用,而全部性能必须归功于多处理器的工作能力。在这一点上,传统手机软件栈的设计方案有着纯天然的缺点,关键原因是没有充分考虑IO短板点的迁移。所以存储软件栈本身在大负荷下成为短板点,性能低下是必然的。
2.包括文件系统在内的传统存储软件栈的设计方案是面向磁盘材料的,与高性能的NVMeSSD相比有着非常不同的特点。对于NVMeSSD,不会有随机访问性能抖动的问题;但是会有业务进程IO危害写的问题,部分固态硬盘存在先写后读的性能偏差。一些面向磁盘设计的系统对SSD没有使用价值,在某些应用领域,对整体性能的伤害会很大。例如,页面缓存似乎能够提高任何访问性能,但却损害了NVMeSSD上的业务流程性能。在任意访问的情况下,页面缓存的准确率较低,会不断在SSD和运行内存之间交换页面。这种频繁的交流和交换会增加很多无用的实际 *** 作。在软件开发市场竞争锁定的情况下,文件系统的主要性能会受到很大影响。
在高性能材料方面,我们比较了裸磁盘和文件系统的性能。下图比较了4kHDB和8KB在任何访问条件下的性能。从图中可以看出,在4kHDB和8KB任意读取的情况下,文件系统的性能远不如裸盘。这时候大家发现文件系统正忙于实际的换入换出页面缓存的 *** 作。在4kHDB和8KB任意写的条件下,两者性能接近。
在64KB和128KB工作压力数据信息访问条件下,文件系统的性能接近裸盘,如下图所示:
从检测和分析的结果可以看出,Ext4文件系统的性能在任何访问级别都有较大的损害,在其他级别两者的性能差不多。所以,页面缓存等对策对SSD的实际作用是没有基础的,可以忽略不计。除此之外,你还可以感受到,传统的手机软件栈并没有提升高性能的移动存储设备,反而在性能和使用寿命方面造成了伤害。因此,SSD在大数据中心等大型应用中应用时,存储软件栈必须进行多方面的改造。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)