Guia para anexar uma placa de vídeo física a uma máquina virtual no host Hyper-V

Guia para anexar uma placa de vídeo física a uma máquina virtual no host Hyper-V

Você pode precisar de uma placa de vídeo (GPU) em uma máquina virtual para tarefas como OpenGL, Direct3D e CUDA. Nesse caso, geralmente usamos uma placa de vídeo emulada, que não tem um desempenho tão bom quanto uma GP dedicada. Portanto, neste post, aprenderemos como anexar uma placa de vídeo física a uma VM em um host.

Como faço para passar minha GPU pelo Hyper-V?

Para conectar uma placa de vídeo física a uma VM em um host Hyper-V, usaremos o GPU Passthrough.

O GPU passthrough é um recurso avançado que permite atribuir uma GPU física a uma máquina virtual. Esse recurso é particularmente útil para aplicativos como jogos ou renderização 3D, onde gráficos de alto desempenho são necessários. Nessa configuração, a máquina virtual obtém acesso direto ao adaptador gráfico físico sem a sobrecarga da emulação, o que pode melhorar significativamente o desempenho gráfico. Por padrão, as máquinas virtuais no Hyper-V usam uma placa gráfica emulada, o que pode não ser suficiente para tarefas gráficas exigentes. Com o GPU passthrough, a máquina virtual pode aproveitar todo o poder da GPU física, permitindo que ela lide com cargas de trabalho gráficas mais intensivas de forma eficiente.

Quais são os requisitos de sistema para GPU Passthrough?

Antes de prosseguirmos e configurar o GPU Passthrough, vamos nos certificar de atender aos seguintes pré-requisitos.

Requisitos de hardware

  • Você precisa ter certeza de que seu processador suporta virtualização Intel-VT ou AMD-V.
  • Para PCI Passthrough, seu processador deve suportar uma Unidade de Gerenciamento de Memória de Entrada e Saída (IOMMU).
  • Sua GPU deve suportar tecnologias de virtualização de GPU, como NVIDIA GRID ou AMD MxGPU. Essas tecnologias são específicas para fornecedores individuais. As taxas de sucesso podem ser melhoradas utilizando hardware de classe de servidor. Dispositivos mais antigos que dependem de interrupções PCI (INTx) não são compatíveis.
  • Por fim, seu sistema deve oferecer suporte à virtualização de entrada/saída de raiz única.

Requisitos de software:

  • Sistema operacional: Windows Server 2016 (ou posterior) ou Windows 11/10.
  • Recursos: O Hyper-V deve estar habilitado.
  • Geração de VM: a máquina virtual deve ser de Geração 2.
  • Drivers: Todos os drivers da GPU devem ser atualizados para a versão mais recente.

Limitações do GPU Passthrough:

Se você quiser usar o GPU Passthrough, deverá evitar a seguinte configuração.

  • Sua máquina virtual não deve estar usando memória dinâmica.
  • O GPU Passthrough está disponível apenas nas edições mais recentes do Windows, como o Windows Server 2019 Datacenter.
  • Se o Subsistema Windows para Linux for implantado no host Hyper-V, poderá ocorrer um erro de VM com código 43.
  • Recursos de clustering, como alta disponibilidade e migração de VM ao vivo, não são suportados.
  • Não há suporte para salvar e restaurar com pontos de verificação de VM.

Depois de atender aos requisitos mencionados anteriormente, podemos aproveitar o GPU Passthrough.

Anexar uma placa de vídeo física a uma VM em um host Hyper-V

Para conectar uma placa de vídeo física a uma VM em um host Hyper-V usando GPU Passthrough, siga as etapas abaixo.

  1. Habilitar virtualização Intel-VT ou AMD-V
  2. Configure seu computador para GPU Passthrough
  3. Configurar GPU Passthrough para Windows 11/10
  4. Configurar GPU Passthrough para Windows Server

Vamos falar sobre eles em detalhes.

1] Habilitar virtualização Intel-VT ou AMD-V

habilitar ou desabilitar a virtualização de hardware

Conforme mencionado nos pré-requisitos, nosso primeiro passo deve ser habilitar a Virtualização de Hardware. Então, se você estiver usando uma CPU Intel, você deve habilitar a Intel-VT, e usuários AMD, devem habilitar a Virtualização AMD-V.

Para fazer isso, inicialize o BIOS, vá para Configuração > Tecnologia de Virtualização e defina como Ativado. Como essas etapas são exclusivas da HP, você pode acessar a postagem vinculada para ver como habilitar o recurso no seu computador.

2] Configure seu computador para GPU Passthrough

Em seguida, precisamos configurar o computador host para GPU Passthrough. Começamos habilitando a Virtualização de Hardware, como mencionado anteriormente. Em seguida, precisamos garantir que o IOMMU esteja habilitado e que os pontos de verificação automáticos estejam desabilitados.

