GPU透传本质就是PCI设备透传,不算是什么新技术。之前按照网上方法都没啥问题,但是这次测试NVIDIA A100遇到坑了。
-
首先是禁用nouveau
把intel_iommu=on rdblacklist=nouveau写入/etc/default/grub的cmdline,然后grub2-mkconfig -o /etc/grub2.cfg。 最后reboot机器。但是重启后发现写入cmdline的参数没生效(cat /proc/cmdline),但是/etc/grub2.cfg里面确实修改成功。 后来发现该机器用的是grub2-efi.cfg,所以应该修改生成命令:grub2-mkconfig -o /etc/grub2-efi.cfg -
使用pci-stub或者vfio-pci接管显卡
默认是使用pci-stub。 需要在cmdline里面增加:pci-stub.ids=10de:20b5,10de:1533
但网上都推荐用vfio-pci,说是性能更好,安全性也更高
所以可以用: vfio-pci.ids=10de:20b5,10de:1533
然后新建gpu.conf文件并增加如下内容
[root@compute02 ~]# cat /etc/modules-load.d/gpu.conf
vfio_pci
vfio
vfio_iommu_type1
pci_stub
网上说还要增加gpu-vfio.conf文件,并且内容添加
options vfio-pci ids=10de:1e07,10de:10f7,10de:1ad6,10de:1ad7
实践证明只要cmdline里面写了vfio-pci.ids就可以了,没必要多此一举。
- openstack配置文件修改
官方文档和网上其他资料,都显示配置是
alias: { “vendor_id”:“10de”, “product_id”:“1df6”, “device_type”:“type-PCI”, “name”:“tesla-v100” }
其中device_type都是"type-PCI"
但是这次测试A100,发现配置必须改成"type-PF",否则创建虚拟机会报错:Insufficent PCI resource
所以完整配置如下:
alias = {"name":"gpu","vendor_id":"10de","device_type":"type-PF","product_id":"20b5"}