你还在用FIO做企业级SSD测试?看过来

你还在用FIO做企业级SSD测试?看过来

首页休闲益智fio更新时间:2024-08-01

FIO(Flexible IO Tester)是一款适用于 Linux/Unix 的第三方工具,用于模拟 I/O 工作负载。它用于存储性能基准测试。FIO 允许用户快速定义和运行工作负载,并报告有关每次运行的指标。

无论是在PC还是数据中心的服务器上,存储都是与计算和网络一样重要的核心组件。计算组件通常指CPU,网络组件通常指网络接口卡。目前最流行的存储组件是NVMe SSD。随着越来越多的制造商进入这个市场,不同制造商的产品甚至同一制造商的不同产品质量也有所不同。

SSD需要功能齐全、性能优良、可靠性高。PC客户端SSD需要具有良好的兼容性和低功耗,而企业级SSD对性能抖动和鲁棒性最为关注。目前,经历了近十几年的快速发展,SSD已在众多领域取代了HDD。消费级SSD的规格趋于稳定,成本要求不断提高,技术和市场的格局已基本固定。所以,许多初创团队和大厂开始将研发重心放在了企业级SSD上。

无论是刚刚起步3-5年的初创公司,还是已经入行10年以上的成熟公司,不断做出一款优秀的SSD并不容易。尤其是从数据可靠性的角度来看,SSD的品质尤为重要。毕竟网络断了可以重连,丢包可以重发;如果CPU坏了,可以在Intel和AMD、x86和ARM之间更换。但如果您的数据不幸丢失,则无法恢复。对于很多做软件定义存储的厂商来说,市场上的企业级SSD厂商和产品太多了,如果你选择了质量差的SSD,导致存储系统性能差,故障率高,会产生严重的质量问题。

目前,很多厂商在测试NVMe SSD时,严重依赖fio/NVMe-cli/dnvme等传统测试工具以及其他商业工具。这些工具可以做一些功能测试,但它们的性能不能满足快速增长的NVMe/PCIe规范。如果工具的性能低,测试压力也会低,并且某些缺陷将无法检测到。另外,这些工具对于测试脚本的二次开发并不友好,无法满足不同场景下快速开发测试用例的需求。

市场需要一款专业的NVMe SSD的测试软件,来解决传统FIO等测试工具的问题。

GYTech有几十年的SSD固件开发经验,在经历了各种测试工具的痛苦和教训后,他们决定自己做一个灵活的NVMe SSD测试工具,帮助制造商充分测试SSD,并帮助客户明智地选择合适的SSD。

在这个大背景下,GYTech公司开发了一套NVMe SSD的测试软件PyNVMe3。通过多年的推广,他们和众多OEM厂商、SSD厂商建立了良好的合作关系。很多厂商使用GYTech的产品和服务,并取得了良好的效果:以前抓不到的问题可以抓到了,以前不能测的特性可以测了。

天下武功,唯快不破

为什么PyNVMe3能找出更多的bug?原因在于,PyNVMe3对性能有极致的追求。对于企业级SSD来说,最基本的要求就是稳定。PyNVMe3对性能的极致追求并不是为了性能测试的结果,而是要最大化对测试盘的压力,提供最紧凑的时序,这样才有可能在有限的开发周期内压出各种潜在的问题。

虽然所有企业级SSD都会使用fio进行性能和压力测试,但其也有一定的局限性。PyNVMe3可以带来比fio更大的测试压力。在同一台主机和同一块SSD盘上对fio和PyNVMe3的4K随机读性能进行了测试,fio的单核IOPS为445k,而PyNVMe3可达到831K。PyNVMe3只利用单核CPU就可以达到大部分SSD盘的性能瓶颈。

但有人会问:那我们在用fio测试的时候定义numjobs=4甚至更多的jobs,不就可以了吗?本质上,1个job和4个job是两个不同的测试用例。无论性能还是可靠性,4个job的测试都不能替代1个job的测试。PyNVMe3对性能的极致追求不是为了性能测试的成绩更好看,而是要在各种workload下对测试盘提供最大的压力和最紧凑的时序,用比真实业务场景更大的压力尽量把问题在研发阶段就打出来。

