商务服务
基于KVM的SRIOV直通配置及性能测试手机windows虚拟机「基于KVM的SRIOV直通配置及性能测试」
2025-02-17 16:25

介绍、VF直通配置,以及包转发率性能测试

▪ 1. 介绍 ▪ 2. 环境说明 ▪ 3. 开启 ▪ 4. 生成VF ▪ 5. VF直通 ▪ 6. 开启irqbalance ▪ 7. VM迁移 ▪ 8. 带宽限速 ▪ 9. 安全 ▪ 10. 其他使用限制 ▪ 11. 性能测试 ▪ 12. windows虚拟机使用VF ▪ 13. 运维命令 ▪ 14. 宿主屏蔽VF驱动 ▪ 附. 包转发率测试方法 ▪ 附. 参考文档

传统方式的瓶颈:qemu的网卡,传统方式是使用tap网卡,桥接到宿主的bridge上,但性能很差,尤其是包转发率很低,难以满足对性能要求比较高的场景。性能差的主要原因是路径太长,经过的内核设备太多,根本原因在于linux/unix内核本身就不是为高性能而设计的,linux/unix更适合做控制平面,而不是转发平面。 ▷ 解决思路:减少中间路径,最简单有效的方法就是bypass内核。的作用就是bypass宿主内核。 ▷ PF和VF:每个物理网卡(比如p1p1)就是一个PF,在开启SRIOV后,每个PF可以生成固定数量的VF,每个VF都可以在宿主上作为一张网卡直接使用,或者直通到QEMU虚拟机里作为虚拟机里的网卡使用,这就实现了bypass宿主内核。

先给出性能测试的结论,SRIOV VF直通相比传统tap+bridge方案,性能提升:

▷ 发包转发率提高: 677% ▷ 收包转发率提高: 171%

机型:Dell PowerEdge R620 网卡:Intel X520(82599ES) 宿主OS:CentOS 7 VM OS:CentOS 7

1️⃣ 在BIOS里开启SRIOV,如图所示

注:即使BIOS里开启全局SRIOV,网卡也依然可以当作普通网卡使用

2️⃣ 需要在BIOS里开启VT-d

3️⃣ grub配置iommu

注意:若没有屏蔽宿主的VF驱动,则在生成vf后还必须等待一会时间才能在宿主上看到所有命名完成的网卡(否则会看到一堆ethX网卡),vf数量越多需要等待时间越长,63个vf,差不多需要10秒

如果qemu是通过libvirt管理的,有3种配置方法:

方法1(interface):在devices段落里加入

上面中address的地址,可以根据“lshw -c network -businfo”来配置,比如

方法2(hostdev):在devices段落里加入

上面中address的地址,也是根据“lshw -c network -businfo”来配置

方法3(net-pool)

为每个PF网卡定义一个net-pool,即分别编辑一个xml文件。这里仅展示一个PF,编辑sriov-int.xml

加入到libvirt net-pool、激活、并设置开机启动

虽然配置了net-autostart,但并不管用,因为物理机启动时候,经常会在启动生成vf(假设在rc.local里生成vf)之前就启动libvirt,而这个net-pool(sriov-int)本应该在vf生成后才能启动,因此建议在rc.local里增加如下内容来确保启动

然后,在vm的xml里增加

3种方法如何选择

▷ 方法1:功能多,可以配置mac和vlan ▷ 方法2:mac和vlan需要自己在宿主上敲ip命令设置 ▷ 方法3:有2个问题 ▪ 存在一个bug,当本宿主所有vm使用某个PF的VF总数超过VF上限后,不会报错,也能启动,但是可能会有异常,并且vm如果被destroy关机,那么对应的VF就会出问题,比如使用ip link set p1p1 vf 0 mac 00:00:00:00:00:00来做重置时候,会提示“RTNETlink answers: Cannot allocate memory”,而且难以修复,即使修复,也不知道有没有看不见的异常存在。 ▪ 没有办法知道某个vm使用的是哪个vf,因此如果要对vf设置限速或者开关spoofchk时候,只能先在宿主上通过“ip link show dev p1p1 | grep MAC地址”方式来获得vf号,然后才能设置限速等操作

综上所述:使用方法3最便捷,但是存在bug,因此需要做好逻辑来防止vm使用vf总数超过上限的情况。

x520是2队列,x710是4队列,需要在vm里启动中断平衡服务(irqbalance),否则只会有一个cpu来处理数据包。

另外,这与宿主上vf的query_rss无关。

直通网卡属于PCI设备,而libvirt和qemu却不支持带有非USB的PCI设备的vm做迁移,包括冷迁移和热迁移。因此热迁移无法实现。

冷迁移,有2种方案:

