线程绑核

启动SPDK并绑定设备之后,SPDK的vhost进程调用Ceph的librbd接口创建设备,生成对应RBD设备的客户端线程(msgr-worker、tp_librbd、fn_radosclient),需要对这些线程进行绑核。

  1. 创建一个绑核脚本。

    cd /home
    vi bondcore.sh

  2. 在脚本中写入以下内容。

    1
    2
    3
    4
    5
    6
    7
    pid=
    rm -rf pid
    ps -T -p `pidof vhost` |grep -E 'tp_lib|radosclient|msg' > pid
    while read line;do
    pid=$(echo $line | awk -F " " '{print $2}')
    taskset -pc 4-12 $pid
    done < pid 
    
    • 其中,taskset -pc 4~12表示将Ceph线程绑到4~12的物理CPU上,请根据具体使用场景进行修改。
    • 该脚本需要在创建好设备,并启动虚拟机之后执行。