Czy zintegrowany układ GPU może być współdzielony między maszynę wirtualną a kontenery hosta?

Eva Wong jest Technicznym pisarzem i stałym majsterkowiczem w ZimaSpace. Całe życie geek z pasją do homelabów i oprogramowania open-source, specjalizuje się w tłumaczeniu skomplikowanych koncepcji technicznych na przystępne, praktyczne przewodniki. Eva wierzy, że samodzielne hostowanie powinno być zabawą, a nie czymś onieśmielającym. Poprzez swoje samouczki umożliwia społeczności rozwiewanie tajemnic konfiguracji sprzętu, od budowy pierwszego NAS po opanowanie kontenerów Docker.

Czasami. Pełny passthrough PCI przekazuje maszynie wirtualnej całą zintegrowaną kartę graficzną, więc kontenery hosta zwykle tracą do niej dostęp. Współdzielenie wymaga obsługi sprzętowej i sterowników dla urządzeń mediowanych, Intel GVT-g na niektórych starszych platformach lub funkcji wirtualnych SR-IOV na obsługiwanych nowszych platformach.

Dostęp kontenerów to osobna warstwa: kontenery zwykle współdzielą jądro hosta i korzystają z urządzeń renderujących, takich jak `/dev/dri/renderD128`. Maszyna wirtualna potrzebuje zwirtualizowanej funkcji GPU lub urządzenia mediowanego, a nie tego węzła urządzenia hosta. To rozróżnienie określa bezpieczną konfigurację, metodę weryfikacji i punkt wycofania zmian.

Określ tryb wirtualizacji obsługiwany przez platformę

Zacznij od ustalenia dokładnej generacji procesora, identyfikatora PCI iGPU, oprogramowania układowego, jądra hosta i sterownika. Poradnik dotyczący jednej generacji procesorów Intel może nie mieć zastosowania do innej, a niektóre metody współdzielenia zostały wycofane lub wymagają modułów spoza głównego drzewa.

Jeśli obsługiwany jest tylko pełny passthrough, wybierz maszynę wirtualną albo hosta jako użytkownika akceleracji. Nie oczekuj, że kontener hosta zachowa Quick Sync po odłączeniu sterownika hosta.

Jeśli obsługiwane są SR-IOV lub urządzenia mediowane, pozostaw funkcję fizyczną na hoście i przypisz maszynie wirtualnej funkcję wirtualną lub urządzenie mdev. Przed uznaniem rozwiązania za gotowe do użytku produkcyjnego potwierdź działanie resetowania i sterowników.

Korzystaj z sygnałów dotyczących możliwości i obciążenia

Sprawdź, czy host nadal udostępnia węzeł renderujący i czy maszyna wirtualna widzi przypisany jej wirtualny układ GPU. Uruchom sprzętowe dekodowanie lub kodowanie w obu środowiskach, zamiast polegać wyłącznie na wykazach urządzeń.

Podczas jednoczesnego transkodowania monitoruj wykorzystanie silników GPU, błędy, presję pamięci i logi jądra. Współdzielenie zasobów nie gwarantuje przewidywalnej wydajności ani obsługi kodeków.

Skorzystaj z poniższej tabeli, aby wybrać bezpieczny model działania.

Zaobserwowany stan Wniosek Następne działanie
Pełny passthrough PCI Wyłączne użycie przez maszynę wirtualną Kontenery hosta tracą iGPU
Obsługiwane mdev/GVT-g Współdzielone fragmenty Zależne od generacji
Obsługiwane SR-IOV PF na hoście, VF dla maszyny wirtualnej Zweryfikuj cykl życia sterownika

Skonfiguruj minimalne uprawnienia i kontroluj aktualizacje

Przyznawaj kontenerom hosta wyłącznie dostęp do urządzenia renderującego i wymagane uprawnienia grup, bez szerokiego dostępu uprzywilejowanego. W maszynie wirtualnej zainstaluj sterownik zgodny ze zwirtualizowaną funkcją i zachowaj możliwość renderowania programowego na potrzeby konserwacji.

Przypnij działające kombinacje jądra i sterownika do czasu, aż kolejna aktualizacja przejdzie testy w środowisku laboratoryjnym. Eksperymentalne moduły SR-IOV mogą przestać działać po aktualizacji jądra lub oprogramowania układowego, dlatego udokumentuj czynności związane z usuwaniem i odzyskiwaniem.

Przegląd rozszerzeń GPU urządzenia ZimaCube przygotowany przez ZimaSpace: przegląd rozszerzeń GPU urządzenia ZimaCube.

Niezależny poradnik współdzielenia GPU w homelabie omawia pełny passthrough, urządzenia mediowane i SR-IOV.

-15% OFF

Powtórz testy po ponownym uruchomieniu i przy jednoczesnym obciążeniu

Uruchom hosta z zimnego startu, najpierw uruchom kontenery, a następnie maszynę wirtualną; powtórz test w odwrotnej kolejności. Obie ścieżki powinny działać ponownie bez ręcznego ponownego przypisywania sterownika.

Uruchom rzeczywiste jednoczesne obciążenie wystarczająco długo, aby wykryć dławienie termiczne i błędy resetowania. Następnie uruchom ponownie maszynę wirtualną bez restartowania hosta i potwierdź, że kontenery zachowują akcelerację.

Kontynuuj tylko wtedy, gdy dokładna platforma obsługuje tryb współdzielenia i przechodzi testy jednoczesnego obciążenia oraz ponownego uruchamiania. Zatrzymaj się, jeśli host utraci węzeł renderujący, maszyna wirtualna nie może się zresetować lub rozwiązanie zależy od nieutrzymywanego sterownika, którego nie można bezpiecznie przypiąć do konkretnej wersji.

Wsparcie i wskazówki

Więcej do przeczytania

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.