Com o driver Game Ready mais recente, a NVIDIA habilitou o suporte beta GPU Passthrough para máquinas virtuais Windows em GPU GeForce. Antes do driver 465.89, apenas as placas Quadro NVIDIA suportavam passagem de GPU. Para usuários do Linux, essa tecnologia permitirá jogar jogos somente do Windows em sua VM; ou, se você for um desenvolvedor, poderá testar com mais facilidade o código do Windows e do Linux em uma única máquina, acelerando o desenvolvimento.
Com o driver Game Ready mais recente, a NVIDIA habilitou o suporte beta GPU Passthrough para máquinas virtuais Windows em GPU GeForce. Antes do driver 465.89, apenas as placas Quadro NVIDIA suportavam passagem de GPU. Para usuários do Linux, essa tecnologia permitirá jogar jogos somente do Windows em sua VM; ou, se você for um desenvolvedor, poderá testar com mais facilidade o código do Windows e do Linux em uma única máquina, acelerando o desenvolvimento.
A passagem de GPU é usada há muito tempo e havia maneiras de ativá-la nas placas de vídeo GeForce; no entanto, nunca foi oficialmente suportado. Tecnicamente falando, a tecnologia sempre esteve disponível no chip de silício da GeForce, mas não estava habilitada nos drivers, causando o popular “erro 43” nas máquinas virtuais Windows. O uso de um hack de software tem sido possível por um longo tempo para habilitar a passagem de GPU nas placas GeForce do consumidor e nos recursos de vGPU. Mais sobre vGPU, neste artigo.
Driver NVIDIA pronto para jogos 465.89
Em 30 de março deste ano, a NVIDIA lançou um novo driver Game Ready, 465.89. Este driver oferece suporte a novos videogames e oferece uma correção para problemas abertos apresentados em muitos outros jogos e aplicativos. No entanto, algo particularmente emocionante sobre este novo lançamento é encontrado em Gaming Technology. Aqui, três recursos de importação foram anunciados: BAR redimensionável da série GeForce RTX 30, suporte para OpenCL 3.0 e suporte beta para virtualização em GPUs GeForce.
BAR redimensionável
A BAR redimensionável permite que a CPU acesse toda a memória de um dispositivo PCIe de uma só vez, em vez da limitação anterior de 256 MB por ciclo. Smart Access Memory, SAM (termo da AMD para a tecnologia) foi anunciado no ano passado pela empresa e já foi implementado.
OpenCL 3.0
Adicionado suporte para OpenCL 3.0, a última versão principal do OpenCL mantendo compatibilidade com versões anteriores do OpenCL 1.2. NVIDIA OpenCL 3.0 continua a oferecer suporte à funcionalidade OpenCL 1.2 existente e Khronos e extensões de fornecedores que já são compatíveis com os drivers NVIDIA OpenCL 1.2.
Suporte beta para virtualização em GPUs GeForce.
Além disso, começando com este driver, a NVIDIA habilitou a passagem de GPU (não vGPU, também conhecida como SR-IOV para compartilhamento de GPU) em todas as placas gráficas GeForce baseadas na arquitetura Kepler e mais recentes para máquinas virtuais Windows. Esta é a tecnologia que estamos focando neste artigo. Embora a BAR redimensionável fosse um dos recursos mais esperados para a nova geração RTX e para os jogadores, a virtualização nas GPUs GeForce era a adição mais esperada para usuários de “HomeLabers” e Linux.
Suporte beta da máquina virtual do Windows para GeForce
Se você for principalmente um usuário do Linux, agora pode habilitar a passagem da GPU GeForce em uma máquina virtual (VM) do Windows. A passagem de GPU da NVIDIA foi reservada apenas para GPUs de nível empresarial ou de estação de trabalho. A empresa não permitia que os clientes da GeForce usassem essa tecnologia em uma VM do Windows em execução em seus computadores de consumo. No entanto, muitos clientes estavam realmente usando placas GeForce como GPUs de estação de trabalho.
Nas placas de consumo, o silício nunca foi o problema com a passagem da GPU; foi o software (driver) que bloqueou os usuários. Anteriormente, para usar a passagem de GPU, os usuários precisavam gastar uma quantia substancial de dinheiro em uma placa NVIDIA Tesla ou Quadro. O suporte beta de passagem de GPU para GeForce é uma vitória significativa para aqueles que desejam executar jogos do Windows em uma máquina virtual, mantendo seu host Linux (físico) e usando uma placa de vídeo GeForce.
O principal alvo dessa tecnologia são os usuários do Linux que desejam executar aplicativos multitarefa que exigem GPU. Existem alguns casos de uso do GeForce em que essa funcionalidade é benéfica, como:
- Clientes da GeForce que desejam executar um host Linux e poder iniciar uma máquina virtual (VM) do Windows para jogar
- Desenvolvedores de jogos que desejam testar o código no Windows e no Linux em uma máquina
A virtualização GeForce (beta) é compatível com drivers R465 ou superiores. Ele é ativado em todas as GPUs GeForce/TITAN suportadas por este driver (Kepler e posterior para desktop; Maxwell e posterior para laptops) no Windows. O Windows 10 é o único sistema operacional convidado com suporte para esta configuração de virtualização GeForce.
Com o GeForce GPU Passthrough, você não pode aproveitar a mesma GPU usada pelo sistema operacional host para virtualização. Uma GPU é necessária para o sistema operacional host Linux e uma GPU é necessária para a máquina virtual do Windows. Além disso, é importante lembrar que a passagem de GPU suporta apenas uma máquina virtual. vGPU (SR-IOV) ou um GPU Passthrough compartilhado para várias VMs não são compatíveis com GeForce. Suponha que você deseja permitir que várias VMs tenham acesso direto a uma única GPU ou deseja que a GPU atribua funções virtuais a várias máquinas virtuais. Nesse caso, você precisará usar uma estação de trabalho ou GPUs corporativas.
Erro de passagem da GPU: código 43
Se você já tentou executar uma VM Windows a partir de uma máquina Linux, antes do Game Ready Driver 465.89, os drivers no sistema operacional convidado retornariam o popular “Código 43”. Esse erro só apareceu no sistema operacional Windows (convidado) quando o driver GeForce detectou que o sistema operacional estava realmente sendo executado em uma VM. O suporte para virtualização em GPUs GeForce significa que você não precisa mais esconder sua VM; os drivers podem ser instalados e esse código de erro deve desaparecer.
Também não há problema em mencionar que a NVIDIA projetou deliberadamente esse código de erro para as placas de vídeo GeForce. Não se manifesta nas GPUs Tesla e Quadro, as placas de nível empresarial da empresa. A razão é que a NVIDIA certamente precisa separar os consumidores do segmento de nível empresarial. Alguns recursos corporativos não fazem muito sentido para as placas de vídeo do consumidor (desempenho inferior), mas habilitar alguns deles resultaria em uma perda significativa de vendas para as placas corporativas (caras) da NVIDIA.
Passagem de GPU x vGPU
Muitos usuários ainda estão confusos sobre o GPU Passthrough e os recursos técnicos oferecidos pela NVIDIA. É importante revisitar o que é a virtualização na GPU GeForce e o que não é. O termo GPU Passthrough pode parecer bastante auto-explicativo para muitos entusiastas de GPU; no entanto, geralmente é confundido com a GPU virtual NVIDIA (vGPU).
GPU Passthrough e vGPU são tecnologias usadas há muito tempo para soluções de virtualização corporativa, como VMware ESXi e Citrix XenServer. E para GPUs Tesla e Quadro. No VMware ESXi, GPU Passthrough é chamado de aceleração gráfica dedicada virtual (vDGA) e vGPU é chamada de aceleração gráfica virtual compartilhada (vSGA). A vGPU permite que as GPUs de nível empresarial sejam compartilhadas em vários desktops virtuais.
A VMware oferece uma terceira opção chamada Virtual Shared Passthrough Graphics Acceleration. Essa tecnologia permite que uma GPU seja compartilhada com vários usuários em vez de se concentrar em apenas um usuário. A diferença do vGPU (vSGA no VMware) é que o driver VMware 3D proprietário não é usado e a maioria dos recursos da placa gráfica é suportada. Lembre-se de que, com GPU Passthrough em placas GeForce, você não pode permitir que várias VMs tenham acesso direto a uma única GPU, nem a GPU pode atribuir funções virtuais a várias máquinas virtuais.
Virtual Desktop Infrastructure (VDI) é o melhor exemplo e cenário para usar essas tecnologias de GPU. As soluções de VDI aproveitam a virtualização criando rapidamente centenas de clones de VMs em execução em um único servidor ou cluster poderoso. Na maioria das vezes, a vGPU é a melhor escolha para usuários que precisam de todo o potencial da GPU durante breves períodos. No entanto, a vGPU pode criar gargalos, dependendo de quais aplicativos são usados e dos recursos que esses aplicativos precisam da GPU. A vGPU é geralmente usada para trabalhadores do conhecimento e, ocasionalmente, para usuários avançados. Atualmente, planejar soluções VDI sem reconhecer vGPU é considerado um ato negligente.
Nvidia vGPU hackeado para placas GeForce
Mesmo com o GPU Passthrough ativado nos drivers NVIDIA mais recentes, os usuários do GeForce ainda não têm (oficialmente) a capacidade de compartilhar GPUs em vários desktops virtuais. Para vGPU, você precisará usar GPUs corporativas NVIDIA Tesla, Quadro ou RTX. Portanto, você não pode enganar a NVIDIA neste caso, ou pode?
Alguns meses atrás, foi revelado um desbloqueio para a funcionalidade vGPU para GPUs de nível de consumidor. Esta ferramenta permite o uso de GPUs GeForce e Quadro com o software NVIDIA vGPU. NVIDIA vGPU normalmente suporta apenas algumas GPUs Tesla, mas como algumas GPUs GeForce e Quadro compartilham o mesmo chip físico que a Tesla, isso é apenas uma limitação de software para essas GPUs. Esta ferramenta visa remover essa limitação.
A ferramenta e as instruções estão disponíveis em https://github.com/DualCoder/vgpu_unlock.
Considerações Finais
A NVIDIA finalmente decidiu remover o bloqueio que eles tinham arbitrariamente nas placas GeForce. Antes do lançamento do driver 465.89 pela NVIDIA, quando o sistema operacional convidado detectava uma máquina virtual, o driver era desativado no Windows e no Linux. Com a virtualização habilitada, os clientes da GeForce em um PC host Linux agora podem habilitar a passagem da GPU GeForce em um sistema operacional convidado virtual do Windows.
Tecnicamente falando, o suporte para virtualização na GPU GeForce não é uma versão beta; mas mais como a NVIDIA apenas marcando uma caixa para desbloquear uma função que existe há muito tempo. No entanto, o GPU Passthrough ainda está limitado a uma única instância de GPU, o que significa que apenas uma máquina virtual terá acesso exclusivo à placa gráfica.
Quanto ao vGPU, infelizmente, a menos que você seja totalmente Enterprise, a NVIDIA ainda não oferece suporte ao compartilhamento de uma GPU com várias máquinas virtuais, da mesma forma que um fabricante de CPU faz. Se o usuário precisar de mais máquinas virtuais para acessar a mesma GPU, serão necessárias placas gráficas Tesla ou Quadro. Mas isso pode estar sujeito a alterações conforme a passagem da GPU. Atualmente, um hack de software está disponível para testar os recursos de vGPU, mas é claro que seu suporte não é oficial.
Envolva-se com a StorageReview
Newsletter | YouTube | Podcast iTunes/Spotify | Instagram | Twitter | Facebook | RSS feed