Red Hat Training
A Red Hat training course is available for RHEL 8
Capítulo 12. Gerenciando os dispositivos NVIDIA vGPU
O recurso vGPU torna possível dividir um dispositivo GPU NVIDIA físico em múltiplos dispositivos virtuais, referidos como mediated devices
. Estes dispositivos mediados podem então ser atribuídos a múltiplas máquinas virtuais (VMs) como GPUs virtuais. Como resultado, estas VMs podem compartilhar a performance de uma única GPU física.
A atribuição de uma GPU física a VMs, com ou sem o uso de dispositivos mediados, torna impossível para o host utilizar a GPU.
12.1. Configurando os dispositivos NVIDIA vGPU
Para configurar o recurso NVIDIA vGPU, você precisa baixar os drivers NVIDIA vGPU para seu dispositivo GPU, criar dispositivos mediados e atribuí-los às máquinas virtuais previstas. Para instruções detalhadas, veja abaixo.
Pré-requisitos
O pacote mdevctl está instalado.
# yum install mdevctl
Sua GPU suporta dispositivos mediados por vGPU. Para uma lista atualizada das GPUs NVIDIA que suportam a criação de vGPUs, consulte a Documentação de Software de GPU NVIDIA.
Se você não souber qual GPU seu host está usando, instale o pacote lshw e use o comando
lshw -C display
. O exemplo a seguir mostra que o sistema está usando uma GPU NVIDIA Tesla P4, compatível com a 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
Procedimento
- Faça o download dos drivers NVIDIA vGPU e instale-os em seu sistema. Para instruções, consulte a documentação da NVIDIA.
Se o instalador do software NVIDIA não criou o arquivo /etc/modprobe.d/nvidia-installer-disable-nouveau.conf, crie um arquivo
conf
com qualquer nome em /etc/modprobe.d/, e acrescente as seguintes linhas no arquivo:blacklist nouveau options nouveau modeset=0
Regenerar o ramdisco inicial para o kernel atual, depois reiniciar.
# dracut --force # reboot
Verifique se o kernel carregou o módulo
nvidia_vgpu_vfio
e se o serviçonvidia-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) [...]
Gerar um dispositivo UUID.
# uuidgen 30820a6f-b1a5-4503-91ca-0c10ba58692a
Crie um dispositivo mediado a partir do hardware da GPU que você detectou nos pré-requisitos, e atribua a UUID gerada ao dispositivo.
O exemplo a seguir mostra como criar um dispositivo mediado do tipo
nvidia-63
vGPU em uma placa NVIDIA Tesla P4 que roda no barramento PCI 0000:01:00.0:# mdevctl start -u 30820a6f-b1a5-4503-91ca-0c10ba58692a -p 0000:01:00.0 --type nvidia-63
NotaPara os valores do tipo vGPU para dispositivos específicos de GPU, consulte a documentação do software Virtual GPU.
Tornar o dispositivo mediado persistente:
# mdevctl define --auto --uuid 30820a6f-b1a5-4503-91ca-0c10ba58692a
Anexe o dispositivo mediado a uma VM que você deseja compartilhar os recursos do vGPU. Para isso, adicione as seguintes linhas, juntamente com a UUID previamente gerada, às seções <devices/> na configuração XML da VM.
<hostdev mode='subsystem' type='mdev' managed='no' model='vfio-pci'> <source> <address uuid='30820a6f-b1a5-4503-91ca-0c10ba58692a'/> </source> </hostdev>
Note que cada UUID só pode ser atribuída a uma VM de cada vez.
- Para que a funcionalidade completa dos dispositivos mediados pelo vGPU esteja disponível nas VMs designadas, configure o licenciamento do software convidado NVIDIA vGPU nas VMs. Para maiores informações e instruções, consulte o Guia do Usuário do Servidor de Licença do Software NVIDIA Virtual GPU.
Verificação
Liste os dispositivos mediados ativos em seu host. Se a saída exibir um dispositivo definido com o UUID usado no procedimento, o NVIDIA vGPU foi configurado corretamente. Por exemplo:
# 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 adicionais
-
Para mais informações sobre o uso do utilitário
mdevctl
, useman mdevctl
.