Dzięki najnowszemu sterownikowi Game Ready, firma NVIDIA umożliwiła obsługę funkcji GPU Passthrough w wersji beta dla maszyn wirtualnych z systemem Windows na procesorach graficznych GeForce . Przed wersją sterownika 465.89 funkcję GPU Passthrough obsługiwały tylko karty Quadro NVIDIA. Użytkownicy systemu Linux mogą korzystać z tej technologii, aby grać w gry przeznaczone wyłącznie dla systemu Windows na maszynie wirtualnej. A jeśli jesteś programistą, możesz łatwiej testować kod zarówno dla systemów Windows, jak i Linux na jednym komputerze, co przyspiesza proces tworzenia oprogramowania.
Funkcja GPU passthrough jest używana od dawna i istniały sposoby jej włączenia na kartach graficznych GeForce; jednak nigdy nie była oficjalnie obsługiwana. Technicznie rzecz biorąc, technologia ta zawsze była dostępna w układzie scalonym GeForce, ale nie była włączona w sterownikach, co powodowało popularny „błąd 43” na maszynach wirtualnych z systemem Windows. Od dawna możliwe jest włączenie funkcji GPU passthrough na konsumenckich kartach GeForce i funkcjach vGPU za pomocą oprogramowania. Więcej o vGPU w tym artykule.
Sterownik NVIDIA Game Ready 465.89
30 marca tego roku firma NVIDIA wydała nowy sterownik Game Ready o numerze 465.89. Sterownik ten obsługuje zupełnie nowe gry wideo i rozwiązuje problemy występujące w wielu innych grach i aplikacjach. Szczególnie ekscytujące w tym nowym wydaniu jest jednak to, co można znaleźć w sekcji poświęconej technologiom gier. Zapowiedziano tam trzy funkcje importu: Resizable BAR dla serii GeForce RTX 30, obsługę OpenCL 3.0 oraz beta obsługę wirtualizacji w procesorach graficznych GeForce.
Regulowany BAR
Technologia Resizable BAR umożliwia procesorowi dostęp do całej pamięci urządzenia PCIe jednocześnie, zamiast dotychczasowego ograniczenia 256 MB na cykl. Technologia Smart Access Memory, SAM (określenie AMD na tę technologię), została ogłoszona przez firmę w zeszłym roku i jest już wdrożona.
OpenCL 3.0
Dodano obsługę OpenCL 3.0, najnowszej głównej wersji OpenCL, zachowując wsteczną kompatybilność z OpenCL 1.2. NVIDIA OpenCL 3.0 nadal obsługuje istniejące funkcje OpenCL 1.2 oraz rozszerzenia Khronos i innych dostawców, które są już obsługiwane przez sterowniki NVIDIA OpenCL 1.2.
Wsparcie beta dla wirtualizacji na procesorach graficznych GeForce.
Ponadto, począwszy od tego sterownika, NVIDIA włączyła funkcję GPU passthrough (nie vGPU, czyli SR-IOV dla współdzielenia GPU) na wszystkich kartach graficznych GeForce opartych na architekturze Kepler i nowszych, dla maszyn wirtualnych z systemem Windows. To właśnie na tej technologii skupiamy się w tym artykule. Chociaż Resizable BAR był jedną z najbardziej oczekiwanych funkcji dla nowej generacji kart RTX i graczy, wirtualizacja na kartach graficznych GeForce była najbardziej oczekiwanym dodatkiem dla użytkowników „HomeLabers” i Linuksa.
Obsługa wersji beta maszyny wirtualnej Windows dla GeForce
Jeśli korzystasz głównie z Linuksa, możesz teraz włączyć funkcję passthrough dla procesorów graficznych GeForce na maszynie wirtualnej (VM) z systemem Windows. Funkcja passthrough dla procesorów graficznych NVIDIA była zarezerwowana wyłącznie dla procesorów graficznych klasy Enterprise lub stacji roboczych. Firma nie zezwalała klientom GeForce na korzystanie z tej technologii w maszynie wirtualnej z systemem Windows działającej na komputerach konsumenckich. Jednak wielu klientów używało kart GeForce jako procesorów graficznych do stacji roboczych.
W przypadku kart konsumenckich, problemem z funkcją GPU passthrough nigdy nie był układ scalony; to oprogramowanie (sterownik) blokowało użytkowników. Wcześniej, aby korzystać z funkcji GPU passthrough, użytkownicy musieli wydać znaczną sumę pieniędzy na kartę NVIDIA Tesla lub Quadro. Obsługa funkcji GPU passthrough w wersji beta dla kart GeForce to znaczące osiągnięcie dla tych, którzy chcą uruchamiać gry Windows z poziomu maszyny wirtualnej, zachowując jednocześnie hosta Linux (fizycznego) i korzystając z karty graficznej GeForce.
Głównym odbiorcą tej technologii są użytkownicy Linuksa, którzy chcą obsługiwać aplikacje wymagające dużej mocy obliczeniowej GPU i wykonywać wiele zadań jednocześnie. Istnieje kilka zastosowań GeForce, w których ta funkcjonalność jest korzystna, na przykład:
- Klienci GeForce chcący uruchomić hosta Linux i móc uruchomić maszynę wirtualną (VM) z systemem Windows w celu grania w gry
- Twórcy gier chcący testować kod zarówno w systemie Windows, jak i Linux na jednym komputerze
Wirtualizacja GeForce (beta) jest obsługiwana przez sterowniki w wersji R465 lub nowszej. Jest ona włączona na wszystkich kartach graficznych GeForce/TITAN obsługiwanych przez ten sterownik (Kepler i nowsze dla komputerów stacjonarnych; Maxwell i nowsze dla laptopów) w systemie Windows. Windows 10 to jedyny system operacyjny gościa obsługiwany przez tę konfigurację wirtualizacji GeForce.
Dzięki funkcji GeForce GPU Passthrough nie można wykorzystać tego samego procesora graficznego (GPU) używanego przez system operacyjny hosta do wirtualizacji. Jeden procesor graficzny (GPU) jest wymagany dla systemu operacyjnego hosta Linux, a drugi dla maszyny wirtualnej Windows. Należy również pamiętać, że funkcja GPU Passthrough obsługuje tylko jedną maszynę wirtualną. Technologia vGPU (SR-IOV) ani współdzielony układ GPU Passthrough dla wielu maszyn wirtualnych nie są obsługiwane przez GeForce. Załóżmy, że chcesz umożliwić różnym maszynom wirtualnym bezpośredni dostęp do jednego procesora graficznego (GPU) lub chcesz, aby procesor graficzny przypisywał funkcje wirtualne wielu maszynom wirtualnym. W takim przypadku konieczne będzie użycie stacji roboczej lub procesorów graficznych klasy korporacyjnej.
Błąd przejścia GPU: Kod 43
Jeśli kiedykolwiek próbowałeś uruchomić maszynę wirtualną z systemem Windows z komputera z systemem Linux, przed wprowadzeniem sterownika Game Ready 465.89, sterowniki w systemie operacyjnym gościa zwracały popularny kod „Code 43”. Ten błąd pojawiał się w systemie operacyjnym Windows (gościa) tylko wtedy, gdy sterownik GeForce wykrył, że system operacyjny faktycznie działa na maszynie wirtualnej. Obsługa wirtualizacji na kartach graficznych GeForce oznacza, że nie musisz już ukrywać swojej maszyny wirtualnej; sterowniki można zainstalować, a ten kod błędu powinien zniknąć.
Można również bez problemu wspomnieć, że NVIDIA celowo zaprojektowała ten kod błędu dla kart graficznych GeForce. Nie występuje on na kartach graficznych Tesla i Quadro, czyli kartach klasy korporacyjnej. Powodem jest to, że NVIDIA z pewnością musi oddzielić segment konsumencki od segmentu korporacyjnego. Niektóre funkcje klasy korporacyjnej nie mają większego sensu w przypadku kart graficznych klasy konsumenckiej (o niższej wydajności), ale włączenie niektórych z nich spowodowałoby znaczny spadek sprzedaży kart NVIDIA klasy korporacyjnej (droższych).
Przepustowość GPU kontra vGPU
Wielu użytkowników wciąż nie rozumie funkcji GPU Passthrough i możliwości technicznych oferowanych przez firmę NVIDIA. Warto przypomnieć sobie, czym jest wirtualizacja w procesorach graficznych GeForce, a czym nie. Termin GPU Passthrough może wydawać się oczywisty dla wielu entuzjastów GPU, jednak często jest mylony z wirtualnym procesorem graficznym NVIDIA (vGPU).
Zarówno GPU Passthrough, jak i vGPU to technologie od dawna wykorzystywane w rozwiązaniach wirtualizacji przedsiębiorstw, takich jak VMware ESXi i Citrix XenServer , a także w procesorach graficznych Tesla i Quadro. W VMware ESXi GPU Passthrough nazywane jest wirtualnym dedykowanym przyspieszeniem graficznym (vDGA), a vGPU – wirtualnym współdzielonym przyspieszeniem graficznym (vSGA). vGPU umożliwia współdzielenie procesorów graficznych klasy korporacyjnej na wielu wirtualnych pulpitach.
VMware oferuje trzecią opcję o nazwie Virtual Shared Passthrough Graphics Acceleration. Technologia ta umożliwia współdzielenie karty graficznej (GPU) przez wielu użytkowników, zamiast skupiać się tylko na jednym. Różnica w stosunku do vGPU (vSGA w VMware) polega na tym, że zastrzeżony sterownik VMware 3D nie jest używany, a większość funkcji karty graficznej jest obsługiwana. Należy pamiętać, że dzięki funkcji GPU Passthrough na kartach GeForce nie można zezwolić wielu maszynom wirtualnym na bezpośredni dostęp do jednego procesora graficznego (GPU), ani też procesor graficzny nie może przypisywać funkcji wirtualnych do wielu maszyn wirtualnych.
Infrastruktura pulpitów wirtualnych (VDI) to najlepszy przykład i scenariusz wykorzystania tych technologii GPU. Rozwiązania VDI wykorzystują wirtualizację, szybko tworząc setki klonów maszyn wirtualnych działających na jednym wydajnym serwerze lub klastrze. W większości przypadków vGPU jest najlepszym wyborem dla użytkowników, którzy potrzebują pełnego potencjału GPU w krótkich okresach. Jednak vGPU może tworzyć wąskie gardła, w zależności od używanych aplikacji i zasobów, których te aplikacje wymagają od GPU. vGPU jest zazwyczaj wykorzystywane przez pracowników umysłowych, a czasami przez użytkowników zaawansowanych. Obecnie planowanie rozwiązań VDI bez uwzględnienia vGPU jest uważane za zaniedbanie.
Zhakowano układ Nvidia vGPU dla kart GeForce
Nawet z włączoną funkcją GPU Passthrough w najnowszych sterownikach NVIDIA, użytkownicy GeForce nadal nie mają (oficjalnie) możliwości współdzielenia GPU na wielu wirtualnych pulpitach. W przypadku vGPU konieczne będzie użycie procesorów graficznych NVIDIA Tesla, Quadro lub RTX klasy enterprise. Czyli NVIDIA nie da się w tym przypadku oszukać, czy jednak da się?
Kilka miesięcy temu ujawniono odblokowanie funkcjonalności vGPU dla procesorów graficznych klasy konsumenckiej. To narzędzie umożliwia korzystanie z procesorów graficznych GeForce i Quadro z oprogramowaniem NVIDIA vGPU. NVIDIA vGPU zazwyczaj obsługuje tylko kilka procesorów graficznych Tesla, ale ponieważ niektóre procesory graficzne GeForce i Quadro korzystają z tego samego układu scalonego co Tesla, jest to jedynie ograniczenie programowe dla tych procesorów. To narzędzie ma na celu usunięcie tego ograniczenia.
Narzędzie i instrukcje są dostępne pod adresem https://github.com/DualCoder/vgpu_unlock.
Uwagi końcowe
Firma NVIDIA w końcu zdecydowała się usunąć blokadę, którą arbitralnie nakładała na karty GeForce. Przed wydaniem przez firmę NVIDIA sterownika 465.89, gdy system operacyjny gościa wykrył maszynę wirtualną, sterownik był wyłączany w systemach Windows i Linux. Dzięki włączonej wirtualizacji, użytkownicy kart GeForce na komputerach hostujących z systemem Linux mogą teraz włączyć funkcję GeForce GPU Passthrough w wirtualnym systemie operacyjnym gościa Windows.
Technicznie rzecz biorąc, obsługa wirtualizacji w procesorach graficznych GeForce nie jest wersją beta, a raczej rozwiązaniem firmy NVIDIA, które po prostu odhaczyło pole, aby odblokować funkcję, która istniała od dawna. Jednak funkcja GPU Passthrough jest nadal ograniczona do pojedynczej instancji GPU, co oznacza, że tylko maszyna wirtualna będzie miała wyłączny dostęp do karty graficznej.
Jeśli chodzi o vGPU, niestety, o ile nie zdecydujesz się na pełne wdrożenie Enterprise, NVIDIA nadal nie obsługuje współdzielenia GPU z wieloma maszynami wirtualnymi, tak jak robią to producenci procesorów. Jeśli użytkownik potrzebuje więcej maszyn wirtualnych do dostępu do tego samego GPU, wymagane będą karty graficzne Tesla lub Quadro. Może to jednak ulec zmianie w przypadku funkcji passthrough dla GPU. Obecnie dostępne jest oprogramowanie do testowania możliwości vGPU, ale oczywiście jego obsługa nie jest oficjalna.




Amazon