▷ detach掉vf网卡,然后使用libvirt做迁移,迁移过去后,再在新宿主上attach vf网卡 ▷ undefine vm,然后在新宿主上重新渲染并define vm

注意:不能在vm关机时候用libvirt的迁移功能,有时候会导致虚拟机消失掉,包括原宿主和新宿主

只能限制出站带宽,无法限制入站带宽

表示出站带宽限速100Mbps,不同网卡有差别:

▷ x520网卡最小限速11Mbps,最大限速10000Mbps,设为0表示不限速。若小于11或大于10000则会报错 ▷ x710网卡最小限速50Mbps,最大限速10000Mbps,设为0表示不限速。若小于50则自动设为50,若大于10000则会报错

注意:vm关机后vf的带宽限速不会复位

仅支持源mac过滤和网卡mac防篡改,不支持其他安全防护(防arp欺骗就无法实现)

源mac过滤

表示vm里发出的包,如果源mac不是指定mac,那么数据包不允许通过。注意:vm关机后vf的spoofchk不会复位

网卡mac防篡改

▷ 在宿主上修改mac,vm里的mac不会跟着改;在vm里修改mac,在宿主上可以看到变化 ▷ 如果在vm关机状态下改了mac地址,那么当vm开机后会改为vm的mac,当vm又关机后,又回改为原先改的mac ▷ 只有在宿主上看到的当前vf的mac为全0,才能在vm里修改mac地址,即使vf的spoofchk为off。但有一种例外,若使用上面方法2来配置xml,虽然宿主上看到的vf的mac不为0,但vm里可以修改 ▷ 当在宿主上设置了mac后,虚拟机里的mac就无法篡改了 ▪ 方法1(interface)来配置xml,估计vm启动时候就自动帮忙在宿主上设置了mac,所以就直接实现了防篡改功能 ▪ 方法2(hostdev)来配置xml,需要在宿主上手动再设置一次mac地址才能实现防篡改

在宿主上手动修改mac方法(vm关机和开机情况下都可以改):

建议:

▷ 在vm启动前对vf做一次重置 ▷ 在vm undefine后对vf做一次重置

▷ 直通到vm里的vf网卡里无法桥接到vm里的linux bridge,这也导致ebtables无法使用,iptables可以使用 ▷ 直通到vm里的vf网卡可以加入ovs桥接 ▷ 一个vm最多只能支持32个vf,超过数量会报错

测试方法:

▷ 多台vm同时发包,一台vm收包,分别观察发包性能和收包性能 ▷ 发包vm在同一台宿主上,收包vm在另一台宿主上 ▷ 测试工具:modprobe pktgen ▷ 测试包大小: udp包,size为64 bytes

配置:

▷ vm配置均为4核8G ▷ 物理网卡均为x520(vf队列默认为2) ▷ 宿主和vm均开启irqbalance、均关闭numad ▷ 不配置cpu绑定、不配置numa绑定 ▷ 开启大页

测试结果:

测试结论:

使用SR-IOV+VF直通方式可以明显提升包转发率,1对1的测试结果看到kernel态发包可以达到3.5Mpps,收包可以达到1.9Mpps

▷ 发包比vxlan提高: 1196%,比vlan提高: 677%。此结果参考1对1(1个发包vm,1个收包vm) ▷ 收包比vxlan提高: 363%,比vlan提高: 171%。此结果参考3对1(3个发包vm,1个收包vm)

说明:

▷ kernel态单核数据包(64B)处理能力为2Mpps ▷ 2Mpps是因为kernel态瓶颈是2Mpps,如果通过dpdk走用户态,则可以大于2M,原因:收包端要将数据包中断平衡到不同的cpu上,方法:可以通过多队列方式,把每个队列分配到单独cpu上(irqbalance会自动均衡),然后source ip不一样,就会对应到不同队列,也就是不同的中断上。即1个VF,2个队列,VM有至少2核,那么当符合负载均衡条件(mac、ip不同),则理论上最大可以达到4Mpps

更多测试结果:

以下测试使用的packet大小为64B

▷ kernel态,3层转发性能:发包器使用不同的source ip

▪ BCM57800:2Mpps ▪ Intel X520:10Mpps ▪ Intel X710:12Mpps

▷ kernel态,2层转发性能:发包器使用不同的source mac

▪ BCM57800:2Mpps ▪ Intel X520:7.3Mpps ▪ Intel X710:7.8Mpps

▷ kernel态下vxlan封装能力

▪ vxlan内层使用不同的source ip发包 ▪ 收包在:1.1-1.2Mpps

▷ dpdk用户态,2层转发性能:发包器使用不同的source ip

▪ BCM57800:不支持 ▪ Intel X520:14.8Mpps ▪ Intel X710:14.8Mpps

▷ SR-IOV模式

▪ X520总量11.2Mpps,每vm为11.2Mpps/vm总数(即VF数)

