文件系统在NVMe SSD上的性能表现分析

文件系统是访问存储的一种常用方式,目前常用的文件系统都是针对磁盘的特性进行设计的。例如,为了解决磁盘随机小数据访问的问题,在文件系统层面引入了Page cache机制,利用内存缓存对这种访问进行加速。大多数业务都会存在数据局部性,因此,通过这种Page cache机制可以很好的提升文件系统的性能。另外,文件系统的数据布局也会考虑磁盘的特性,元数据聚合存放在一起,这样可以高效的实现元数据的存放,避免磁盘抖动。如下图描述,包括文件系统在内的存储软件栈在各个层次都会对磁盘抖动问题进行优化。

在NVMe SSD替换磁盘的过程中,我们发现传统文件系统在很多方面表现的不尽人意,导致系统性能变差,无法充分发挥NVMe SSD的性能。其中主要原因有如下两点:

1,  传统存储软件栈采用堆叠式的方式,并且存在较多层级。每个层级封装成一个模块,构成了所谓的“模块化设计”。在面向磁盘的存储系统中,这种设计方式非常好,带来的价值是存储软件栈设计与实现的灵活性。用户需要增加一个功能的时候,可以在软件栈中堆叠一个模块,非常的高效,软件功能与质量可以得到很好的控制。但是,在面向高性能介质的存储系统中,存储盘已经不再是性能瓶颈点的主因,存储软件栈本身变成了严重的性能瓶颈点。而传统的软件栈在设计与实现的时候根本没有考虑自身的瓶颈问题、软件的效率问题,根本没有考虑如何高效使用CPU的问题。从而导致传统软件栈使得处理器的运行效率极低,成了性能瓶颈的主要因素。尤其最近几年处理器往多核化方向发展,基于“存储是IO密集型应用”为指导思想的存储软件栈,很少采用多核并发处理的设计思想,因此无法发挥多核化带来的价值。高性能存储介质恰恰需要多处理器的支持,性能的发挥需要得益于多处理器的能力。在这一点上,传统软件栈的设计存在天然缺陷,其主要原因还是没有考虑到IO性能瓶颈点的转移,所以,存储软件栈在背负较重的情况下,自身成为瓶颈点,性能低下在所难免。

2,  包括文件系统在内的传统存储软件栈的设计是面向磁盘介质的,磁盘介质与高性能NVMe SSD相比存在截然不同的特性。对于NVMe SSD而言不存在随机访问性能抖动的问题;但是会存在业务IO影响写放大的问题,以及个别SSD存在写后读性能极差等问题。面向磁盘设计的一些机制对SSD而言没有价值,并且在有些应用场景下会极大的影响整体性能。例如似乎可以增加随机访问性能的Page cache,在NVMe SSD上会对业务性能造成影响。在随机访问的情况下,Page cache的命中率比较低,并且会不断的在SSD与内存之间进行page页的换入换出,这种频繁的换入换出操作会增加大量的无用操作,在软件设计存在竞争锁的情况下,文件系统的性能表现会大打折扣。

在高性能介质上,我们对比测试了裸盘与文件系统之间的性能。下图对比了4KB与8KB在随机访问情况下的性能。从图中可以看出,在4KB与8KB随机读情况下,文件系统的性能要远远低于裸盘性能。此时我们发现文件系统在忙于Page Cache的换入换出操作。在4KB与8KB随机写情况下,两者性能接近。

在64KB与128KB大压力数据访问情况下,文件系统与裸盘的性能接近,如下图所示:

从测试与分析的结果可以看出,Ext4文件系统在随机访问方面性能损失较大,在其他方面两者的性能相近。因此,Page cache等策略在SSD上起到的效果基本没有,可以忽略。此外,我们也可以体会到传统软件栈不仅没有优化高性能存储介质,反而带来了性能以及寿命等方面的影响。所以,SSD在数据中心等应用中大规模使用时,存储软件栈需要做深层次变革。

时间: 2024-10-07 11:27:10

文件系统在NVMe SSD上的性能表现分析的相关文章

SSD上如何进行数据保护?

来自存储老吴的博客--存储之道 闪存技术的发展使得其成本下降.容量增加,越来越多的企业级用户也都在考虑如何将闪存SSD技术应用到自己的环境中去,从而解决性能.功耗.体积等存储常见问题.前几年闪存技术主要在互联网领域得到了大量应用,其主要原因在于互联网需要面临大量的访问IO压力,传统的磁盘存储系统无法提供高IOPS的能力,所以,只能借助闪存的高性能来解决互联网发展过程中的难题.所以,今天闪存在互联网领域已经得到大量应用,并成为其标配. 在闪存应用的过程中,PCIe接口在存储上的应用起到了巨大的成功

硬RAID可以为NVMe SSD数据可靠性保驾护航吗?

