dpdk vhost应用

dpdk vhost应用

dpdk 目录下有examples/vhost 测试使用vhost-user 的例子,相当与网卡直通到虚拟机网卡

[root@HP14QY2 build]# ./vhost-switch
EAL: Detected 112 lcore(s)
EAL: Detected 2 NUMA nodes
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: No free hugepages reported in hugepages-2048kB
EAL: No free hugepages reported in hugepages-2048kB
EAL: No free hugepages reported in hugepages-2048kB
EAL: No free hugepages reported in hugepages-1048576kB
EAL: FATAL: Cannot get hugepage information.
EAL: Cannot get hugepage information.
EAL: Error - exiting with code: 1
  Cause: Error with EAL initialization
[root@HP14QY2 build]# pwd
/data/dpdk-stable-18.11.2/examples/vhost/build

先启用 gdb ./vhost-switch

(gdb) set args -l 0-3 -n 4 --socket-mem 1024  -- --socket-file /tmp/sock0 --client  -p 0x1
(gdb) r

创建 共享内存通道 /tmp/sock0

启用虚拟机 xml 配置添加

-chardev socket,id=char1,path=/tmp/sock0,server
-netdev type=vhost-user,id=mynet1,chardev=char1,vhostforce
-device virtio-net-pci,mac=00:00:00:00:00:01,netdev=mynet1

启动虚拟机

[root@HP14QY2 ~]# vim runqemu.sh 
#!/bin/bash

qemu="/usr/local/qemu-4.0.0/bin/qemu-system-x86_64"
USER_SOCK="/tmp/sock0"
MPATH="/dev/hugepages"
NPAGE=4096
MEMSZ=2048

cat /proc/mounts | grep huge>/dev/null
if [ $? -ne 0 ]; then
      [-e ${MPATH} ] || mkdir ${MPATH}
      sudomount -t hugetlbfs none ${MPATH}
fi

# assuming 2MB page
num_huge_page=`cat /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages`
if [ ${num_huge_page} -ne ${NPAGE} ];then
      bash -c "echo ${NPAGE} > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages"
fi

num_huge_page=`cat /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages`
#if [ ${num_huge_page} -ne ${NPAGE} ];then
#   echo"cannot run: only $num_huge_page hugepages reserved"
#   exit1
#fi

sudo ${qemu} -enable-kvm -cpu host -m ${MEMSZ}M \
             -object memory-backend-file,id=hugemem,size=${MEMSZ}M,mem-path=${MPATH},share=on \
             -mem-prealloc -smp 2 -numa node,memdev=hugemem \
             -chardev socket,id=char1,path=${USER_SOCK},server \
             -netdev vhost-user,id=user0,chardev=char1 \
             -device virtio-net-pci,id=net0,netdev=user0,mac=52:54:00:00:00:14 \
             -drive file=/data/modecentos7.qcow2

[root@HP14QY2 ~]# ./runqemu.sh 
qemu-system-x86_64: -chardev socket,id=char1,path=/tmp/sock0,server: info: QEMU waiting for connection on: disconnected:unix:/tmp/sock0,server
VNC server running on ::1:5900

学习地址: Dpdk/网络协议栈/vpp/OvS/DDos/NFV/虚拟化/高性能专家-学习视频教程-腾讯课堂
更多DPDK相关学习资料有需要的可以自行报名学习,免费订阅,久学习,或点击这里加qun免费
领取,关注我持续更新哦! ! 

启动 vhost_swittch

