XFS为例 讨论NVMe SSD测试注意事项
之前一篇《测给你看!异步I/O模式下NVMe SSD性能有多高》文章,介绍了同步I/O和异步I/O模式下NVMe SSD性能的差异,更高性能的存储设备也需要更高的压力才能显示其性能优势。在真实的企业系统中,NVMe SSD更多见于经由文件系统被应用使用。相较于裸盘性能的测试,文件系统环境中的NVMe SSD测试更为复杂,也更有价值,本文也将对NVMe SSD在文件系统场景中测试需要注意的问题进行解读。
服务器:浪潮 NF5280M5CPU:Intel(R) Xeon(R) Gold 5115操作系统:CentOS 7.4测试工具:FIO 3.13被测NVMe SSD产品:PBlaze5 C916 NVMe SSD(3.2T)文件系统:xfs
在测试之前我们会将被测的PBlaze5 NVMe SSD格式化为xfs文件系统。测试工具使用了fio,因此解读也与fio的测试流程和结果保持一致。测试内容包含128K顺序读写负载下的吞吐量和4k随机读写负载下的IOPS,最常见的测试场景也最容易说明问题。
在测试之前我们会将被测的PBlaze5 NVMe SSD格式化为xfs文件系统。测试工具使用了fio,因此解读也与fio的测试流程和结果保持一致。测试内容包含128K顺序读写负载下的吞吐量和4k随机读写负载下的IOPS,最常见的测试场景也最容易说明问题。
128K顺序读/写测试
首先使用fio执行一个128k顺序读命令。
fio -name=test -thread -ioengine=libaio -direct=1 -directory=/nvme0n1 -rw=read -bs=128K -numjobs=1 -iodepth=256 -size=3200G -group_reporting
命令开始执行就可以看到测试文件写盘(Laying out IO file)的状态。文件写完成之后才会开始正式的读测试,并记录结果,这与写测试的流程不一样,下文会提到。接下来进行顺序写预处理。
fio -name=test -thread -ioengine=libaio -direct=1 -directory=/nvme0n1 -rw=write -bs=128K -numjobs=1 -iodepth=256 -runtime=10800 -time_based -size=3200G -group_reporting
全盘顺序写三个小时。
Attention
预处理很重要。经过长时间的擦写,NVMe SSD的GC等功能会被触发,这时也更接近于盘在生产环境中的真实性能,测试过程中一定要保证NVMe SSD被写满的状态否则会造成性能偏高的现象,预处理的作用也在于此在刚才顺序预处理中完成Laying out IO file过程便可以看作对盘的预处理。至此执行的两条命令都会对NVMe SSD进行大规模的写,预处理工作也随之完成。
接下来是正式的128K顺序读/写性能测试。首先是顺序读测试:
fio -name=test -thread -ioengine=libaio -direct=1 -directory=/nvme0n1 -rw=read -bs=128K -numjobs=1 -iodepth=256 -runtime=600 -time_based -size=3200G -group_reporting
完成读测试之后就是顺序写测试:
fio -name=test -thread -ioengine=libaio -direct=1 -directory=/nvme0n1 -rw=write -bs=128K -numjobs=1 -iodepth=256 -runtime=600 -time_based -size=3200G -group_reporting
从结果来看xfs对读带宽造成的影响大于对写带宽的影响。在此还需要强调下fio读和写性能测量的差异,在此我们运行了两次fio,如下图:
fio读测试
fio写测试
执行fio语句开始文件系统测试时会看到Laying out IO file过程,过程中会创建测试文件进行文件系统元数据分配。在进行读测试中Laying out IO file过程的性能表现是不会合入整体性能测试结果的,但是写测试中Laying out过程会合入整体性能测试结果,此时SSD的性能是一边Laying out,一边写数据的性能,会与稳态下的写性能有差异,所以还是推荐通过预处理的方式让盘达到稳态进行测试。
4K随机读/写测试
随机读写测试仍然首先使用fio创建测试文件完成文件系统布局:
fio -name=test -thread -ioengine=libaio -direct=1 -directory=/nvme0n1 -rw=randread -bs=4K -numjobs=8 -iodepth=64 -size=400G -group_reporting -norandommap=1
随机写预处理:
fio -name=test -thread -ioengine=libaio -direct=1 -directory=/nvme0n1 -rw=randwrite -bs=4K -numjobs=8 -iodepth=64 -runtime=10800 -ramp_time=120 -time_based -size=400G -group_reporting -norandommap=1
Attenion
随机读写测试中建议使用directory指定测试目录。因为使用directory时会根据fio设置的测试线程数量创建相应个数的测试文件。如果使用namefile指定测试文件只会创建一个测试文件不能完全发挥出NVMe SSD的性能。
接下来进行4K随机读IOPS性能测试:
fio -name=test -thread -ioengine=libaio -direct=1 -directory=/nvme0n1 -rw=randread -bs=4K -numjobs=8 -iodepth=64 -size=400G -group_reporting -norandommap=1
随机写测试:
fio -name=test -thread -ioengine=libaio -direct=1 -directory=/nvme0n1 -rw=write -bs=128K -numjobs=1 -iodepth=256 -runtime=10800 -time_based -size=3200G -group_reporting
4K随机读/写也达到了超过85万和20万IOPS的性能。
综合来看,xfs文件系统会对NVMe SSD的性能造成一定的影响,而多样的应用则使得NVMe SSD的读写负载更加复杂,所以很难精准评估NVMe SSD在所有应用场景中的性能。本文采用稳态下fio性能测试获取的是NVMe SSD一个具有代表性的性能指标。这样的结果符合NVMe SSD在数据中心中长期运行时的性能状态,只是在实际应用中,还需要视具体场景分析瓶颈所在,才能找到优化的方法。
XFS为例 讨论NVMe SSD测试注意事项相关推荐
- NVMe SSD测试为何要先做预处理?
转载自:https://blog.csdn.net/Memblaze_2011/article/details/102478395 评估一块NVMe SSD在真实业务场景中的吞吐能力.稳定性.可靠性以 ...
- 基于FPGA的双盘NVMe SSD的RAID0模式读写实现及测试
文章目录 项目背景 RAID模式 实现架构设计 独立RC主控,独立控制器架构 独立RC主控,共享控制器架构 共享RC主控及控制器架构 架构实现 测试验证 准确性测试 数据写入测试 数据读出测试 个人的 ...
- 安兔兔电脑ssd测试软件,安兔兔SSD测试软件测评,威钰战国NVMe SSD
原标题:安兔兔SSD测试软件测评,威钰战国NVMe SSD 威钰战国NVMe SSD测评,安兔兔SSD测试软件到底准不准 威钰最近推出了战国系列NVMe SSD,采用支持HMB虚拟缓存的慧荣SM226 ...
- 安兔兔电脑ssd测试软件,威钰战国NVMe SSD测评,安兔兔SSD测试软件到底靠不靠谱...
威钰战国NVMe SSD测评,安兔兔SSD测试软件到底靠不靠谱 2019-10-10 18:09:09 3点赞 5收藏 3评论 威钰战国NVMe SSD测评,安兔兔SSD测试软件到底靠不靠谱. 威钰最 ...
- diskgenius 数据迁移_如何无损将UEFI格式的系统从SATA盘迁移到NVME SSD中
一.前言 近期各种免费游戏大作换着花样送,这导致本人之前的一块960G SATA盘很快被填满.看到这里想必会有小伙伴说,存游戏为啥不用HDD呢? 呃,貌似现在都2020年了,再用HDD打游戏,那速度谁 ...
- 磁盘I:O 性能指标 以及 如何通过 fio 对nvme ssd,optane ssd, pmem 性能摸底
文章目录 1. 磁盘I/O性能指标 1.1 性能指标 1.2 I/O 观测 1.2.1 磁盘I/O 观测 1.2.2 进程I/O观测 2. Fio 性能测试 2.1 环境准备 2.2 测试维度选择 2 ...
- linux提升nvme性能,基于SPDK的NVMe SSD性能评估指南
原标题:基于SPDK的NVMe SSD性能评估指南 一 通过fio工具测试磁盘性能 SPDK采用异步I/O(Asynchronous I/O)加轮询(Polling)的工作模式,通常与Kernel的异 ...
- SSD测试专题(三)
SSD PI测试细节 PI测试的细节 仅分享一些自己遇到过的问题,后续有想起或遇到再同步更新. 众所周知,电源的质量关乎到硬件单板是否可正常工作,那么在PI测试中,测试人员需要注意的细节有哪些呢? 功 ...
- SPDK+NVMe SSD对接Virtio支撑红包场景性能
原文链接:http://mp.weixin.qq.com/s/nP62NpX0NAo4BZhpkAWaQg 本文转载自云栖社区,原文标题<红包场景下,高性能本地存储技术将硬件性能发挥到极致> ...
最新文章
- 企业网络推广——网站页面布局优化对于企业网络推广来说非同一般
- windows .bat获取XCOPY返回值
- 【转】解析.Net框架下的XML编程技术
- 1-18Linux内核空间和用户空间
- mysql错误码1709_MySQL5.6出现ERROR 1709 (HY000): Index column size too large问题的解决方法...
- (95)FPGA仿真文件保存(VCD文件)
- Java面试之锁-可重入锁和递归锁
- 腾讯加速推进防沉迷新规:新增21款产品 微信/QQ小游戏接入
- python 实现对地图的点击_python使用folium库绘制地图点击框
- Alpha冲刺 (2/10)
- 基础数据类型转换过程中注意事项
- 微信小游戏开发之使用云开发作为后台服务
- cmt obm odm 代工模式oem_OEM、ODM、OBM、OPM概念,作用与区别
- 强制推广鸿蒙系统,鸿蒙系统凭实力占市场,无需通过禁止安卓系统来推广
- 安全圈年终大趴,FIT 2019首日盛况全程回顾
- 小米路由修改服务器密码,192.168.31.1小米路由器修改WIFI密码
- 丰富的无线局域网技术
- java使用阿里云oss sdk
- ARM | STM32F10xxx课堂学习笔记(时钟 高级控制定时器)...
- php答题抽奖源码,PHP转盘抽奖接口实例
热门文章
- 加油吧,所有登山的人
- 为什么要配置JDK的环境变量?和配置JDK环境变量的步骤个人总结
- 【技术贴】完美解决win7字体模糊!解决360浏览器在win7的标签字体图标模糊。最新办法收集。...
- 告诉你在职场说话的八大技巧
- python turtle 手撸RRT算法
- idea的头注释@author、@time设置
- zset 怎么get_Redis之ZSet命令
- c语言 switch_switch硬核别致玩法,C语言冷知识,领略认知盲区的switch写法
- Python使用Pygal可视化GitHub仓库排名
- 雪球acw_sc__v2