spdk + fio测试nvme 设备的性能

1、背景

  • spdk :是一个基于dpdk的存储开发kit,这里主要利用了它提供的用户态nvme driver —— spdk链接
  • fio: io测试工具,提供丰富的参数,可以构造复杂的io pattern

fio的测试对象可以是块设备、文件等,在spdk的使用过程中会unbind默认的nvme driver,所以在系统中是看不到nvme块设备的,在spdk中可以通过fio_plugin的方式,将spdk的用户态driver部分的io功能打包成一个ioengine提供给fio使用,可以综合spdk的高性能和fio提供的复杂场景。

2、使用步骤

2.1下载dpdk、spdk、fio并解压

用最新的版本即可

2.2编译fio
cd fio_dir
./configure
make&&make install
2.3编译dpdk
vim <dpdk_dir>/config/defconfig_x86_64-native-linuxapp-gcc
#增加一行
EXTRA_CFLAGS=-fPIC
#回到<dpdk_dir>编译dpdk
make install T=x86_64-native-linuxapp-gcc DESTDIR=.
2.4编译spdk
cd <spdk_dir>
./configure --with-fio=/root/Downloads/fio-fio-3.3/ --with-dpdk=/root/Downloads/dpdk-17.11/x86_64-native-linuxapp-gcc
#修改<spdk_dir>/CONFIG文件
CONFIG_FIO_PLUGIN=y
FIO_SOURCE_DIR=fio的目录
#编译spdk
make DPDK_DIR=/root/Downloads/dpdk-17.11/x86_64-native-linuxapp-gcc
2.5unbind nvme driver替换为vfio
cd <spdk_dir>/scripts
sh setup.sh
2.6使用fio执行测试
LD_PRELOAD=/root/Downloads/spdk-18.01/examples/nvme/fio_plugin/fio_plugin /root/Downloads/fio-fio-3.3/fio example_config.fio
2.7 jobfile的例子

这个jobfile是spdk中提供的例子

[global]
ioengine=spdk
thread=1
group_reporting=1
direct=1
verify=0
time_based=1
ramp_time=0
norandommap=1
runtime=60
iodepth=32
rw=randwrite
bs=3000b
[test]
numjobs=1
filename=trtype=PCIe traddr=0000.01.00.0 ns=1

3、注意

  • 由于spdk已经提前从系统中unbind了nvme设备,所以/dev/下是没有nvme设备的,必须指定到具体的pcie的接口上,fio的jobfile中的filename需要使用key=val的模式(这个地方有点怪异)
    • trttype:有pcie和rdma两种
    • traddr:pcie的“domain:bus:device:function”格式,可以用lspci命令查看对应的nvme设备在那个总线上,一般单台机器的domain都是0000
    • ns:namespace的id
  • spdk做性能测试时,对每个namespace会绑定一个lcore,所以fio的thread只能等于1
  • fio测试random的io时,需要设置norandommap=1 ,防止fio的random map影响性能
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. 简介 本文档包含DPDK软件安装和配置的相关说明。旨在帮助用户快速启动和运行软件。文档主要描述了在Linux...
    半天妖阅读 18,073评论 0 22
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,058评论 19 139
  • 人生之悟 冬天总会过去,身体似的灰烬,我用心灵的火炬温暖躯体,凉风吹寒,人生枯瘦。面对一切的现实,无言以对的落寞,...
    通灵石阅读 1,553评论 0 0
  • 在学习FFmpeg之前,查阅了很多资料包括官方的、国外的、国内的,相信还是雷霄骅资料最适合初学者,在这里哀悼下大神...
    风与鸾阅读 5,314评论 2 8
  • 如果可以早点遇见你,我希望可以是一生而不是一时。 如果可以早点遇见你,我希望可以真诚的与你相识,诚恳的与你相恋。 ...
    何大娴子阅读 3,311评论 0 0

友情链接更多精彩内容