从设计上来看,PyNVMe3能实现比fIO更高的性能,是因为PyNVMe3使用了其基于SPDK自主研发的用户态NVMe驱动。如下图所示,fio的每一个IO都需要经过复杂的内核存储子系统软件堆栈。而PyNVMe3直接通过用户态驱动把IO命令写到和测试盘共享的命令队列,并使用轮询机制从回收队列获得IO的结果。这种方式避免了主机端的内核和中断开销,性能更快、延迟更小,并且性能和延迟的一致性也更好,更接近测试盘的本来面目。打个比方,传统测试工具在测试盘上面盖上了一层厚厚的棉袄,让我们看不清盘的真实面貌;而PyNVMe3的轻量级的驱动只是一层薄薄的纱,让测试脚本可以触摸到测试盘的每一个棱角。

可靠稳定,亦可测量

任何存储设备对可靠性的要求都非常高,SSD也是如此。可靠性具体可以分成很多方面:性能要可靠、设备要可靠、数据要可靠。

性能可靠:SSD盘要在任何workload下面都提供高并且稳定的性能。

设备可靠:SSD盘即便在很大IO压力下,也要能正确处理一些异常事件和命令。

数据可靠:SSD盘在各个生命周期的阶段都不能丢数据,真的发生数据丢失也一定要如实报告。

要测试SSD盘的可靠性,需要一个更可靠的测试工具。

PyNVMe3通过上文提到的高性能低延迟的用户态驱动,能给盘最大的压力,并且记录准确的性能跳动和延迟分布。

PyNVMe3可以在Python脚本中创建多个进程,利用多个CPU的资源对同一个测试盘下不同的测试命令。譬如在一个CPU大压力读写测试盘的同时,另一个CPU发指令对测试盘掉电或reset;也可以在一个CPU大压力读写测试的同时,另一个CPU对测试盘发Admin命令或做带外管理操作。

PyNVMe3实现了对测试脚本透明的数据校验机制:通过在DRAM中维护每一个LBA的CRC值,来检查每一笔读数据的正确性。借助x86和ARM提供的CRC专用指令,PyNVMe3可以在实现极高IO性能的同时,对每一笔读IO进行CRC校验。这种机制简化了数据一致性测试的实现,可以在大部分测试中都实现对数据一致性的检查。

PyNVMe3本身的设计也非常注重可靠性。如下图所示,PyNVMe3在底层驱动中实现了高效的数据流,而将各种各样的NVMe SSD特性放到上层库和Python脚本中实现。通过这种分层设计,将复杂多变的特性和稳定可靠的数据流分开实现,上层的变化不会影响到下层驱动的稳定性。譬如,PyNVMe3在扩展对ZNS、SRIOV、MI等特性的时候,都是通过上层脚本实现的,避免各种新特性的加入对下层驱动的稳定性造成影响。

二次开发,灵活扩展

PyNVMe3不仅具有极高的性能和可靠性,而且还非常容易实现二次开发。在PyNVMe3设计之初就确定将所有功能都通过Python API作为唯一的接口开放给客户使用。测试工程师可以通过开发Python脚本来实现他们的创新,并将脚本部署到自动化的测试流程中,实现项目的敏捷开发模式。这对快节奏和高要求的SSD研发项目来说是至关重要的。

PyNVMe3的API设计遵循NVMe协议,通过面向对象的方式把不同的概念和功能封装到不同的类中实现。下图是PyNVMe3 API提供的各种类及其关联方式。

利用PyNVMe3提供的API,用户可以快速实现以下各种特性的Python测试脚本:

受限于传统测试工具,以往很多特性不能充分测试。PyNVMe3不仅可以实现上述各种特性的测试,还可以将多种特性结合起来构造更复杂的测试场景。譬如将大压力IO和Admin命令放到一起测试,发现有些盘处理Admin命令的延迟会长达数秒。PyNVMe3提供的这些API让用户可以通过二次开发实现更多的测试用例,让测试开发的效率更高、更富有成效。