[root@HP14QY2 vhost]# ./build/vhost-switch -l 0-3 -n 4 --socket-mem 1024  -- --socket-file /tmp/sock0 --client  -p 0x1
EAL: Detected 112 lcore(s)
EAL: Detected 2 NUMA nodes
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: No free hugepages reported in hugepages-1048576kB
EAL: Probing VFIO support...
VHOST_PORT: 
Specified port number(1) exceeds total system port number(0)
VHOST_DATA: Procesing on Core 1 started
VHOST_DATA: Procesing on Core 2 started
VHOST_DATA: Procesing on Core 3 started
VHOST_CONFIG: vhost-user client: socket created, fd: 534
VHOST_CONFIG: failed to connect to /tmp/sock0: Connection refused
VHOST_CONFIG: /tmp/sock0: reconnecting...
VHOST_CONFIG: /tmp/sock0: connected
VHOST_CONFIG: new device, handle is 0
VHOST_CONFIG: recvmsg failed
VHOST_CONFIG: vhost peer closed
VHOST_CONFIG: vhost-user client: socket created, fd: 534
VHOST_CONFIG: failed to connect to /tmp/sock0: Connection refused
VHOST_CONFIG: /tmp/sock0: reconnecting...
VHOST_CONFIG: /tmp/sock0: connected
VHOST_CONFIG: new device, handle is 0
VHOST_CONFIG: recvmsg failed
VHOST_CONFIG: vhost peer closed
VHOST_CONFIG: vhost-user client: socket created, fd: 534
VHOST_CONFIG: failed to connect to /tmp/sock0: Connection refused
VHOST_CONFIG: /tmp/sock0: reconnecting...
VHOST_CONFIG: /tmp/sock0: connected
VHOST_CONFIG: new device, handle is 0
VHOST_CONFIG: read message VHOST_USER_GET_FEATURES
VHOST_CONFIG: read message VHOST_USER_GET_PROTOCOL_FEATURES
VHOST_CONFIG: read message VHOST_USER_SET_PROTOCOL_FEATURES
VHOST_CONFIG: read message VHOST_USER_GET_QUEUE_NUM
VHOST_CONFIG: read message VHOST_USER_SET_SLAVE_REQ_FD
VHOST_CONFIG: read message VHOST_USER_SET_OWNER
VHOST_CONFIG: read message VHOST_USER_GET_FEATURES
VHOST_CONFIG: read message VHOST_USER_SET_VRING_CALL
VHOST_CONFIG: vring call idx:0 file:538
VHOST_CONFIG: read message VHOST_USER_SET_VRING_CALL
VHOST_CONFIG: vring call idx:1 file:539
VHOST_CONFIG: read message VHOST_USER_SET_VRING_ENABLE
VHOST_CONFIG: set queue enable: 1 to qp idx: 0
VHOST_CONFIG: read message VHOST_USER_SET_VRING_ENABLE
VHOST_CONFIG: set queue enable: 1 to qp idx: 1
VHOST_CONFIG: read message VHOST_USER_SET_VRING_ENABLE
VHOST_CONFIG: set queue enable: 1 to qp idx: 0
VHOST_CONFIG: read message VHOST_USER_SET_VRING_ENABLE
VHOST_CONFIG: set queue enable: 1 to qp idx: 1
VHOST_CONFIG: read message VHOST_USER_SET_FEATURES
VHOST_CONFIG: read message VHOST_USER_SET_MEM_TABLE
VHOST_CONFIG: guest memory region 0, size: 0x80000000
         guest physical addr: 0x0
         guest virtual  addr: 0x7f2496200000
         host  virtual  addr: 0x7f8008000000
         mmap addr : 0x7f8008000000
         mmap size : 0x80000000
         mmap align: 0x200000
         mmap off  : 0x0
VHOST_CONFIG: read message VHOST_USER_SET_VRING_NUM
VHOST_CONFIG: read message VHOST_USER_SET_VRING_BASE
VHOST_CONFIG: read message VHOST_USER_SET_VRING_ADDR
VHOST_CONFIG: read message VHOST_USER_SET_VRING_KICK
VHOST_CONFIG: vring kick idx:0 file:541
VHOST_CONFIG: read message VHOST_USER_SET_VRING_CALL
VHOST_CONFIG: vring call idx:0 file:542
VHOST_CONFIG: read message VHOST_USER_SET_VRING_NUM
VHOST_CONFIG: read message VHOST_USER_SET_VRING_BASE
VHOST_CONFIG: read message VHOST_USER_SET_VRING_ADDR
VHOST_CONFIG: read message VHOST_USER_SET_VRING_KICK
VHOST_CONFIG: vring kick idx:1 file:538
VHOST_CONFIG: virtio is now ready for processing.
VHOST_DATA: (0) device has been added to data core 0
VHOST_CONFIG: read message VHOST_USER_SET_VRING_CALL
VHOST_CONFIG: vring call idx:1 file:543
VHOST_CONFIG: read message VHOST_USER_SET_VRING_ENABLE
VHOST_CONFIG: set queue enable: 1 to qp idx: 0
VHOST_CONFIG: read message VHOST_USER_SET_VRING_ENABLE
VHOST_CONFIG: set queue enable: 1 to qp idx: 1

原文链接:https://zhuanlan.zhihu.com/p/454344875 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值