kunpengaccel
加速引擎在KVM虚拟机中的使用
更新时间:2020/12/12 GMT+08:00
支持在KVM虚拟机使用加速引擎,加速器设备遵循PCIe规范,在操作系统内呈现为PCIe设备,并支持SR-IOV能力。每个加速器提供了1024个队列,单个PF默认使用256个队列,其余768个队列预留给VF使用。VF队列数量=(1024-PF队列数量)/ VF个数,余数队列会加到最后一个VF上。
推荐一个PF虚拟化出8个VF数目。
环境要求
- HostOS上已经建立虚拟机。
- HostOS上已经安装加速器内核驱动,虚拟机上已经安装加速引擎软件包,安装方法请参考安装加速引擎软件。
在HostOS上进行虚拟化配置
- 执行ls -al /sys/class/uacce查询HostOS环境中安装的加速器和对应的bdf号。
- 虚拟化加速器VF(以hisi_sec设备为例,各虚拟出3个VF,对应hisi_sec - 8 ~ hisi_sec - 13)。
1 2
echo 3 > /sys/devices/pci0000:74/0000:74:01.0/0000:76:00.0/sriov_numvfs echo 3 > /sys/devices/pci0000:b4/0000:b4:01.0/0000:b6:00.0/sriov_numvfs
在虚拟机上配置加速器
- 执行virsh edit vm1命令,编辑虚拟机vm1的配置文件。
- 在配置文件中添加vcpu配置(以配置4个core为例)。
1 2 3 4 5 6 7
<cputune> <vcpupin vcpu='0' cpuset='4'/> <vcpupin vcpu='1' cpuset='5'/> <vcpupin vcpu='2' cpuset='6'/> <vcpupin vcpu='3' cpuset='7'/> <emulatorpin cpuset='4-7'/> </cputune>
经过上述的配置后,虚拟机进程运行会固在指定的主机的物理CPU上。
- 虚拟机配置VF。
1 2 3 4 5
<hostdev mode='subsystem' type='pci' managed='yes'> <source> <address bus='0x76' slot='0x00' function='0x1'/> </source> </hostdev>
经过上述的配置后,虚拟机挂载了加速器虚拟出来的一个VF。
- hisi_sec设备SBDF号以0000:7x:xx.x,其对应CPU0上设备;以0000:bx:xx.x为开头,对应CPU1上设备。
- 为保证性能稳定,推荐虚拟机上核选取对应CPU上的core,同时VF也选择对应加速器上虚拟出来的VF。
- HostOS对单个虚拟机上VF挂载个数存在上限,默认为11个。
- 执行virsh start vm1启动虚拟机。
如果启动虚拟机失败,并提示上述错误,则操作以下命令,对挂载的VF进行解绑操作,然后重新启动虚拟机。
1 2 3
echo 0000:76:00.1 > /sys/bus/pci/drivers/hisi_sec/unbind echo vfio-pci > /sys/devices/pci0000:74/0000:74:01.0/0000:76:00.1/driver_override echo 0000:76:00.1 > /sys/bus/pci/drivers_probe
- 登陆虚拟机查询设备。
1 2
linux-4myg:~ # ls /sys/class/uacce/ hisi_sec-0
说明挂载的VF已经在虚拟机上读取成功。
父主题: 加速引擎的应用
