之前一篇《测给你看!异步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测试注意事项相关推荐

  1. NVMe SSD测试为何要先做预处理?

    转载自:https://blog.csdn.net/Memblaze_2011/article/details/102478395 评估一块NVMe SSD在真实业务场景中的吞吐能力.稳定性.可靠性以 ...

  2. 基于FPGA的双盘NVMe SSD的RAID0模式读写实现及测试

    文章目录 项目背景 RAID模式 实现架构设计 独立RC主控,独立控制器架构 独立RC主控,共享控制器架构 共享RC主控及控制器架构 架构实现 测试验证 准确性测试 数据写入测试 数据读出测试 个人的 ...

  3. 安兔兔电脑ssd测试软件,安兔兔SSD测试软件测评,威钰战国NVMe SSD

    原标题:安兔兔SSD测试软件测评,威钰战国NVMe SSD 威钰战国NVMe SSD测评,安兔兔SSD测试软件到底准不准 威钰最近推出了战国系列NVMe SSD,采用支持HMB虚拟缓存的慧荣SM226 ...

  4. 安兔兔电脑ssd测试软件,威钰战国NVMe SSD测评,安兔兔SSD测试软件到底靠不靠谱...

    威钰战国NVMe SSD测评,安兔兔SSD测试软件到底靠不靠谱 2019-10-10 18:09:09 3点赞 5收藏 3评论 威钰战国NVMe SSD测评,安兔兔SSD测试软件到底靠不靠谱. 威钰最 ...

  5. diskgenius 数据迁移_如何无损将UEFI格式的系统从SATA盘迁移到NVME SSD中

    一.前言 近期各种免费游戏大作换着花样送,这导致本人之前的一块960G SATA盘很快被填满.看到这里想必会有小伙伴说,存游戏为啥不用HDD呢? 呃,貌似现在都2020年了,再用HDD打游戏,那速度谁 ...

  6. 磁盘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 ...

  7. linux提升nvme性能,基于SPDK的NVMe SSD性能评估指南

    原标题:基于SPDK的NVMe SSD性能评估指南 一 通过fio工具测试磁盘性能 SPDK采用异步I/O(Asynchronous I/O)加轮询(Polling)的工作模式,通常与Kernel的异 ...

  8. SSD测试专题(三)

    SSD PI测试细节 PI测试的细节 仅分享一些自己遇到过的问题,后续有想起或遇到再同步更新. 众所周知,电源的质量关乎到硬件单板是否可正常工作,那么在PI测试中,测试人员需要注意的细节有哪些呢? 功 ...

  9. SPDK+NVMe SSD对接Virtio支撑红包场景性能

    原文链接:http://mp.weixin.qq.com/s/nP62NpX0NAo4BZhpkAWaQg 本文转载自云栖社区,原文标题<红包场景下,高性能本地存储技术将硬件性能发挥到极致> ...

最新文章

  1. 企业网络推广——网站页面布局优化对于企业网络推广来说非同一般
  2. windows .bat获取XCOPY返回值
  3. 【转】解析.Net框架下的XML编程技术
  4. 1-18Linux内核空间和用户空间
  5. mysql错误码1709_MySQL5.6出现ERROR 1709 (HY000): Index column size too large问题的解决方法...
  6. (95)FPGA仿真文件保存(VCD文件)
  7. Java面试之锁-可重入锁和递归锁
  8. 腾讯加速推进防沉迷新规:新增21款产品 微信/QQ小游戏接入
  9. python 实现对地图的点击_python使用folium库绘制地图点击框
  10. Alpha冲刺 (2/10)
  11. 基础数据类型转换过程中注意事项
  12. 微信小游戏开发之使用云开发作为后台服务
  13. cmt obm odm 代工模式oem_OEM、ODM、OBM、OPM概念,作用与区别
  14. 强制推广鸿蒙系统,鸿蒙系统凭实力占市场,无需通过禁止安卓系统来推广
  15. 安全圈年终大趴,FIT 2019首日盛况全程回顾
  16. 小米路由修改服务器密码,192.168.31.1小米路由器修改WIFI密码
  17. 丰富的无线局域网技术
  18. java使用阿里云oss sdk
  19. ARM | STM32F10xxx课堂学习笔记(时钟 高级控制定时器)...
  20. php答题抽奖源码,PHP转盘抽奖接口实例

热门文章

  1. 加油吧,所有登山的人
  2. 为什么要配置JDK的环境变量?和配置JDK环境变量的步骤个人总结
  3. 【技术贴】完美解决win7字体模糊!解决360浏览器在win7的标签字体图标模糊。最新办法收集。...
  4. 告诉你在职场说话的八大技巧
  5. python turtle 手撸RRT算法
  6. idea的头注释@author、@time设置
  7. zset 怎么get_Redis之ZSet命令
  8. c语言 switch_switch硬核别致玩法,C语言冷知识,领略认知盲区的switch写法
  9. Python使用Pygal可视化GitHub仓库排名
  10. 雪球acw_sc__v2