基于SPDK的NVMe SSD性能评估指南-更新

通过fio工具测试磁盘性能

SPDK采用异步I/O(Asynchronous I/O)加轮询(Polling)的工作模式,通常与Kernel的异步I/O作为对比。在此,主要介绍通过使用fio评估
Kernel异步I/O,以及spdk fio_plugin的两种模式。

01

fio评估kernel异步I/O(AIO)

fio支持多种模式的I/O引擎,同时也包含了测试异步I/O的引擎,即libaio。在测试异步I/O的时候,只需要将fio启动配置文件中的ioengine设为libaio即可。通常在做异步I/O的时候,I/O请求会发送到相应的队列中,等待被处理,因此队列深度将会影响磁盘性能。所以在测试异步I/O的时候,根据磁盘的特性指定相应的队列深度(iodepth)。

测试Kernel异步I/O的fio配置参数示例如下:

[Global]
ioengine=libaio
direct=1
rw=randrw
rwmixread=100 (100% reads), 70 (70% reads 30% writes), 0 (100 writes)
thread=1
norandommap=1
time_base=1
runtime=300s
ramp_time=10s
bs=4k
iodepth=32
Numjobs=1
[test]
filename=/dev/nvme0n1

参数详解

ioengine:指定I/O引擎,在这里测试Kernel的异步I/O,因此指定I/O引擎为libaio
direct: 指定direct模式O_DIRECT,I/O会绕过系统的page buffer;
rw:读写模式,这里指定randrw表示混合随机读写;
rwmixread:混合随机读写模式下read请求所占比例;
thread:指定使用线程模式。由于spdk fio_plugin只支持线程模式,因此与Kernel对比时,通常都统一指定线程模式来对比;
norandommap:指定I/O时,每次都获取一个新的随机offset,防止额外的CPU使用消耗;
time_based:指定采用时间模式;
runtime:测试时长;
ramp_time:统计性能之前所运行的时间,为了防止没有进行稳态而造成的性能虚高带来的影响;
bs:I/O块大小;
iodepth:队列深度;
numjobs:worker的个数;
filename:指定测试的对象。

02

基于NVMe的fio_plugin

安装步骤

a. 下载编译fio:

git clone https://github.com/axboe/fio
cd fio && git checkout fio-3.3
make

b.下载编译SPDK:

git clone https://github.com/spdk/spdk
cd spdk && git submodule update --init
./configure --with-fio=/path/to/fio/repo <other configuration options>
make

注意:由于fio_plugin要依赖fio中提供的一些依赖包,因此在运行configure时,必须指定fio目录,否则默认fio_plugin不会编译

测试方法

a. 使用fio_plugin测试裸盘,需要引入fio_plugin路径,因此在运行fio时,在fio命令之前加如下参数:

LD_PRELOAD=<path to spdk

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

早日实现财富自由-2025

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值