Então, você pode verificar o guia vinculado sobre como habilitar a virtualização de hardware para habilitar o IOMMU , mas ele geralmente é habilitado por padrão. Podemos abrir o PowerShell e executar a seguinte consulta para verificar se ele está habilitado.

(Get-VMHost).IovSupport; (Get-VMHost).IovSupportReasons

Se disser Verdadeiro, o recurso está habilitado, você pode prosseguir para a próxima configuração, mas se disser Falso, você precisa habilitar esse recurso.

Agora, vá em frente e exclua todos os pontos de verificação da sua VM e use os seguintes comandos para desativá-la.

Get-VM Set-VM -Name NameOfVM -AutomaticStopAction TurnOff

Observação: substitua a variável NameOfVM pelo nome real da máquina virtual que você pode obter executando o comando anterior.

3] Configurar GPU Passthrough para Windows 11/10

anexar uma placa de vídeo física a uma VM em um host Hyper-V

Primeiro, vamos aprender como habilitar o GPU Passthrough em sistemas operacionais cliente Windows.

Você precisa executar o seguinte comando para verificar se sua placa de vídeo suporta GPU Passthrough.

Windows 11

Get-VMHostPartitionableGpu

Windows 10

Get-VMPartitionableGpu

Em seguida, precisamos copiar o driver gráfico do cliente host para a VM. Para simplificar o processo, recomendamos baixar o arquivo ZIP do github.com e extraí-lo em algum lugar.

Para executar este script, primeiro precisamos permitir a execução do script usando os dois comandos a seguir.

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope UsuárioAtual

Após executar o comando, você precisa executar o script usando o comando a seguir. Você pode executá-lo antes e/ou depois de adicionar sua VM ao GPU Passthrough

.\Update-VMGpuPartitionDriver.ps1 -VMName <VMNAME> -GPUName "AUTO"

Agora, execute o seguinte comando para adicionar sua VM ao GPU Passthrough.

Set-VM -VMName VMName -GuestControlledCacheTypes $true -LowMemoryMappedIoSpace 1Gb -HighMemoryMappedIoSpace 32Gb Add-VMGpuPartitionAdapter -VMName <VMNAME>

Para remover a partição da GPU, execute – Remove-VMGpuPartitionAdapter -VMName <VMNAME>.

4] Configurar GPU Passthrough para Windows Server

Se estiver usando o Windows Server, você precisará executar o seguinte comando no modo elevado do PowerShell para definir o cache e os limites para o espaço MIMO de 32 bits (3 GB para sistemas operacionais de 32 bits).

Set-VM -Name VMNAME -GuestControlledCacheTypes $True -LowMemoryMappedIoSpace 3Gb -HighMemoryMappedIoSpace 33280Mb

Esses limites definem a memória que permite o acesso da VM ao dispositivo. Use um script de Perfil de Máquina do learn.microsoft.com para definir limites MIMO precisos. Ajuste os valores se a VM mostrar escassez de recursos; 33280 MB são necessários para espaço MIMO maior que 32 bits.

Em seguida, precisamos verificar a localização do dispositivo PCI Express. Para fazer isso, execute as seguintes consultas.

Get-PnpDevice | Where-Object {$_.Present -eq $true} | Where-Object {$_.Class -eq "Display"}|select Name,InstanceId

E

Get-PnpDevice -Class Display | ForEach-Object { Write-Output "$($_.FriendlyName) has a device id of $($_.DeviceId) and is located at $($_ | Get-PnpDeviceProperty DEVPKEY_Device_LocationPaths | Select-Object -ExpandProperty Data | Where-Object { $_ -like "PCIROOT*"})"; }

Você precisa ver onde sua GPU está localizada, deve ser algo como PCIROOT(0)#PCI(0200) .

Por fim, siga os passos mencionados abaixo.

  • Abra o Gerenciador de Dispositivos, expanda Adaptadores de vídeo, clique com o botão direito do mouse nos drivers de vídeo e clique em Desativar dispositivo.
  • Execute o seguinte comando para desmontar o driver da GPU após alterar o endereço PCI.

Dismount-VmHostAssignableDevice -LocationPath "PCIROOT(0)#PCI(0200)"-Force

  • Depois de alterar o endereço PCI e o nome da VM, execute o seguinte comando para atribuir um dispositivo GPU à VM.

Add-VMAssignableDevice -VMName VMNAME -LocationPath "PCIROOT(0)#PCI(0200)"

  • Ligue a VM e verifique se há uma placa de vídeo física no Gerenciador de Dispositivos.
  • Instale os drivers da placa de vídeo do site da NVIDIA ou AMD.

Se você quiser retornar para a máquina host, desligue a VM e execute a seguinte consulta no dispositivo host.

Remove-VMAssignableDevice -VMName VMNAME -LocationPath $locationPath

Em seguida, execute o seguinte comando para conectar a placa de vídeo novamente ao host Hyper-V.

Mount-VMHostAssignableDevice -LocationPath $locationPath

É isso!

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *