Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

16.7.2. NVIDIA vGPU 分配

NVIDIA vGPU 功能可以将物理 GPU 设备划分为多个虚拟设备(称为 介质设备 )。然后可将这些 mediated devices 分配给多个客户机,作为虚拟 GPU。因此,这些客户机共享单个物理 GPU 的性能。
重要
这个功能仅适用于有限的 NVIDIA GPU。有关这些设备的最新列表,请参阅 NVIDIA GPU 软件文档

16.7.2.1. NVIDIA vGPU 设置

要设置 vGPU 功能,您首先需要为 GPU 设备获取 NVIDIA vGPU 驱动程序,然后创建介质设备,并将其分配给预期的客户端机器:
  1. 获取 NVIDIA vGPU 驱动程序并在您的系统中安装它们。具体步骤请查看 NVIDIA 文档
  2. 如果 NVIDIA 软件安装程序没有创建 /etc/modprobe.d/nvidia-installer-disable-nouveau.conf 文件,请在 /etc/modprobe.d/ 目录中创建 .conf 文件(名称)。在文件中添加以下行:
    blacklist nouveau
    options nouveau modeset=0
    
    
  3. 为当前内核重新生成初始 ramdisk,然后重启:
    # dracut --force
    # reboot
    如果您需要使用带有介质设备支持的内核版本,请为所有安装的内核版本重新生成初始 ramdisk:
    # dracut --regenerate-all --force
    # reboot
  4. 检查 nvidia_vgpu_vfio 模块是否已由内核加载,且 nvidia-vgpu-mgr.service 服务是否正在运行。
    # lsmod | grep nvidia_vgpu_vfio
    nvidia_vgpu_vfio 45011 0
    nvidia 14333621 10 nvidia_vgpu_vfio
    mdev 20414 2 vfio_mdev,nvidia_vgpu_vfio
    vfio 32695 3 vfio_mdev,nvidia_vgpu_vfio,vfio_iommu_type1
    # systemctl status nvidia-vgpu-mgr.service
    nvidia-vgpu-mgr.service - NVIDIA vGPU Manager Daemon
       Loaded: loaded (/usr/lib/systemd/system/nvidia-vgpu-mgr.service; enabled; vendor preset: disabled)
       Active: active (running) since Fri 2018-03-16 10:17:36 CET; 5h 8min ago
     Main PID: 1553 (nvidia-vgpu-mgr)
     [...]
    
  5. 将设备 UUID 写入 /sys/class/mdev_bus/pci_dev/mdev_supported_types/type-id/create,其中 pci_dev 是主机 GPU 的 PCI 地址,type-id 是主机 GPU 类型的 ID。
    以下示例演示了如何在 NVIDIA Tesla P4 卡上创建 nvidia-63 vGPU 类型的介质设备:
    # uuidgen
    30820a6f-b1a5-4503-91ca-0c10ba58692a
    # echo "30820a6f-b1a5-4503-91ca-0c10ba58692a" > /sys/class/mdev_bus/0000:01:00.0/mdev_supported_types/nvidia-63/create
    有关特定设备的 type-id 值,请参阅 section 1.3.1。虚拟 GPU 类型Virtual GPU 软件文档中。请注意,只有 Q series NVIDIA vGPUs(如 GRID P4-2Q )作为 Linux 客户机上的介质设备 GPU 类型被支持。
  6. 在您要共享 vGPU 资源的 XML 配置中的 <devices/> 部分中添加以下行。使用上一步中 uuidgen 命令生成的 UUID 值。每个 UUID 每次只能分配给一个 guest。
    
    <hostdev mode='subsystem' type='mdev' managed='no' model='vfio-pci'>
      <source>
        <address uuid='30820a6f-b1a5-4503-91ca-0c10ba58692a'/>
      </source>
    </hostdev>
    
    
    重要
    要让 vGPU 介质设备在分配的客户机中正常工作,需要为客户机设置 NVIDIA vGPU 客户机软件许可。如需更多信息和说明,请参阅 NVIDIA 虚拟 GPU 软件文档