周雁波
Intel 存储软件工程师
主要从事SPDK软件开发工作
刘孝冬
Intel 存储软件工程师
主要从事SPDK以及ISA-L软件开发工作
在之前推送的一文中,我们详细介绍了SPDK监控管理工具,今天带来的这篇文章将向大家介绍:SPDK生态工具之性能评估工具。
fio_plugin
通常,在内核模式下,使用fio工具来测试设备在实际的工作负载下所能承受的最大压力。用户可以启动多个线程,对设备来模拟各种IO操作,使用filename指定所被测试的设备。然而,在SPDK用户态模式情况下,SPDK在使用前会unbind内核驱动,直接通过PCI地址来识别设备,因此用户在系统上无法直接看到设备。为此,SPDK推出fio_plugin与SPDK深度集成,用户可以通过指定设备的PCI地址,来决定所要进行压力测试的设备。同时,在fio_plugin内部,采用SPDK用户态设备驱动所提供的轮询和异步的方式进行I/O操作,I/O通过SPDK直接写入磁盘。
SPDK提供两种形态的fio_plugin:
-
基于裸盘fio_plugin,其特点为I/O通过SPDK直接访问裸盘,常用于评估SPDK用户态驱动在裸盘上的性能。
基于bdev的fio_plugin,其特点为I/O测试基于SPDK块设备bdev之上,所有I/O经由块设备层bdev,再传送至裸盘设备。常用于评估SPDK块设备bdev的性能。
在编译时,fio_plugin要依赖于一些原本fio所提供的库文件,因此在编译SPDK前,要首先编译fio,并且在运行SPDK configure脚本时,要指定fio源码的路径,否则fio_plugin默认是不会编译的。例如