DPDK-A3: KVM使用SRIOV和虚机使用DPDK
创始人
2024-04-10 15:28:43

虚拟机基本管理

如下命令可以修改默认网段

sudo virsh net-edit --network default

default45ed012c-3933-4f3e-9575-b37bffa21b83


Enable forwarding

echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.conf

[root@netdev vm]# virsh list --allId   Name     State
------------------------1    ubuntu   running

启动、关闭、删除

virsh [start/shutdown/destroy] vm

挂起和恢复

virsh [suspend|resume] vm

开机自启动

virsh autostart vm

查看信息

[root@netdev vm]# virsh dominfo ubuntu
Id:             1
Name:           ubuntu
UUID:           dd1e0fee-0f38-4a9a-a515-256bb6a10d16
OS Type:        hvm
State:          running
CPU(s):         4
CPU time:       539.3s
Max memory:     8388608 KiB
Used memory:    8388608 KiB
Persistent:     yes
Autostart:      disable
Managed save:   no
Security model: selinux
Security DOI:   0
Security label: system_u:system_r:svirt_t:s0:c887,c939 (enforcing)

克隆虚机

[root@netdev vm]# virt-clone -o ubuntu -n vm001 -f /home/vm/vm001.qcow2
Allocating 'vm001.qcow2'                                                                                                             | 100 GB  00:00:08Clone 'vm001' created successfully.

克隆完成后, 需要uuidgen

[root@netdev vm]# uuidgen
10c35319-bd71-4447-aa1a-88207ec42fbf
[root@netdev vm]# vim /etc/libvirt/qemu/vm001.xml

删除虚机

virsh undefine vm

删除虚机并删除存储

virsh undefine vm --storage /home/vm/vm.qcow2
virsh undefine vm --remove-all-storage

dump xml

[root@netdev vm]# virsh dumpxml ubuntu

使用root登录vnc,然后启用virt-manager

virt-manager

image

然后创建虚机过程就不多讲了,添加PCIe Device将Mellanox的VF网卡加入即可.

image

安装Ubuntu虚机

安装ubuntu 20.04.2,然后安装的包如下,基本的编译环境,外加了我比较喜欢用terminator和tmux

sudo apt update
sudo apt upgradesudo apt install openssh-server terminator tmux build-essential

然后修改grub,打开iommu

 sudo vi /etc/default/grub//原来
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" 
//修改后
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash iommu=pt intel_iommu=on" 

最后更新grub,然后重启

sudo grub-mkconfig -o /boot/grub/grub.cfg
sudo reboot

MLX5安装

tar vzxf MLNX_OFED_LINUX-5.3-1.0.0.1-ubuntu20.04-x86_64.tgz
cd MLNX_OFED_LINUX-5.3-1.0.0.1-ubuntu20.04-x86_64/
sudo ./mlnxofedinstall --upstream-libs  --dpdk --add-kernel-support sudo /etc/init.d/openibd restart

编译dpdk

下载dpdk并解压

wget http://fast.dpdk.org/rel/dpdk-21.05.tar.xz
tar xf dpdk-21.05.tar.xz
cd dpdk-21.05

安装meson和pyelftools

sudo apt install  meson
sudo apt install python3-pyelftools

编译和安装

meson -Dexamples=all buildcd build
ninja
sudo ninja install
sudo ldconfig

在VM中测试前文所述发包程序, 注意到这个错误提示,性能不好,只有9Mpps,主要是NUMA的问题,需要配置CPU亲和性, 另外注意需要完全的修改源代码中的源目的MAC,否则在VF下基本无法转发.

