使用FIO测试SPDK性能
前提
若在 FEMU 上进行测试,需调整 FEMU 以解决 NVMe 协议的 Admin 命令未实现的问题。以下方法仅为暂时屏蔽该问题。
| 1 |  | 
一、编译FIO
- 克隆FIO源代码库:
| 1 |  | 
- 编译并安装FIO:
| 1 |  | 
二、编译SPDK
- 克隆SPDK源代码库
| 1 |  | 
- 启用FIO插件,运行SPDK配置脚本
| 1 |  | 
- 安装依赖并编译SPDK:
| 1 |  | 
编译完成后,在 <spdk_repo>/build/fio 目录下会生成 fio_plugin 的可执行文件:spdk_bdev 和 spdk_nvme。
在 SPDK 用户态模式下,SPDK 将设备从内核驱动中解绑并绑定到 SPDK 提供的用户层驱动上,因此解绑后用户无法通过 lsblk 等指令直接查看设备。为了方便使用 FIO 测试设备性能,SPDK 推出了 FIO 插件。
SPDK 提供两种形式的 fio_plugin:
- spdk_nvme:基于裸盘 NVMe 的 fio_plugin,通过 SPDK 用户态驱动直接访问裸盘,用于测试裸盘性能。
- spdk_bdev:基于 bdev 的 fio_plugin,通过 SPDK 块设备 bdev 层进行 I/O 测试,用于测试 SPDK bdev 的性能。
三、从内核解绑设备
使用 SPDK 提供的 setup.sh 脚本,将存储设备从内核驱动中解绑并分配大页:
| 1 |  | 
创建 JSON 配置文件:
| 1 |  | 
JSON 配置文件示例:
| 1 |  | 
四、准备FIO配置文件
FIO 配置文件与普通配置文件大致相似,但为了使用 SPDK 编译生成的插件,需要设置 ioengine 和 spdk_json_conf。
ioengine 需指定编译好的 spdk_bdev 或 spdk_nvme 的路径,spdk_json_conf 需指定第三步中生成的 JSON 文件。
FIO 配置文件示例:
| 1 |  | 
五、运行FIO
| 1 |  | 
输出示例:
| 1 |  | 
六、ZNS性能测试
SPDK FIO 插件支持 ZNS SSD 性能测试。详情请参考ZNS性能测试。
使用FIO测试SPDK性能
      https://ci-tz.github.io/2024/03/04/使用FIO测试SPDK性能/