使用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性能/