EAL:   Invalid NUMA socket, default to 0zartbot@zartbot-KVM:~/test$ sudo ./build/helloworld
EAL: Detected 4 lcore(s)
EAL: Detected 1 NUMA nodes
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: No available 1048576 kB hugepages reported
EAL: VFIO support initialized
EAL:   Invalid NUMA socket, default to 0
EAL: Probe PCI driver: net_virtio (1af4:1041) device: 0000:01:00.0 (socket 0)
eth_virtio_pci_init(): Failed to init PCI deviceEAL: Requested device 0000:01:00.0 cannot be used
EAL:   Invalid NUMA socket, default to 0
EAL: Probe PCI driver: mlx5_pci (15b3:101a) device: 0000:06:00.0 (socket 0)
EAL:   Invalid NUMA socket, default to 0
EAL: Probe PCI driver: mlx5_pci (15b3:101a) device: 0000:07:00.0 (socket 0)
TELEMETRY: No legacy callbacks, legacy socket not created*****************************************
number of available port: 2initializing port 0...
port[0] support RX cheksum offload.
port[0] support TX mbuf fast free offload.
port[0] support TX IPv4 checksum offload.
port[0] support TX UDP checksum offload.
port[0] support TX TCP checksum offload.
Port[0] MAC: 7a:99:ed:5f:e3:a6initializing port 1...
port[1] support RX cheksum offload.
port[1] support TX mbuf fast free offload.
port[1] support TX IPv4 checksum offload.
port[1] support TX UDP checksum offload.
port[1] support TX TCP checksum offload.
Port[1] MAC: 5a:d8:51:db:17:2d
PPS: 2081708
PPS: 23912180
PPS: 18424908
PPS: 8359624
PPS: 9097548
PPS: 18615392
PPS: 8275396
PPS: 8288376

检查Numa

[zartbot@netdev ~]$  sudo numactl --hardware
available: 2 nodes (0-1)
node 0 cpus: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
node 0 size: 176933 MB
node 0 free: 174714 MB
node 1 cpus: 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
node 1 size: 182932 MB
node 1 free: 152286 MB
node distances:
node   0   10:  10  211:  21  10

检查VCPU分配

[zartbot@netdev ~]$ sudo virsh vcpuinfo vm001
VCPU:           0
CPU:            75
State:          running
CPU time:       806.6s
CPU Affinity:   yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyVCPU:           1
CPU:            41
State:          running
CPU time:       792.8s
CPU Affinity:   yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyVCPU:           2
CPU:            39
State:          running
CPU time:       689.6s
CPU Affinity:   yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyVCPU:           3
CPU:            77
State:          running
CPU time:       685.5s
CPU Affinity:   yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy

以下关于CPU和内存的参数设定建议来自于

https://libvirt.org/formatdomain.html 
https://libvirt.org/kbase/kvm-realtime.html

注意修改

virsh edit vm001

vm001a6125142-bc3b-4453-a010-2c03077e7e09838860883886088hvm

然后性能就正常了

zartbot@zartbot-KVM:~/test$ sudo ./build/helloworld
EAL: Detected 8 lcore(s)
EAL: Detected 1 NUMA nodes
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: No available 1048576 kB hugepages reported
EAL: VFIO support initialized
EAL:   Invalid NUMA socket, default to 0
EAL: Probe PCI driver: net_virtio (1af4:1041) device: 0000:01:00.0 (socket 0)
eth_virtio_pci_init(): Failed to init PCI deviceEAL: Requested device 0000:01:00.0 cannot be used
EAL:   Invalid NUMA socket, default to 0
EAL: Probe PCI driver: mlx5_pci (15b3:101a) device: 0000:06:00.0 (socket 0)
EAL:   Invalid NUMA socket, default to 0
EAL: Probe PCI driver: mlx5_pci (15b3:101a) device: 0000:07:00.0 (socket 0)
TELEMETRY: No legacy callbacks, legacy socket not created*****************************************
number of available port: 2initializing port 0...
port[0] support RX cheksum offload.
port[0] support TX mbuf fast free offload.
port[0] support TX IPv4 checksum offload.
port[0] support TX UDP checksum offload.
port[0] support TX TCP checksum offload.
Port[0] MAC: 7a:99:ed:5f:e3:a6initializing port 1...
port[1] support RX cheksum offload.
port[1] support TX mbuf fast free offload.
port[1] support TX IPv4 checksum offload.
port[1] support TX UDP checksum offload.
port[1] support TX TCP checksum offload.
Port[1] MAC: 5a:d8:51:db:17:2d
PPS: 30
PPS: 29593410
PPS: 29587011
PPS: 29777849
PPS: 29716992
PPS: 29693889
PPS: 29798295

(免费订阅,永久学习)学习地址: Dpdk/网络协议栈/vpp/OvS/DDos/NFV/虚拟化/高性能专家-学习视频教程-腾讯课堂

更多DPDK相关学习资料有需要的可以自行报名学习,免费订阅,永久学习,或点击这里加qun免费
领取,关注我持续更新哦! !  

原文链接:https://www.modb.pro/db/193483

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...