总结:

▷ kernel态下的中断平衡的依据因素:2层依据source mac,3层依据source ip ▷ kernel态下使用传统中断模式的单核转发能力极限2Mpps

注意:

▷ kernel态下,利用多队列RSS中断平衡提升吞吐率,会导致cpu非常高 ▷ 用户态下即使source mac或source ip固定,吞吐率基本接近限速14.8Mpps ▷ vxlan不能利用多核来提升吞吐,主要原因为外层source ip不够多

到网卡官网下载对应驱动并安装,经测试,win2012默认就有82599(x520)驱动,但版本旧

表示当物理机启动时候,默认不加载ixgbevf驱动,但是如果手动modprobe ixgbevf,则也会加载驱动。

如果当前已经加载了ixgbevf,想卸载,则需要如下步骤

modprobe pktgen:发包通过pktgen来发,收包通过sar -n DEV来看,发的是udp包

▷ 将脚本开头的eth1改为发包对应的网卡 ▷ 将脚本开头的192.168.1.2改为目标ip ▷ 将脚本开头的52:54:00:43:99:65改为目标mac

    以上就是本篇文章【基于KVM的SRIOV直通配置及性能测试手机windows虚拟机「基于KVM的SRIOV直通配置及性能测试」】的全部内容了,欢迎阅览 ! 文章地址:https://sicmodule.kub2b.com/news/16559.html
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 企库往资讯移动站 https://sicmodule.kub2b.com/mobile/ , 查看更多   
最新文章
Android折腾记——Linux on Android在Android手机上跑Linux教程linux手机「Android折腾记——Linux on Android在Android手机上跑Linux
手头有淘汰的Android手机,想来将这个手机做服务器使用,收集资料发现了一个Linux on Android的项目,可以直接将常见的Linux发行
麦芒30体验:物美价廉的千元AI手机,为用户带来全新智能体验麦芒五手机壳「麦芒30体验:物美价廉的千元AI手机,为用户带来全新智能体验」
现如今,智能手机市场被高端旗舰机型占据了大部分关注度,千元级别的手机似乎不再是热门话题。然而,对于大多数消费者来说,千元
本田飞度车载蓝牙怎么连接手机蓝牙与车载蓝牙如何配对「本田飞度车载蓝牙怎么连接」
要将蓝牙与车载蓝牙连接,请按照以下步骤操作:1. 确保您的手机和车载蓝牙设备都已开启并处于搜索模式。在手机上,进入设置菜单
【涨知识】手机后置、前置和镜子里的你,哪个最真实?手机镜子「【涨知识】手机后置、前置和镜子里的你,哪个最真实?」
一般来说,我们对自己外貌的认知有两个途径:镜子和相机。可是我们有时会觉得,镜子和前置摄像头照片、后置摄像头照片,拍出的样
折叠屏一摔就坏?华为 Mate X3 昆仑玻璃摔机实测手机框「折叠屏一摔就坏?华为 Mate X3 昆仑玻璃摔机实测」
我想,屏幕前的各位应该不会有没摔过的吧。手机落地无非就两种状态:「磕了但没坏」,还有「磕了碎了坏了」,前面的感谢菩萨一笑
除了UAG你还可以选择SUPCASE手机壳+钢化膜手机壳英文「除了UAG你还可以选择SUPCASE手机壳+钢化膜」
​​在手机壳中“战斗机”之称的UAG质量好对手机的保护作用出色,除了UAG我们还可以选择什么?今天给大家介绍一款也是成立于美国
单机斗地主闯关版手机斗地主单机版「单机斗地主闯关版」
单机斗地主闯关版上线,这里提供超多金币礼包,全部解锁体验,单机挑战,随时进入挑战斗地主,练习你的技术,还有语音播报功能,
原创各大品牌新春特别款,牛气冲天花样百出!手机壳好评「原创各大品牌新春特别款,牛气冲天花样百出!」
铱星导读来源 | 铱星云商新媒体中心 01✦ LOUIS VUITTON 牛年限定款“牛劈叉”,被称设计“牛叉” 为了迎接生肖牛年,Louis Vuit
Counterpoint Research:今年前 6 周,苹果 iPhone 手机在华销量同比下降 24%苹果手机市场「Counterpoint Research:今年前 6 周,苹果 iPhone
3 月 5 日消息,据彭博社、市场调研机构 Counterpoint Research 消息,今年前六周,。市场份额方面,数据显示。但两家公司的销售
荣耀90Pro支持无线充电吗?现在值得入手吗?支持无线充电的手机「荣耀90Pro支持无线充电吗?现在值得入手吗?」
荣耀90系列的两款手机都是不支持无线充电的,其中也包括荣耀90Pro,虽然这一款手机是属于旗舰级别的产品,但是和Magic数字里的高