鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

SPDK中断聚合优化

Virtio+SPDK通过SPDK绕过传统内核存储栈,通过用户态驱动 + 共享内存的方式实现了一套低延迟、高吞吐的虚拟化存储 I/O 加速方案。针对前端中断占比较高的场景,提出SPDK中断聚合优化,采用virtio前后端感知的中断聚合技术,通过感知前后端IO请求、IO完成请求数,减少后端对前端的中断通知数量,释放CPU算力给前端IO请求下发以及前端的IO数据读取,提升系统整体的吞吐性能。

  1. 下载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
    
  2. 下载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
    
  3. 编译使用新的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 
    
  4. 开启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个轮询核