IronHide / BumbleBee com uma VM do VirtualBox. Ele passará pela aceleração de vídeo para o cartão físico?

8

Alguma idéia de se você pode executar uma VM do Windows via IronHide para acelerar a placa gráfica? Eu gostaria de jogar / assistir bluray etc utilizando minha placa de vídeo.

mwjackson
fonte
11
Eu executei com êxito um windows vm com bumblebee, mas sem efeito visível, você está procurando algo mais específico?
David.libremone
11
Bem, eu gostaria de saber se o VirtualBox passaria através da aceleração de vídeo do Windows VM para jogar / assistir bluray etc.
mwjackson
11
Estou planejando testar isso em algum momento, informarei os resultados se outra pessoa não responder primeiro - talvez ajuste sua pergunta para ser mais específico?
David.libremone
Estou um pouco confuso com o que você pediu, quer que a VM use a nvidia GPU para acelerar a 3D? , como acesso direto ao hardware gráfico através da VM ?.
Uri Herrera
11
@jacko você pode colocar isso como cruzado
david.libremone

Respostas:

9

Talvez uma explicação entre gráficos em um convidado virtual e o sistema operacional real do host ajude aqui.

Primeiro o básico:

Tudo em um convidado virtual é uma abstração - o que isso significa é que todos os dispositivos e drivers de um SO virtual de convidados virtuais não dependem do dispositivo e driver reais do host.

Para lhe dar um exemplo simples. Um mouse é visto como um dispositivo específico - o kernel do linux vê esse dispositivo e permite que o sistema operacional convidado use esse dispositivo. Esse "dispositivo virtual" é mapeado para o dispositivo físico real pela ferramenta de virtualização - VirtualBox, VMWare, Xen etc. Portanto, o sistema operacional convidado nunca precisa entender o que é o mouse físico, apenas vê o que a ferramenta de virtualização mapeou para ele. . O valor dessa abordagem é que você pode mover o convidado virtual para diferentes hosts - ele funcionará da mesma maneira porque não há dependência direta do próprio host.

Para mostrar isso na prática, você pode executar lsusbno host e no convidado - no meu host O / SI possui os seguintes dispositivos USB:

Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0402:9665 ALi Corp. 
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

No meu convidado, o O / SI onírico pode ver os seguintes dispositivos USB - eles são diferentes do host:

Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 80ee:0021 VirtualBox USB Tablet

Qualquer O / S convidado, seja Windows ou Linux, verá apenas este dispositivo convidado virtual.

Gráficos do host x gráficos do convidado

É o mesmo para gráficos.

Os gráficos do meu host são:

 sudo lshw -class display
  *-display               
       description: VGA compatible controller
       product: Core Processor Integrated Graphics Controller
       vendor: Intel Corporation
       physical id: 2
       bus info: pci@0000:00:02.0
       version: 18
       width: 64 bits
       clock: 33MHz
       capabilities: msi pm vga_controller bus_master cap_list rom
       configuration: driver=i915 latency=0
       resources: irq:41 memory:90000000-903fffff memory:80000000-8fffffff ioport:3050(size=8)

No meu convidado oneiric O / S, ele pode ver a seguinte placa gráfica - você pode ver que não é o mesmo que o host:

sudo lshw -class display
  *-display UNCLAIMED     
       description: VGA compatible controller
       product: VirtualBox Graphics Adapter
       vendor: InnoTek Systemberatung GmbH
       physical id: 2
       bus info: pci@0000:00:02.0
       version: 00
       width: 32 bits
       clock: 33MHz
       capabilities: vga_controller bus_master
       configuration: latency=64
       resources: memory:e0000000-e7ffffff

Da mesma forma - um sistema operacional convidado do Windows verá apenas um dispositivo convidado virtual semelhante.

No mundo obscuro do VirtualBox, as Adições de Convidado que você pode instalar manualmente (ou na versão 11.10 - o jockey vê e recomenda que você o instale) instala módulos adicionais do kernel (ou drivers de dispositivo para Convidados do Windows) para permitir ao O / S convidado acesso aprimorado a seus gráficos O / S do host. Novamente, não é um mapeamento direto - mas permite a visualização de gráficos acelerados em 3D.

Se um aplicativo dentro de sua máquina virtual usar recursos 3D por meio da interface de programação OpenGL (ou para um sistema operacional convidado do Windows - suas chamadas DirectX), em vez de emulá-los em software (o que seria lento), o VirtualBox tentará usar o host Hardware 3D.

Novamente, enfatizo que o sistema operacional convidado não vê sua placa de vídeo real, apenas passa a chamada OpenGL (ou DirectX) do convidado diretamente para o hardware do host para processar.

insira a descrição da imagem aqui

Nas configurações do VirtualBox, você deve alterar a memória da placa de vídeo e a configuração da placa gráfica 3D. O seu O / S convidado verá uma "placa 3D acelerada" com 128Mb de RAM. Não importa se a sua placa de vídeo host é melhor que isso - o seu O / S convidado verá apenas esta placa de vídeo virtual "simples" abstraída.

Como você mencionou que está usando um O / S do Windows Guest - a caixa de seleção 2D é aplicável a você, pois é realizado um repasse semelhante de chamadas da interface de programação.

O Bumblebee / IronHide é um mecanismo de alternância de gráficos - você está usando gráficos integrados ou gráficos NVidia / ATI de maior capacidade, mas não os dois ao mesmo tempo.

Como a capacidade OpenGL (ou DirectX) dos gráficos mais comutáveis ​​é maior que o conjunto de chips integrados, você verá um desempenho gráfico relativamente aprimorado com os aplicativos intensivos em gráficos de Guest O / S. No entanto, esse aprimoramento não é tão dramático quanto a execução nativa do mesmo aplicativo no host, uma vez que ainda está funcionando dentro das restrições do dispositivo gráfico de convidado virtual de 128 MB.

fonte

liberdade de expressão
fonte
Além disso: não podemos fazer bumblebee (renderizar na placa nvidia) em máquinas virtuais agora, já que o VMware e o VirtualBox exigem que seus binários sejam configurados para funcionar.
allquixotic
5

Uma resposta acima https://askubuntu.com/a/85138/38052 explica como tudo o que o sistema operacional convidado vê é algum tipo de abstração. Enquanto isso costumava ser verdade, acredito que as coisas estão mudando e pode não ser mais verdade.

Alguns processadores mais recentes também oferecem suporte à virtualização de E / S MMU. As tecnologias são chamadas Intel VT-d para a versão Intel e AMD-Vi para a versão AMD. Para citar o artigo da wikipedia sobre virtualização x86:

Virtualização de E / S MMU da Intel (AMD-Vi e VT-d) Artigo principal: IOMMU

Uma unidade de gerenciamento de memória de entrada / saída (IOMMU) permite que as máquinas virtuais convidadas usem diretamente dispositivos periféricos, como Ethernet, placas gráficas aceleradas e controladores de disco rígido, por meio do DMA e interrompam o remapeamento. Às vezes, isso é chamado de passagem de PCI. A AMD e a Intel lançaram especificações:

AMD's I/O Virtualization Technology, "AMD-Vi", originally called "IOMMU".
Intel's "Virtualization Technology for Directed I/O" (VT-d).

Isso parece bastante interessante, mas já posso prever alguns problemas. Por um lado, nos laptops Optimus, o Intel IGP está sempre renderizando a saída final na tela. Não está claro para mim como o Guest O / S e o Host O / S vão dirigir o IGP. Um pensamento é que, se for possível executar o Host sem gráficos enquanto os convidados estiverem em execução, isso poderá funcionar, mas não está claro para mim como alguém realmente faria isso.

sarang
fonte
1

OK, eu estava curioso, então eu tentei isso.

O QEMU e agora o VirtualBox oferecem suporte à passagem de dispositivos PCI para a máquina convidada. Isso significa que, se você tiver uma segunda placa gráfica, poderá transmiti-la a um convidado do Windows em um host Linux e obter desempenho 3D completo (jogos) em um ambiente Windows virtualizado. É o caso de um equipamento de mesa com duas placas gráficas. O gerenciador de dispositivos mostraria "NVIDIA GTX ... tanto faz" em vez de dizer "Virualbox Graphics Adapter".

Optimus é sempre mais complicado. Estou testando isso em um ASUS UX501. Consegui passar o chip NVidia para o convidado do Windows e ele aparece no gerenciador de dispositivos como "3D Video Controller". Mas não consegui instalar nenhum driver do Windows para suportá-lo. Parece que a presença dos gráficos da Intel é um pré-requisito.

Sarang estava certo em suspeitar. Parece que o chip da nvidia não é um "adaptador de vídeo", como faria com um monitor, mas apenas um acelerador para o chip intel integrado. Eles não parecem funcionar como dois dispositivos separados independentemente.

Mathew Hart
fonte