SPDK中断聚合优化
Virtio+SPDK通过SPDK绕过传统内核存储栈,通过用户态驱动 + 共享内存的方式实现了一套低延迟、高吞吐的虚拟化存储 I/O 加速方案。针对前端中断占比较高的场景,提出SPDK中断聚合优化,采用virtio前后端感知的中断聚合技术,通过感知前后端IO请求、IO完成请求数,减少后端对前端的中断通知数量,释放CPU算力给前端IO请求下发以及前端的IO数据读取,提升系统整体的吞吐性能。
- 下载SPDK 24.01源码。
1 2 3
mkdir SPDK_24.01 cd SPDK_24.01 git clone https://github.com/spdk/spdk -b v24.01.x
- 下载SPDK补丁。
1 2 3 4
git clone https://gitee.com/src-openeuler/spdk.git cd spdk git checkout -b 2403SP2_SPDK origin:openEuler-24.03-LTS-SP2 cp 0013-vhost-add-vhost-interrupt-coalescing.patch ../SPDK_24.01/spdk
- 编译使用新的SPDK。
1 2 3 4 5 6 7
cd ../SPDK_24.01/spdk git submodule update --init ./configure --disable-tests --disable-unit-tests --enable-lto --disable-debug make -j`nproc` make -j`nproc` install ln -s `pwd`/build/bin/vhost /usr/bin/vhost ln -s `pwd`/scripts/rpc.py /usr/bin/rpc
- 开启SPDK中断聚合。
1 2 3
./vhost -S /var/tmp -m [168,170,172,174] -E & rpc bdev_aio_create /dev/nvme1n1 aio_0 512 rpc vhost_create_blk_controller vhost.0 aio_0
其中“-E”参数为新增的中断聚合使能开关。
[168,170,172,174]为SPDK绑定的4个轮询核
父主题: 存储损耗调优