概述
1 SR-IOV概述
SR-IOV是Single Root I/O Virtualization的缩写,在虚拟机中,一切皆虚拟,比如网卡,虚拟机看起来好像有一个真实网卡,但是这个网卡是宿主机虚拟出来的硬件,没有真实的硬件;
由于宿主机需要进行数据处理,那么就产生了延时;
VT-D可以将物理的PCI-E设备直接分配给虚拟机,让虚拟机直接控制硬件,但是虚拟机会独占这个PCI-E设备,一台宿主机如果有多个虚拟机,那么PCI-E物理设备显然不够使用;
为了解决上述问题,intel提出SR-IOV,SR-IOV可以将一个物理网卡虚拟出多个轻量化的PCI-E物理设备,从而分配给虚拟机使用;
SR-IOV是虚拟化的一个重要功能。启用SR-IOV的这个功能,将大大减轻宿主机的CPU负荷,提高网络性能,降低网络延时等。
2 实现SR-IOV条件
2.1 硬件条件
1. CPU 支持 Intel VT-X 和 VT-D (或者 AMD 的 SVM 和 IOMMU)
2. CPU必须支持IOMMU(例如英特尔的 VT-d 或者AMD的 AMD-Vi,Power8 处理器默认支持IOMMU),并且在BIOS中已开启。
3. 支持PCI-SIG* Single Root I/O Virtualization and Sharing(SR-IOV),并且在BIOS中已开启。
2.2 软件条件
1. 需要QEMU/KVM支持
2. 需要安装以下软件包
$ yum -y install kvm libvirt virt-* bridge-utils qemu-img
kvm: 含有KVM内核模块,在默认linux内核中提供kvm管理程序
libvirts: 虚拟机管理工具
virt-*: 管理和控制虚拟机命令
bridge-utils: 设置网络网卡桥接
qemu-img: qemu组件
使用命令查看系统是否支持虚拟化
$ egrep -c '(vmx|svm)' /proc/cpuinfo
128
大于1表示已经开启,等于0表示没有开启,需要在BIOS中开启intel VT-D
查看KVM模块是否被加载
$ lsmod |grep kvm
kvm_amd 2177260 18
kvm 621392 1 kvm_amd
irqbypass 13503 12 kvm,vfio_pci
如果有信息,则代表加载成功
在grub文件中加入intel_iommu=on 或者 amd_iommu=on
检测是否生效
$ sudo virt-host-validate
3 配置SR-IOV
查看物理网卡是否支持SR-IOV
$ lspci | grep Eth
$ lspci -vvs 41:00:0
显示如下代码段,说明支持SR-IOV,并且可以看出支持多少VFs等详细信息
通过以下命令来enable SR-IOV功能
$ echo 2 > /sys/bus/pci/devices/0000:41:00.0/sriov_numvfs
0000:41:00.0 代表支持SR-IOV功能的PCI-E设备
2 代表要enable出VF的数量
从下图可以看到enable了2个VF之后,多出来了两个PCI-E设备
至此,SR-IOV配置成功
最后
以上就是淡定柜子为你收集整理的linux pcie SR-IOV配置1 SR-IOV概述2 实现SR-IOV条件3 配置SR-IOV的全部内容,希望文章能够帮你解决linux pcie SR-IOV配置1 SR-IOV概述2 实现SR-IOV条件3 配置SR-IOV所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复