[OpenStack] GPU透传

GPU透传本质就是PCI设备透传,不算是什么新技术。之前按照网上方法都没啥问题,但是这次测试NVIDIA A100遇到坑了。

  1. 首先是禁用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

  2. 使用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就可以了,没必要多此一举。

  1. 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"}

你可能感兴趣的:(openstack,gpu算力)