找回密码
 立即注册
搜索
查看: 1373|回复: 2

[软件] 分享下自己折腾linux虚拟机SRIOV心得

[复制链接]
     
发表于 2019-5-22 23:12 | 显示全部楼层 |阅读模式
本帖最后由 塔奇克马 于 2019-5-22 23:13 编辑

有什么好处:
                简单来说降低硬件占用
                guest主机用测试网卡
                TIM图片20190522224322.jpg
                宿主配置泰安c204 E1220L 硬件支持sriov 不支持acs 通过acs_patch内核实现sriov vf直通

                对比的网卡

                sriov测试.png
                上 sriov vf 直通网卡
                中 virtio 半虚拟网卡
                下 E1000全虚拟网卡
                鉴于全虚拟网卡已经淘汰了,那么只要关注半虚拟网卡和直通网卡对比
                sy(内核占用)这部分被节省了下来 8%左右

                iperf -w 64k 参数下 940Mbits/sec(E1000全虚拟网卡只能跑到900Mbits/sec,cpu占用率更高)
                对于CPU越差越有用,CPU越好越没用.没有高网络需求也没用.

                另外不需要弄虚拟交换机了,只要一个网口分出来的vf设备都能进行网络交换.没有了半虚拟网卡桥接不能和宿主机通信的缺点.

                坏处是不能迁移,因为对应设备地址,不过很多人没这需求吧.也就无所谓了.
                mac每次重启变动至少我是这样的,那么只要设置IP就行了.



简单的一些定义:
                sriov:可以把某个设备分成多个(7-256)虚拟设备,硬件功能和真实设备类似,降低CPU占用

                acs:sriov的一个可选特性,具备这个特性,sriov 虚拟出的设备才能直通.如果你有双口网卡你想分别直通给guest主机也是需要这个特性的.
                      这里涉及到一个概念:所有分配一个IommuGroup内的设备只能直通给一个guest主机,没有acs时,所有在一个pcie口上的设备都被分配到一个group,所以很不灵活
               

硬件部分:

                对于linux只要具备vt-d就可以了,这大概只对linux有效也是linux的福利,目前所有主板都具备这个功能.主板和CPU硬件支持sriov以及acs并不是必要条件

                sriov 芯片组一般C2xx才可以,有人说华硕,华擎,微星有支持,但是我使用自己的MSI z270失败,必须要加强制参数才行.没有深度测试.
                acs   需要 xeon-d 或者e5.

                最低网卡82576 pciex4
                双网口可以虚拟出 7x2 个虚拟网卡.


软件部分:

                以debian(openmediavault)为例子:
                一般表现为拆分网卡时候出现错误.说明硬件不支持sriov
               
  1. write error: Cannot allocate memory
复制代码


                那么需要加上参数

               
  1. pci=assign-busses
  2. pci=realloc
复制代码
               如果硬件不支持acs则需要替换下内核,正常来说需要自己patch和编译,这里你可以用已有的内核比如:
                https://queuecumber.gitlab.io/linux-acs-override/
                直接命令安装.之后加上参数
               
  1. pcie_acs_override=downstream,multifunction
复制代码
               加入内核参数方法:
               
  1. nano /etc/default/grub
复制代码
               编辑,加上参数,参考范例,ctrl+x 保存退出
               
  1. GRUB_CMDLINE_LINUX_DEFAULT="quiet"
  2. GRUB_CMDLINE_LINUX="default_hugepagesz=2m hugepagesz=2m iommu=pt intel_iommu=on pcie_acs_override=downstream,multifunction"
复制代码
               更新内核
               
  1. update-grub
复制代码

                重启

                如何分配网卡
  1. find /sys -name sriov_numvfs
复制代码


                显示这样
  1. /sys/devices/pci0000:00/0000:00:01.1/0000:02:00.0/sriov_numvfs
  2. /sys/devices/pci0000:00/0000:00:01.1/0000:02:00.1/sriov_numvfs
  3. /sys/devices/pci0000:00/0000:00:06.0/0000:04:00.0/sriov_numvfs
复制代码
               参考这个命令给对应设备的地址.你应该能知道哪个是哪个了.

  1. lspci -vt
复制代码


                你只要
  1. echo 7 > /sys/devices/pci0000:00/0000:00:01.1/0000:02:00.1/sriov_numvfs
复制代码
               之后直通什么的随便你,这个命令可以加入到rc.local(我觉得能放最好全都放到rc.local中,而不是去改乱七八糟的conf).

附件 IommuGroup脚本,查看设备Group.

IommuGroupScan.sh (187 Bytes, 下载次数: 1)


回复

使用道具 举报

发表于 2019-5-23 00:12 来自手机 | 显示全部楼层
我用vfio在windows虚拟机直通到linux主机的显卡,那么多年都没有问题,用得挺好的。
回复

使用道具 举报

发表于 2019-5-23 08:22 | 显示全部楼层
谁能让牙膏的核显直通到hdmi就是造福人类的大佬
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2024-11-16 07:32 , Processed in 0.031960 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表