Red Hat Training

A Red Hat training course is available for RHEL 8

Capítulo 12. Gestión de dispositivos NVIDIA vGPU

La función vGPU permite dividir un dispositivo de GPU NVIDIA físico en varios dispositivos virtuales, denominados mediated devices. Estos dispositivos mediados pueden asignarse entonces a múltiples máquinas virtuales (VM) como GPUs virtuales. Como resultado, estas VMs pueden compartir el rendimiento de una única GPU física.

Importante

La asignación de una GPU física a las máquinas virtuales, con o sin el uso de dispositivos mediados, hace que el host no pueda utilizar la GPU.

12.1. Configuración de dispositivos NVIDIA vGPU

Para configurar la función NVIDIA vGPU, debe descargar los controladores NVIDIA vGPU para su dispositivo GPU, crear dispositivos mediados y asignarlos a las máquinas virtuales previstas. Para obtener instrucciones detalladas, consulte a continuación.

Requisitos previos

  • El paquete mdevctl está instalado.

    # yum install mdevctl
  • Su GPU soporta dispositivos mediados por vGPU. Para obtener una lista actualizada de las GPUs NVIDIA que admiten la creación de vGPUs, consulta la documentación del software de la GPU NVIDIA.

    • Si no sabe qué GPU está utilizando su host, instale el paquete lshw y utilice el comando lshw -C display. El siguiente ejemplo muestra que el sistema utiliza una GPU NVIDIA Tesla P4, compatible con vGPU.

      # lshw -C display
      
      *-display
             description: 3D controller
             product: GP104GL [Tesla P4]
             vendor: NVIDIA Corporation
             physical id: 0
             bus info: pci@0000:01:00.0
             version: a1
             width: 64 bits
             clock: 33MHz
             capabilities: pm msi pciexpress cap_list
             configuration: driver=vfio-pci latency=0
             resources: irq:16 memory:f6000000-f6ffffff memory:e0000000-efffffff memory:f0000000-f1ffffff

Procedimiento

  1. Descargue los controladores NVIDIA vGPU e instálelos en su sistema. Para obtener instrucciones, consulta la documentación de NVIDIA.
  2. Si el instalador del software de NVIDIA no creó el archivo /etc/modprobe.d/nvidia-installer-disable-nouveau.conf, cree un archivo conf con cualquier nombre en /etc/modprobe.d/, y añada las siguientes líneas en el archivo:

    blacklist nouveau
    options nouveau modeset=0
  3. Regenerar el ramdisk inicial para el kernel actual, luego reiniciar.

    # dracut --force
    # reboot
  4. Compruebe que el kernel ha cargado el módulo nvidia_vgpu_vfio y que el servicio nvidia-vgpu-mgr.service está funcionando.

    # 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. Generar un UUID de dispositivo.

    # uuidgen
    30820a6f-b1a5-4503-91ca-0c10ba58692a
  6. Cree un dispositivo mediado a partir del hardware de la GPU que ha detectado en los requisitos previos y asigne el UUID generado al dispositivo.

    El siguiente ejemplo muestra cómo crear un dispositivo mediado del tipo nvidia-63 vGPU en una tarjeta NVIDIA Tesla P4 que funciona en el bus PCI 0000:01:00.0:

    # mdevctl start -u 30820a6f-b1a5-4503-91ca-0c10ba58692a -p 0000:01:00.0 --type nvidia-63
    Nota

    Para conocer los valores del tipo vGPU para dispositivos GPU específicos, consulte la documentación del software de la GPU virtual.

  7. Haz que el dispositivo mediado sea persistente:

    # mdevctl define --auto --uuid 30820a6f-b1a5-4503-91ca-0c10ba58692a

  8. Adjunte el dispositivo mediado a una VM que desee compartir los recursos de la vGPU. Para ello, añada las siguientes líneas, junto con el UUID previamente genereado, a las secciones <devices/> en la configuración XML de la VM.

    <hostdev mode='subsystem' type='mdev' managed='no' model='vfio-pci'>
      <source>
        <address uuid='30820a6f-b1a5-4503-91ca-0c10ba58692a'/>
      </source>
    </hostdev>

    Tenga en cuenta que cada UUID sólo puede asignarse a una máquina virtual a la vez.

  9. Para que la funcionalidad completa de los dispositivos mediados por la vGPU esté disponible en las VMs asignadas, configure el licenciamiento de software invitado de NVIDIA vGPU en las VMs. Para obtener más información e instrucciones, consulte la Guía del usuario del servidor de licencias de software de la GPU virtual de NVIDIA.

Verificación

  • Enumera los dispositivos mediadores activos en tu host. Si la salida muestra un dispositivo definido con el UUID utilizado en el procedimiento, NVIDIA vGPU se ha configurado correctamente. Por ejemplo:

    # mdevctl list
    85006552-1b4b-45ef-ad62-de05be9171df 0000:01:00.0 nvidia-63
    30820a6f-b1a5-4503-91ca-0c10ba58692a 0000:01:00.0 nvidia-63 (defined)

Recursos adicionales

  • Para más información sobre el uso de la utilidad mdevctl, utilice man mdevctl.