2014-07-09 20:41:04 +0000 2014-07-09 20:41:04 +0000
30
30
Advertisement

Utilizar a GPU NVidia da VirtualBox?

Advertisement

Como faço para que o convidado da VirtualBox utilize os gráficos NVidia?_

Configuração do anfitrião:

  • Windows 7 x64

  • NVidia Optimus

  • Em NVIDIA Painel de Controlo, seleccionei explicitamente Processador NVIDIA de alto desempenhopara:

& - Quando a VirtualBox está a funcionar, então o software NVidia não a lista como aplicação que utiliza a GPU NVidia. Por conseguinte, presumo que a VirtualBox não utiliza de facto a GPU Nvidia.

Convidado:

  • Windows 7 x64 (ou seja, o mesmo que host)

  • Adicionamentos de Convite instalados

  • Aceleração 3D activada nas definições do VirtualBox: Visualização / Vídeo / Aceleração 3D activada

  • O que Rinoceronte , um OpenGL capaz de relatórios de aplicação como adaptador de vídeo:

Advertisement

Respostas (2)

22
22
22
2019-01-18 20:23:51 +0000

Percebo que já passaram alguns anos mas queria responder desde que este post aparece bem alto quando se procura no Google a “virtualbox 3d multiple GPU”. No tempo que passou, as coisas tornaram-se muito mais simples e melhores.

As pessoas que tropeçarem neste tópico irão provavelmente aterrar aqui porque têm um portátil ou PC que tem dois GPU, o que é bastante comum hoje em dia - especialmente em portáteis de jogos. A GPU Intel onboard é utilizada para renderizar janelas e aplicações gerais, mas as aplicações que fazem uso da funcionalidade 3D da GPU deverão fazê-lo através da GPU Nvidia de maior desempenho.

Hoje, eu estava a construir uma VM Ubuntu no meu portátil para fazer algum desenvolvimento multiplataforma, e tudo estava bem, excepto a VM convidada, que era extremamente lenta, e não havia explicação para isso porque CPU, memória, disco estavam todos a mostrar baixa utilização.

Não demorou muito tempo a descobrir que era o desempenho de vídeo que estava a causar o problema. O lançamento de aplicações, maximizando/minimizando janelas - qualquer coisa que tomamos como garantido em 2019 mas que necessita de aceleração 3D para funcionar a qualquer velocidade razoável - estava a usar GPU 0.

Foi fácil determinar isto porque o Windows 10 tem agora a capacidade de ver a utilização da GPU usando o “gestor de tarefas”, depois o separador “performance”. E eu podia ver como movia janelas, maximizado, minimizado, que estava a ser feito através da GPU no anfitrião. Essa GPU no anfitrião é a GPU Intel HD integrada, e eu queria utilizar a NVidia GTX-1050ti, que era a GPU1.

Depois de pesquisar por aí não encontrei realmente em lado nenhum onde se pudesse especificar qual a GPU a utilizar. Mas este tópico, e alguns outros, lembrou-me que neste tipo de configurações tem de ir ao painel de controlo da NVidia, depois “gerir configurações 3d”, depois o separador “Program Settings”.

Provavelmente não encontrará a “Virtualbox” na lista. Mas pode pressionar o botão “Add”, e adicionar virtualbox.exe. Poderá ter de perfurar a unidade/caminho onde se encontra a instalação da sua virtualbox. Depois de a ter adicionado, nas definições abaixo, certifique-se de que o item 2. “Select the preferred graphics processor for this program” está definido para a GPU que pretende utilizar, que no meu caso era “HIgh-performance NVIDIA processor”.

Não o defina para automático, e certamente não o defina para integrado. Claro que precisa das definições VM definidas com a caixa de aceleração 3D assinalada, e precisa das adições de convidados instaladas no anfitrião. Mas assim que tiver definido as definições 3d do anfitrião de vídeo como descrito acima, desligue o VM convidado, saia da caixa virtual, e depois relance a caixa virtual e o VM.

Se utilizar o tasks manager|performacne e olhar para o processo “virtualbox manager” e ver qual a GPU que é utilizada quando navega na IU do VM convidado, deverá vê-la utilizando a melhor GPU agora. Veja a imagem colada abaixo.

Dito isto, não espere poder executar jogos num VM convidado. A aceleração 3D passa ainda não está assim tão longe. Mas pode esperar ter um SO e uma IU modernos no seu convidado, e ter uma experiência aceitável. Poder-se-ia jogar jogos mais antigos no VM convidado, como qualquer coisa baseada no directX9. Infelizmente, à medida que a capacidade de virtualizar os eveolves da GPU, a tecnologia de jogos 3d evolui mais rapidamente.

17
17
17
2015-12-31 17:15:00 +0000

Dar ao convidado acesso total à GPU provavelmente não é possível. Se uma máquina virtual tivesse acesso directo à sua GPU enquanto o seu anfitrião a utilizasse, Más CoisasTM aconteceriam porque partilhar memória entre dois computadores efectivamente diferentes não é uma coisa; indicações e endereços e o que não seria muito diferente entre eles. (Nenhum cartão disponível ao consumidor suporta a manutenção de dois computadores ao mesmo tempo.)

Há, no entanto, algumas coisas que pode tentar. Primeiro, defina o seu processador gráfico preferido para o bom no Painel de Controlo NVidia (3D SettingsManage 3D settingsPreferred graphics processor). Isto pode fazer com que a VirtualBox vá com a placa NVidia para OpenGL.

Se isso não ajudar, tente instalar o Guest Additions no Modo Seguro no guest.

Finalmente, em hosts Linux, pode tentar passar a GPU para a máquina virtual, mas isto só funcionará para placas PCI e não consegui descobrir se a sua é PCI, e mesmo assim, tem uma boa hipótese de arrancar a GPU do host ou de causar outros problemas. Primeiro encontre o endereço PCI (bus, dispositivo, e função) para a boa placa. Ajuste o chipset do seu VM para ICH9; isto não partiu nada imediatamente quando o experimentei. Depois use o utilitário VBoxManage para anexar a placa:

vboxmanage modifyvm "Your VM Name" --pciattach BB:DD.F@bb:dd.f

Substituir Your VM Name conforme apropriado. BB é o número de autocarro da sua GPU no anfitrião; DD é o dispositivo; F é a função. Depois do @, introduza o slot PCI que estará no convidado. Por exemplo:

vboxmanage modifyvm "Windows 7 x64" --pciattach 01:00.0@03.01.0

Em geral, é mais provável que a passagem da GPU seja possível num anfitrião Linux. Ver Como configurar uma máquina de jogo com GPU passthrough .

Advertisement