Jak zmusić gościa VirtualBox do korzystania z grafiki NVidia?
Konfiguracja hosta:
Windows 7 x64
NVidia Optimus
W Panelu sterowania NVIDIA wyraźnie wybrałem Wydajny procesor NVIDIA dla:
C:\Program Files\oracle\VirtualBox\VirtualBox.exe C:\Program Files\Oracle\VirtualBox\VBoxSVC.exe
Gdy VirtualBox jest uruchomiony, oprogramowanie NVidia nie wyświetla go jako aplikacji korzystającej z procesora graficznego NVidia. Dlatego zakładam, że VirtualBox rzeczywiście nie używa procesora graficznego Nvidia.
Gość:
Windows 7 x64 (tzn. Taki sam jak host)
Zainstalowane dodatki gości
Akceleracja 3D włączona w ustawieniach VirtualBox: Display / Video / Enable 3D Acceleration
Co nosorożec , aplikacja obsługująca OpenGL zgłasza jako karta wideo:
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
Dla mnie wygląda na to, że maszyna wirtualna korzysta z akceleracji sprzętowej 3D hosta, ale niestety Intel.
Odpowiedzi:
Zdaję sobie sprawę, że minęło kilka lat, ale chciałem odpowiedzieć, ponieważ ten post pojawia się dość wysoko, gdy wyszukujesz w Google hasło „virtualbox 3d multiple GPU”. W minionym czasie sprawy stały się o wiele prostsze i lepsze.
Ludzie, którzy natkną się na ten wątek, prawdopodobnie wylądują tutaj, ponieważ mają laptopa lub komputer PC, który ma dwa procesory graficzne, co jest obecnie dość powszechne - szczególnie na laptopach do gier. Wbudowany procesor graficzny Intel służy do renderowania okien i aplikacji ogólnych, ale aplikacje korzystające z funkcji GPU 3D powinny to robić za pośrednictwem wydajniejszej karty graficznej Nvidia.
Dzisiaj budowałem maszynę Wirtualną Ubuntu na moim laptopie, aby wykonać programowanie międzyplatformowe, i wszystko było w porządku, z wyjątkiem maszyny wirtualnej gościa, która była bardzo powolna i nie było na to żadnego wyjaśnienia, ponieważ procesor, pamięć i dysk wykazywały niskie wykorzystanie.
Nie trwało długo, aby dowiedzieć się, że przyczyną problemu była wydajność wideo. Uruchamianie aplikacji, maksymalizowanie / minimalizowanie okien - wszystko, co uważamy za oczywiste w 2019 r., Ale wymaga akceleracji 3D do pracy z dowolną rozsądną prędkością - korzystało z GPU 0.
Łatwo było to ustalić, ponieważ system Windows 10 może teraz zobaczyć wykorzystanie GPU za pomocą „menedżera zadań”, a następnie karty „wydajność”. I widziałem, jak przenosiłem okna, zmaksymalizowane, zminimalizowane, które były wykonywane za pomocą GPU na hoście. Ten procesor graficzny na hoście to zintegrowany procesor graficzny Intel HD i chciałem użyć NVidia GTX-1050ti, czyli GPU1.
Po przeszukaniu nie znalazłem nigdzie miejsca, w którym można określić, którego procesora graficznego użyć. Ale ten wątek i niektóre inne przypomniały mi, że w tego rodzaju konfiguracjach musisz przejść do panelu sterowania NVidia, a następnie „zarządzać ustawieniami 3D”, a następnie zakładką „Ustawienia programu”.
Na liście prawdopodobnie nie znajdziesz „Virtualbox”. Możesz jednak nacisnąć przycisk „Dodaj” i dodać virtualbox.exe. Być może będziesz musiał zgłębić dysk / ścieżkę, w której znajduje się instalacja Virtualbox. Po dodaniu go w ustawieniach poniżej upewnij się, że pozycja 2. „Wybierz preferowany procesor graficzny dla tego programu” jest ustawiona na procesor graficzny, którego chcesz używać, czyli w moim przypadku „Wydajny procesor NVIDIA” .
Nie ustawiaj go na auto i na pewno nie ustawiaj go na zintegrowany. Oczywiście potrzebujesz ustawień VM z zaznaczonym polem akceleracji 3D i potrzebujesz dodatków gościnnych zainstalowanych na hoście. Ale po skonfigurowaniu ustawień wideo hosta 3d zgodnie z powyższym opisem zamknij maszynę wirtualną gościa, zamknij wirtualne okno, a następnie ponownie uruchom wirtualną maszynę wirtualną i maszynę wirtualną.
Jeśli użyjesz menedżera zadań | performacne i przyjrzysz się procesowi "virtualbox manager" i zobaczysz, z czego korzysta GPU podczas nawigacji po interfejsie użytkownika maszyny wirtualnej gościa, powinieneś zobaczyć go przy użyciu lepszej karty graficznej. Zobacz obraz wklejony poniżej.
To powiedziawszy, nie oczekuj, że będziesz mógł uruchamiać gry na maszynie wirtualnej gościa. Przekaz przyspieszenie 3D nadal nie jest tak daleko. Ale możesz oczekiwać, że będziesz mieć nowoczesnego systemu operacyjnego i interfejsu użytkownika u swojego gościa, i będziesz mieć satysfakcjonujące wrażenia. Można by grać w starsze gry na maszynie wirtualnej gościa, jak wszystko oparte na directX9. Niestety, wraz z rozwojem możliwości wirtualizacji układów GPU, technologia gier 3d ewoluuje szybciej.
źródło
Zapewnienie gościowi pełnego dostępu do GPU prawdopodobnie nie jest możliwe. Gdyby maszyna wirtualna miała bezpośredni dostęp do twojego GPU, gdy host go używał, nastąpiłoby Bad Things TM , ponieważ współdzielenie pamięci między dwoma efektywnie różnymi komputerami nie jest niczym; Wskaźniki i adresy, a co nie byłoby bardzo różne między nimi. (Żadna karta dostępna dla konsumentów nie obsługuje obsługi dwóch komputerów jednocześnie).
Jest jednak kilka rzeczy, które możesz wypróbować. Najpierw ustaw preferowany procesor graficzny na dobry w Panelu sterowania NVidia ( Ustawienia 3D → Zarządzaj ustawieniami 3D → Preferowany procesor graficzny ). To może sprawić, że VirtualBox będzie działał z kartą NVidia dla OpenGL.
Jeśli to nie pomoże, spróbuj zainstalować dodatki gościa w trybie awaryjnym na gościu.
Wreszcie na hostach z systemem Linux możesz spróbować przenieść GPU na maszynę wirtualną, ale będzie to działać tylko w przypadku kart PCI, a ja nie byłem w stanie ustalić, czy masz kartę PCI, a mimo to masz duże szanse na zgrywanie GPU z hosta lub powodowanie innych problemów. Najpierw znajdź adres PCI (magistrala, urządzenie i funkcja) dla dobrej karty. Ustaw chipset maszyny wirtualnej na ICH9; to nie od razu niczego zepsuło, kiedy spróbowałem. Następnie użyj narzędzia VBoxManage, aby dołączyć kartę:
Wymień
Your VM Name
odpowiednio.BB
jest numerem magistrali twojego GPU na hoście;DD
jest urządzeniem;F
jest funkcją. Po@
, wprowadź gniazdo PCI, które będzie na gościu. Na przykład:Ogólnie rzecz biorąc, przekazywanie GPU jest bardziej prawdopodobne na hoście Linux. Zobacz Jak skonfigurować automat do gier z przejściem na GPU .
źródło