随着NAND Flash价格的不断下降,NVMe SSD正在慢慢普及.NVMe SSD由于极高的性能常被用作数据缓存,即使NVMe SSD发生故障,数据还在持久化介质中存储,不会导致数据丢失等严重事件.随着NVMe SSD的大量使用,其逐渐被用作持久化存储介质,替代传统磁盘.一旦NVMe SSD被用作持久化介质,便提出了数据保护的需求.传统磁盘采用RAID或者多副本的方式实现数据保护,那么在NVMe SSD上如何进行数据保护?是否还可以采用传统的硬RAID卡为NVMe SSD提供数据保护服务?

NVMe SSD是什么?

一直对闪存存储关注的朋友对NVMe SSD一定非常熟悉,NVMe SSD是现如今性能最好的存储盘.这种高性能盘在互联网领域已经得到了大规模应用,但是在行业用户还没有得以大范围普及.很多人对NVMe SSD也许还比较陌生,不知道如何应用该类型盘,并且给自己的业务带来价值.和SATA/SAS SSD以及HDD相比,她到底又有何神秘之处呢?在此我想对NVMe SSD做一些介绍. 提到NVMe SSD,不得不提Fusion IO率先研制的PCIe SSD,10年前Fusion IO率先采用PCIe接口的

[转帖]深度: NVMe SSD存储性能有哪些影响因素?

深度: NVMe SSD存储性能有哪些影响因素? http://www.itpub.net/2019/07/17/2434/ 之前有一个误解 不明白NVME 到底如何在队列深度大的情况下来提高性能, 现在看来是因为 比AHCI多了 多队列的控制来提高性能. 导读: NVMe SSD的性能时常捉摸不定,为此我们需要打开SSD的神秘盒子,从各个视角分析SSD性能影响因素,并思考从存储软件的角度如何最优化使用NVMe SSD,推进数据中心闪存化进程.本文从NVMe SSD的性能影响因素进行分析,并给出

在北美闪存峰会上的报告——NVMe SSD数据保护技术

今天在Flash Memory Summit(FMS)峰会上做了关于NVMe SSD数据保护的技术报告.今年是NVMe SSD大规模使用的元年,NVMe SSD在服务器得到了大量支持.互联网大规模部署NVMe SSD.传统行业开始使用NVMe.存储阵列开始向NVMe的方向努力,NVMe SSD将会成为未来的主流存储介质.在NVMe SSD向前推进的过程中,有一个问题不得不需要面对与解决,这个问题就是NVMe SSD盘的数据保护问题.传统SATA/SAS SSD可以使用硬RAID来解决数据保护问题

PostgreSQL介绍及PCIe SSD对其性能的提升效果分析

在关系数据库领域,PostgreSQL是一款非常受欢迎的开源数据库软件.自1996年发布至今,已经积累了近20年的实践经验,不论是PostgreSQL本身还是社区生态都已经非常成熟.不仅是中小企业,很多大型的行业客户也会使用PostgreSQL搭建自己的数据库系统.这篇文章主要对PostgreSQL做一个介绍,并比较了在PCIe SSD(本文使用Memblaze的PBlaze4 PCIe SSD)和硬件RAID聚合的SAS磁盘两种环境下,PostgreSQL数据库的联机事务处理(OLTP)的性能

vSphere 6.5支持512e,NVMe SSD呢?

原创 2017-01-12 朱朋博 金笑雨 企事录 2016年底,VMware终于宣布,从vSphere 6.5开始支持512e扇区格式了. 这当然是好事.不过,不黑不舒服斯基说:原来以前的版本连512e都不支持?现在也还不支持4Kn啊-- 有图有真相,不黑不是你大叔则翻出2013年的一个合作伙伴文档作为黑历史,说:瞧,晚了整三年!间隔一个大版本啊-- Vmware曾宣称计划在2013年支持512e,在2015年支持4Kn 泥垢了,别站着说话不腰疼.作为公认业内第一的hypervisor,或者说

一种NVMe SSD友好的数据存储系统设计

闪存介质的大规模使用给传统存储系统的设计带来了强烈的冲击,传统存储系统的很多设计理念不再适用于闪存存储系统.传统存储在设计过程中紧紧围绕磁盘抖动问题,所以在数据布局方面会适应磁盘的顺序读写特征.在设计过程中会大量采用内存作为磁盘缓存,利用数据局部性特征过滤掉大量的磁盘操作,并且将小写聚合成大写:在IO调度器方面,通过LBA的调度将地址临近的IO进行聚合,从而可以优化IO Pattern,使得磁盘的读写操作具有更强的顺序性:在磁盘内部,通过NCQ方式减少磁头的抖动,根据磁头当前所在位置对输入IO进

可以在SSD上建传统RAID吗?

当被问及"在SSD上能否建传统RAID"这个问题的时候,大家的第一反应应该是"可以建,但是需要Trim命令的支持".在网上也可以看到很多人拿SSD来建RAID,但基本上都会配置成RAID0或者RAID1.很少有人会去建RAID5,这是为什么呢? 答案很简单,在SSD基础上如果配置类似于RAID5这样的Parity-RAID,那么SSD的整体性能不能很好的发挥出来,更为重要的是Parity-RAID会影响SSD的寿命.一句话,Traditional RAID kill