PyNVMe3脚本开发指南(https://pynv.me/ssd/dev-guide/)提供了PyNVMe3二次开发的更多细节。

公共平台,上下共享

PyNVMe3具有很高的性能和可靠性,可以便捷地二次开发各种特性的测试脚本,所以很多客户开始选择PyNVMe3作为内部研发阶段的测试平台,这些客户覆盖了消费级、企业级、数据中心、工业和车载等各类SSD产品和主控的研发。

PyNVMe3是一个软件定义的NVMe SSD测试平台,可以工作在笔记本、台式机、工作站以及服务器等各种通用计算机平台之上。PyNVMe3不捆绑特定硬件平台,降低用户大规模部署的成本和风险。PyNVMe3也可以适配各种专门的测试制具,用来实现电源控制、功耗测量、带外管理接口命令等测试。PyNVMe3是一个为广大SSD厂商定制开发的NVMe SSD测试平台,受到广大厂商的关注和信任。

当PyNVMe3的客户发现他们的合作伙伴也在使用PyNVMe3的时候,PyNVMe3作为一个独立第三方的测试平台的优势就体现出来了:各个厂家可以各自开发PyNVMe3的测试脚本,并且和他们的上下游合作伙伴共享这些测试脚本,来保证双方合作的顺畅。我们经常会遇到一些问题只能通过SSD厂商的内部平台来复现,但是出于各种技术、商业和IP的考虑,这些内部平台无法开放给合作伙伴使用。现在我们只需要在PyNVMe3上面开发脚本,这样合作各方都可以在PyNVMe3这个公共平台上面跑相同的测试脚本。相对于开放整个内部测试平台,共享一些Python测试文件的使用权限在公司之间更容易操作。PyNVMe3正在成为业界一个专业的可获得的SSD测试公共平台。

写在后面

GYTech的官网,公布了一些采用其PyNVMe3测试工具测试业界一些知名的SSD的测试数据,其中有一个三星的消费级SSD和企业级SSD的对比测试,我觉得比较有意思,我这里拿来和大家分享一下。

PM9A3是三星的企业级SSD,而980Pro(又名9A1)是其客户端SSD。我们来看看客户端SSD和企业SSD有什么区别。

我这里只摘录一个顺序写的测试结果。

我们看到,980PRO具有SLC缓存,因此FOB状态下的性能更好。但当驱动器已满时,性能就会下降。Enterprise PM9A3不使用SLC缓存,即使驱动器已满也能保持性能稳定。

这是写入空驱动器200秒的速度图。由于SLC缓存和散热节流,980PRO的性能不断变化,而PM9A3却稳定如一线。

这就是我经常和大家说的,企业级SSD并不是绝对性能一定好于消费级SSD,但其性能抖动必须尽可能小。我们做软件定义存储的,也需要选择企业级SSD,而不能为了便宜,采用消费级的SSD。因为对于企业级存储来说,性能抖动是灾难性的。

以后有了PyNVMe3这些先进的SSD测试工具,这些简单的测试应该都不在话下。PyNVMe3不仅企业级SSD厂商在研发时候可以用,企业级存储系统厂商在选型的时候也可以用,甚至可以根据特定场景,和SSD厂商共享测试脚本,确保该存储系统在定位的场景有最佳的表现。

GYTech与众多SSD厂商和OEM厂商建立了合作关系,为客户提供PyNVMe3测试工具和服务。通过PyNVMe3的开放的理念、优越的性能和可靠性、强大的二次开发扩展能力,和业界合作伙伴一起做出更好更稳定的SSD产品!

end

CY23Q2美存储上市公司财报解读:去VMware浪潮导致Nutanix暴涨,AIGC利好存储市场

美国闪存峰会FMS 2023参会总结:新热点不多,规模只有疫情前一半

《2023 年企业数据存储的主要趋势》报告解读(附链接):QLC/NVMe-oF/专用SSD是顶级趋势

企业备份&恢复软件魔力象限火热出炉,还是没有中国厂商(附报告链接)

《2023年存储和数据保护技术技术成熟度曲线》报告解读(附原文链接)

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved