IronHide / BumbleBee z maszyną wirtualną VirtualBox. Czy przejdzie przez przyspieszenie wideo na kartę fizyczną?

8

Jakieś pomysły na to, czy można uruchomić maszynę wirtualną z systemem Windows za pośrednictwem aplikacji IronHide w celu przyspieszenia karty graficznej? Chciałbym grać w gry / oglądać rozmycie itp. Przy użyciu mojej karty graficznej.

mwjackson
źródło
1
Udało mi się uruchomić vm systemu Windows z trzmielem, ale czy bez widocznego efektu szukasz czegoś bardziej konkretnego?
david.libremone
1
Cóż, chciałbym wiedzieć, czy VirtualBox będzie przechodzić przez akceleracja wideo z okien VM, aby grać w gry / watch bluray itd
mwjackson
1
Planuję kiedyś przetestować to sam, dam ci znać, jeśli ktoś inny nie odpowie najpierw - być może dostosujesz twoje pytanie, aby było bardziej szczegółowe?
david.libremone
Jestem trochę zdezorientowany tym, o co prosiłeś, chcesz, aby maszyna wirtualna korzystała z procesora graficznego NVIDIA w celu przyspieszenia 3D? , jak bezpośredni dostęp do sprzętu graficznego za pośrednictwem maszyny wirtualnej ?.
Uri Herrera
1
@jacko, możesz chcieć to zrobić
david.libremone

Odpowiedzi:

9

Być może pomogłoby to wyjaśnienie między grafiką w wirtualnym gościu a rzeczywistym O / S hosta.

Najpierw podstawy:

Wszystko w wirtualnym gościu jest abstrakcją - oznacza to, że każde urządzenie i sterownik w wirtualnym O / S gościa nie zależy od faktycznego urządzenia hosta i sterownika.

Aby dać prosty przykład. Mysz jest postrzegana jako specyficzne urządzenie - jądro Linuksa widzi to urządzenie i umożliwia systemowi-gościowi korzystanie z niego. To „urządzenie wirtualne” jest mapowane na rzeczywiste urządzenie fizyczne przez narzędzie do wirtualizacji - VirtualBox, VMWare, Xen itp. W związku z tym system operacyjny gościa nigdy nie musi rozumieć, czym jest fizyczna mysz, widzi tylko to, co zostało do niej przypisane narzędzie do wirtualizacji. . Wartość tego podejścia polega na tym, że możesz przenieść wirtualnego gościa do różnych hostów - będzie on działał w ten sam sposób, ponieważ nie ma bezpośredniej zależności od samego hosta.

Aby to pokazać w praktyce, możesz uruchomić lsusbzarówno na hoście, jak i na gościu - na moim O / SI hosta mają następujące urządzenia 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

Na moim gościu oneiric O / SI może zobaczyć następujące urządzenia USB - różnią się one od hosta:

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

Każdy system operacyjny gościa, niezależnie od tego, czy system Windows, czy Linux, będzie widział tylko to wirtualne urządzenie gościa.

Grafika hosta a grafika gościa

To samo dotyczy grafiki.

Grafika mojego hosta to:

 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)

Na moim gościu oneiric O / S może zobaczyć następującą kartę graficzną - widać, że to nie to samo co 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

Podobnie - system operacyjny gościa systemu Windows zobaczy tylko podobne wirtualne urządzenie gościa.

W mrocznym świecie VirtualBox Dodatki dla gości, które można zainstalować ręcznie (lub w 11.10 - dżokej widzi i zaleca, aby je zainstalować) instaluje dodatkowe moduły jądra (lub sterowniki urządzeń dla gości Windows), aby umożliwić rozszerzonemu systemowi gości dostęp do grafika hosta O / S. Znowu nie jest to bezpośrednie mapowanie - ale umożliwia wyświetlanie grafiki z akceleracją 3D.

Jeśli aplikacja na maszynie wirtualnej korzysta z funkcji 3D za pośrednictwem interfejsu programowania OpenGL (lub dla systemu operacyjnego gościa Windows - jego wywołania DirectX), zamiast emulować je w oprogramowaniu (co byłoby wolne), VirtualBox spróbuje użyć hosta Sprzęt 3D.

Ponownie podkreślam, że gość nie widzi twojej karty graficznej, po prostu przekazuje wywołanie OpenGL (lub DirectX) od gościa bezpośrednio do sprzętu hosta w celu przetworzenia.

wprowadź opis zdjęcia tutaj

W ustawieniach VirtualBox powinieneś zmienić pamięć karty graficznej i ustawienia karty graficznej 3D. Twój gość O / S zobaczy wtedy „kartę 3D Accelerated” z 128 MB pamięci RAM. Nie ma znaczenia, czy twoja karta graficzna hosta jest lepsza od tej - Twój gość O / S zobaczy tylko tę „prostą” abstrakcyjną wirtualną kartę graficzną.

Ponieważ wspomniano, że korzystasz z systemu operacyjnego gościa Windows - pole wyboru 2D ma zastosowanie, ponieważ wykonywane jest podobne przekazywanie wywołań interfejsu programistycznego.

Bumblebee / IronHide to albo / lub mechanizm przełączania grafiki - używasz zintegrowanej grafiki lub grafiki NVidia / ATI o większej pojemności, ale nie obu jednocześnie.

Ponieważ zdolność przełączania grafiki z większą możliwością przełączania w OpenGL (lub DirectX) jest większa niż w przypadku zintegrowanego zestawu układów, zobaczysz względnie lepszą wydajność grafiki w aplikacjach intensywnie korzystających z grafiki Guest O / S. Jednak to ulepszenie nie jest tak dramatyczne, jak uruchamianie tej samej aplikacji natywnie na hoście, ponieważ nadal działa w granicach 128 MB wirtualnego urządzenia graficznego gościa.

źródło

fossfreedom
źródło
Dodanie: nie możemy obecnie robić trzmieli (render na karcie nvidia) na maszynach wirtualnych, ponieważ zarówno VMware, jak i VirtualBox wymagają, aby ich pliki binarne były skonfigurowane w sposób setuid.
allquixotic
5

Odpowiedź powyżej https://askubuntu.com/a/85138/38052 wyjaśnia, w jaki sposób wszystko, co widzi O / S gościa, jest pewnego rodzaju abstrakcją. Chociaż kiedyś było to całkowicie prawdziwe, wierzę, że wszystko się zmienia i może już nie być całkowicie prawdziwe.

Niektóre nowsze procesory obsługują także wirtualizację I / O MMU. Technologie te nazywane są Intel VT-d dla wersji Intela i AMD-Vi dla wersji AMD. Cytując artykuł w Wikipedii na temat wirtualizacji x86:

Wirtualizacja procesorów Intel I / O MMU (AMD-Vi i VT-d) Artykuł główny: IOMMU

Jednostka zarządzania pamięcią wejścia / wyjścia (IOMMU) umożliwia maszynom wirtualnym gościa bezpośrednie korzystanie z urządzeń peryferyjnych, takich jak Ethernet, przyspieszone karty graficzne i kontrolery dysków twardych, poprzez DMA i mapowanie przerwań. Czasami nazywa się to przepustowością PCI. Zarówno AMD, jak i Intel wydały specyfikacje:

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

Brzmi dość interesująco, ale mogę już przewidzieć pewne problemy. Po pierwsze, w laptopach Optimus, Intel IGP zawsze wyświetla ostateczne wyjście na ekranie. Nie jest dla mnie jasne, w jaki sposób O / S gościa i O / S hosta będą napędzać IGP. Jedna myśl jest taka, że ​​jeśli możliwe jest uruchomienie Hosta bez grafiki, gdy goście są uruchomieni, może to sprawić, że zadziała, ale nie jest dla mnie jasne, w jaki sposób można to zrobić.

sarang
źródło
1

OK, byłem ciekawy, więc spróbowałem tego.

QEMU, a teraz VirtualBox, obsługują przekazywanie urządzeń PCI na maszynę-gościa. Oznacza to, że jeśli masz drugą kartę graficzną, możesz przekazać ją gościowi Windows na hoście Linux i uzyskać pełną wydajność 3D (gry) w zwirtualizowanym środowisku Windows. Tak jest w przypadku komputera stacjonarnego z dwiema kartami graficznymi. Menedżer urządzeń wyświetli „NVIDIA GTX ... cokolwiek” zamiast powiedzieć „Virualbox Graphics Adapter”.

Optimus jest zawsze bardziej skomplikowany. Testuję to na ASUS UX501. Udało mi się przekazać chip NVidia do gościa systemu Windows, który pokazuje w menedżerze urządzeń jako „3D Video Controller”. Ale nie mogłem zainstalować żadnych sterowników systemu Windows, które by go obsługiwały. Wydaje się, że obecność grafiki Intel jest warunkiem wstępnym.

Sarang miał rację, by być podejrzliwym. Wygląda na to, że układ NVIDIA nie jest „kartą graficzną”, jak napędzałby monitor, a jedynie akceleratorem zintegrowanego układu Intel. Nie wydają się funkcjonować jako dwa osobne urządzenia niezależnie.

Mathew Hart
źródło