Como faço para que o convidado do VirtualBox use os gráficos da NVidia?
Configuração do host:
Windows 7 x64
NVidia Optimus
No Painel de controle da NVIDIA , selecionei explicitamente o processador NVIDIA de alto desempenho para:
C:\Program Files\oracle\VirtualBox\VirtualBox.exe C:\Program Files\Oracle\VirtualBox\VBoxSVC.exe
Quando o VirtualBox está em execução, o software NVidia não o lista como aplicativo que usa a GPU NVidia. Portanto, presumo que o VirtualBox de fato não use a GPU Nvidia.
Hóspede:
Windows 7 x64 (ou seja, o mesmo que host)
Adições de convidados instaladas
Aceleração 3D ativada nas configurações do VirtualBox: Exibir / Vídeo / Ativar aceleração 3D
O que o Rhinoceros , um aplicativo compatível com OpenGL relata como adaptador de vídeo:
Humper Chromium OpenGL version: 2.1 Chromium 1.9 Render version: 2.0 Shading Language: 1.40 - Intel Build 9.17.10.3517 Driver Date: NA Driver Version: NA Maximum Texture size: 8192 x 8192 Z-Buffer depth: 32bits Maximum Viewport size: 8192 x 8192 Total Video Memory: 64 MB
Para mim, parece que a máquina virtual usa a aceleração de hardware 3D do host, mas infelizmente a Intel.
Respostas:
Sei que alguns anos se passaram, mas queria responder, já que este post aparece bastante alto quando você pesquisa no Google por "virtualbox 3d multiple GPU". No tempo que passou, as coisas ficaram muito mais simples e melhores.
As pessoas que se deparam com esse tópico provavelmente chegarão aqui porque têm um laptop ou PC com duas GPUs, o que é bastante comum atualmente - principalmente em laptops para jogos. A GPU Intel integrada é usada para renderizar janelas e aplicativos gerais, mas os aplicativos que utilizam a funcionalidade 3D da GPU devem fazer isso por meio da GPU Nvidia de melhor desempenho.
Hoje, eu estava construindo uma VM do Ubuntu no meu laptop para fazer algum desenvolvimento de plataforma cruzada, e tudo estava bem, exceto a VM convidada, que era extremamente lenta e não havia explicação para isso, porque CPU, memória e disco estavam mostrando baixa utilização.
Não demorou muito para descobrir que o desempenho do vídeo estava causando o problema. O lançamento de aplicativos, a maximização / minimização de janelas - tudo o que consideramos garantido em 2019, mas que precisa da aceleração 3D para funcionar a uma velocidade razoável - estava usando a GPU 0.
Foi fácil determinar isso porque o Windows 10 agora pode ver a utilização da GPU usando o "gerenciador de tarefas" e a guia "desempenho". E eu pude ver enquanto movia as janelas, maximizada, minimizada, o que estava sendo feito através da GPU no host. Essa GPU no host é a GPU Intel HD integrada e eu queria usar a NVidia GTX-1050ti, que era GPU1.
Depois de pesquisar, não encontrei nenhum lugar onde você pudesse especificar qual GPU usar. Mas esse tópico, e alguns outros, me lembraram que, nesse tipo de configuração, você precisa acessar o painel de controle da NVidia, depois "gerenciar as configurações 3d" e depois a guia "Configurações do programa".
Você provavelmente não encontrará "Virtualbox" na lista. Mas você pode pressionar o botão "Adicionar" e adicionar o virtualbox.exe. Talvez você precise detalhar a unidade / caminho onde está a instalação da sua caixa virtual. Depois de adicioná-lo, nas configurações abaixo, verifique se o item 2. "Selecione o processador gráfico preferido para este programa" está definido para a GPU que você deseja usar, que no meu caso foi "Processador NVIDIA de alto desempenho" .
Não defina como automático e certamente não como integrado. Obviamente, você precisa das configurações da VM definidas com a caixa de aceleração 3D marcada e das adições de convidado instaladas no host. Porém, depois de definir as configurações 3d do vídeo host, conforme descrito acima, desligue a VM convidada, saia da caixa virtual e, em seguida, reinicie o virtualbox e a VM.
Se você usa o gerenciador de tarefas | desempenho, observa o processo "gerenciador de caixas virtuais" e observa o que a GPU é usada quando você navega na interface do usuário da VM convidada, você deve vê-la usando a melhor GPU agora. Veja a imagem colada abaixo.
Tudo isso dito, não espere poder executar jogos em uma VM convidada. O passo de aceleração 3D ainda não está tão longe assim. Mas você pode esperar ter um SO e interface do usuário modernos em seu convidado e ter uma experiência aceitável. Seria possível jogar jogos mais antigos na VM convidada, como qualquer coisa baseada no directX9. Infelizmente, à medida que a capacidade de virtualizar a GPU evolui, a tecnologia de jogos em 3D evolui mais rapidamente.
fonte
Não é possível conceder acesso total à GPU do convidado. Se uma máquina virtual tivesse acesso direto à sua GPU enquanto o host a estava usando, o Bad Things TM aconteceria porque compartilhar memória entre dois computadores efetivamente diferentes não é uma coisa; ponteiros e endereços e outros enfeites seriam muito diferentes entre eles. (Nenhuma placa disponível para o consumidor suporta a manutenção de dois computadores ao mesmo tempo.)
Existem, no entanto, algumas coisas que você pode tentar. Primeiro, defina o processador gráfico preferido como bom no Painel de controle da NVidia ( Configurações 3D → Gerenciar configurações 3D → Processador gráfico preferido ). Isso pode fazer o VirtualBox ir com a placa NVidia para OpenGL.
Se isso não ajudar, tente instalar o Guest Additions no modo de segurança no convidado.
Por fim, nos hosts Linux , você pode tentar passar a GPU para a máquina virtual, mas isso funcionará apenas para placas PCI e não consegui descobrir se a sua é PCI e, mesmo assim, você tem uma boa chance de arrancando a GPU do host ou causando outros problemas. Primeiro encontre o endereço PCI (barramento, dispositivo e função) da boa placa. Defina o chipset da sua VM como ICH9; isso não quebrou nada imediatamente quando eu tentei. Em seguida, use o utilitário VBoxManage para anexar o cartão:
Substitua
Your VM Name
conforme apropriado.BB
é o número do barramento da sua GPU no host;DD
é o dispositivo;F
é a função Após o@
, digite o slot PCI que estará no convidado. Por exemplo:Em geral, a passagem da GPU é mais provável em um host Linux. Consulte Como configurar uma máquina de jogos com passagem GPU .
fonte