一文评估基于SPDK的NVMe SSD性能

本文主要介绍磁盘性能评估的方法,针对用户态驱动SPDK与Kernel,并且对常见问题做出总结。

一. 通过fio工具测试磁盘性能

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

1. 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:指定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:指定测试的对象。

2. 基于NVMe的fio_plugin

安装步骤

a. 下载编译fio:

git clone https : //github . com/axboe/fio

b.下载编译SPDK:

git clone https : //github . com/spdk/spdk

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

测试方法

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

LD_PRELOAD=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值