PowerEdge: Błąd "Module 'DevicePowerOn' Power On Failed" przy przekazywaniu PCI podczas korzystania z GPU z maszynami wirtualnymi w oprogramowaniu vSphere
Summary: Maszyna wirtualna nie włącza się po skonfigurowaniu przekazywania urządzenia PCI na hoście ESXi i dodaniu urządzenia do maszyny wirtualnej. Zatrzymuje się na poziomie 80%, a następnie pojawia się błąd "całkowita liczba potrzebnych stron (4206594) przekracza limit (917504)". ...
Instructions
2022-04-22T03:04:15.771Z| vmx| | I005: PCIPassthru: total number of pages needed (4206594) exceeds limit (917504), failing 2022-04-22T03:04:15.771Z| vmx| | I005: Module 'DevicePowerOn' power on failed.

Uwagi wstępne
System BIOS hosta musi być prawidłowo skonfigurowany w celu włączenia GPU NVIDIA do przekazywania, a maszyna wirtualna przeznaczona do uruchamiania tych przyspieszonych obciążeń roboczych musi spełniać określone wymagania. W tej sekcji opisano wszystkie te wymagania.
Które urządzenia?
Ten artykuł ma zastosowanie tylko wtedy, gdy urządzenie PCI mapuje regiony pamięci, których rozmiar przekracza 16 GB. Postępuj zgodnie z opublikowanymi instrukcjami bazy wiedzy VMware 1010789, aby włączyć przekazywanie urządzeń w oprogramowaniu vSphere. Z reguły karty wymagające ponad 16 GB mapowania pamięci to karty klasy wyższej. Postępuj zgodnie z instrukcjami zawartymi w tym artykule, aby umożliwić korzystanie z nich w trybie przekazywania w maszynie wirtualnej.
System BIOS hosta
System BIOS hosta musi być skonfigurowany do obsługi dużych regionów pamięci wymaganych przez te urządzenia PCI klasy wyższej. Aby włączyć tę funkcję, znajdź ustawienie systemu BIOS hosta dla opcji „odwzorowane w pamięci we/wy powyżej 4 GB” i włącz je.

Uwaga: Ta opcja nie jest dostępna w przypadku procesorów 16G, ale domyślnie jest aktywna i można przydzielić 48 GB procesora GPU w ramach przekazywania do maszyny wirtualnej.
System operacyjny gościa
Aby uzyskać dostęp do tych dużych mapowań pamięci, połącz się z witryną VMware System operacyjny gościa musi zostać uruchomiony za pomocą interfejsu EFI
Edytowanie dostępności urządzeń PCI na serwerze hosta
Zainstalowane urządzenie sprzętowe GPU zgodne z PCI jest początkowo rozpoznawane przez monitor maszyn wirtualnych vSphere podczas rozruchu serwera bez żadnych sterowników zainstalowanych w monitorze maszyny wirtualnej.
vSphere rozpoznaje w ten sposób wszystkie urządzenia PCI. Listę urządzeń PCI, które znajdują się w narzędziu vSphere Client, można wyświetlić, wybierając serwer hosta, na którym pracujesz, a następnie postępując zgodnie z opcjami wyświetlanymi w menu: Konfigurować >Sprzęt >Urządzenia > PCI Edytuj, aby wyświetlić listę, jak pokazano w przykładzie na rysunku 2 poniżej.
Jeśli dane urządzenie GPU nie zostało wcześniej włączone dla DirectPath I/O, możesz umieścić urządzenie GPU w trybie Direct Path I/O (passthrough), klikając pole wyboru we wpisie urządzenia, jak pokazano w przykładzie urządzenia NVIDIA.

Włączanie urządzeń klasy wyższej w pliku maszyny wirtualnej
Po spełnieniu powyższych wymagań do pliku VMX maszyny wirtualnej należy dodać dwa wpisy, modyfikując plik bezpośrednio lub używając klienta vSphere w celu dodania tych możliwości. Pierwszy wpis to:
pciPassthru.use64bitMMIO="TRUE"
Określenie drugiego wpisu wymaga prostej kalkulacji. Podsumuj rozmiary pamięci GPU wszystkich urządzeń GPU(*), które mają być przekazywane do maszyny wirtualnej, a następnie zaokrąglij do kolejnej potęgi dwójki. Na przykład, aby użyć przekazywania z 4 urządzeniami A2 16 GB, wartość powinna być następująca: 32 + 32 = 64, zaokrąglone do kolejnej potęgi dwójki z wynikiem 128. Użyj tej wartości w drugim wpisie:
pciPassthru.64bitMMIOSizeGB="128"
W przypadku tych dwóch zmian w pliku VMX postępuj zgodnie ze standardowymi instrukcjami vSphere bazy wiedzy VMware 1010789, aby włączyć przekazywanie urządzeń na poziomie hosta i określić, które urządzenia powinny być przekazywane do maszyny wirtualnej. Maszyna wirtualna powinna teraz poprawnie uruchomić się z urządzeniem w trybie przekazywania.
Włączanie urządzeń klasy wyższej w interfejsie użytkownika
Ponownie w kliencie vSphere Client wybierz maszynę wirtualną i skorzystaj z opcji: Edytuj ustawienia>Opcje> maszyn wirtualnychZaawansowany> Parametry >konfiguracyjneEdytuj konfigurację, aby przejść do listy opcji związanych z interfejsem PCI przedstawionej poniżej.

Obliczamy wartość parametru „64bitMMIOSizeGB” przy użyciu prostego podejścia. Policz liczbę urządzeń GPU PCI klasy wyższej, które mają być przekazywane do tej maszyny wirtualnej. Może to być jedno lub więcej urządzeń GPU. Pomnóż tę liczbę razy 16 i zaokrąglij ją do kolejnej potęgi dwójki.
Na przykład, aby użyć trybu przekazywania z dwoma urządzeniami GPU w jednej maszynie wirtualnej, wartość powinna być następująca: 4 * 16 = 64, zaokrąglone do kolejnej potęgi dwójki, co daje 128.
Przypisywanie urządzenia GPU do maszyny wirtualnej
W tej sekcji opisano przypisanie urządzenia GPU do maszyny wirtualnej. Wyłącz maszynę wirtualną przed przypisaniem do niej urządzenia GPU.
Aby umożliwić maszynie wirtualnej dostęp do urządzenia PCI, w kliencie vSphere wybierz maszynę wirtualną, użyj opcji Edit Settings i przewiń w dół do listy urządzeń PCI. Jeśli urządzenie nie znajduje się jeszcze na liście, użyj przycisku Dodaj nowe urządzenie, aby dodać je do listy. Po dodaniu, ustawienia maszyny wirtualnej powinny wyglądać podobnie do tych przedstawionych na rysunku 7. W tym przykładzie odpowiednim wpisem jest PCI Device 0.

Rezerwacja pamięci
Po przypisaniu urządzenia PCI do maszyny wirtualnej, maszyna wirtualna musi mieć rezerwację pamięci dla pełnego skonfigurowanego rozmiaru pamięci maszyny wirtualnej. Odbywa się to w kliencie vSphere poprzez wybranie maszyny wirtualnej przy użyciu opcji Edytuj>ustawienia wirtualnej pamięci sprzętowej>, aby uzyskać dostęp do wartości w obszarze Reservation i ją zmienić.
Na koniec włącz maszynę wirtualną. Po włączeniu maszyny wirtualnej zaloguj się do systemu operacyjnego gościa i sprawdź, czy karta GPU jest obecna, używając poleceń:
- W maszynie wirtualnej Linux użyj polecenia:
"lspci | grep nvidia"
- W systemie operacyjnym Windows użyj Menedżera urządzeń w Panelu sterowania , aby sprawdzić dostępne urządzenia GPU
Urządzenie GPU jest teraz gotowe do użytku w trybie przekazywania aplikacji.
Additional Information
Rozwiązywanie problemów
Jeśli użytkownik postępował zgodnie z powyższymi instrukcjami, a maszyna wirtualna nadal nie uruchamia się prawidłowo z włączonymi urządzeniami, pomocne mogą być materiały zawarte w tej sekcji. Jeśli po wypróbowaniu poniższych sugestii nadal występują problemy, skontaktuj się z nami
.Problem z mapowaniem:
Jeśli w pliku vmware.log maszyny wirtualnej zostanie wyświetlony błąd podobny do następującego:
1 I120: PCIPassthru: 0000:82:00.0 : Device BAR 0 requested 64-bit memory address that exceeded MPN type (62105227100160)
Ustawienia systemu BIOS nie spełniają wymagań oprogramowania ESXi dotyczących włączania tego typu urządzenia przekazywania. ESXi 6.0 p4 do ESXi 6.5 wymaga, aby pamięć zmapowana dla urządzeń PCI była poniżej 16 TB. Może być możliwe obejście tego problemu, jeśli system BIOS obsługuje możliwość kontrolowania wysokości mapowania regionów pamięci PCI w przestrzeni adresu pamięci hosta. Niektórzy producenci, np. SuperMicro, mają opcje systemu BIOS, które umożliwiają zmianę wysokości mapowania tej pamięci. W systemach SuperMicro parametr MMIOHBase można zmienić na wartość niższą niż domyślna 56 TB. Systemy Sugon również mają podobne (ukryte) ustawienie systemu BIOS. Skontaktuj się z dostawcą systemu, aby dowiedzieć się, czy system BIOS obsługuje tę funkcję ponownego mapowania. Innym rozwiązaniem jest aktualizacja systemu ESXi do wersji 6.5 u1 lub nowszej, która usunęła ograniczenie 16 TB.
Nieprawidłowa konfiguracja:
błąd w pliku vmware.log w następującej postaci:
1 2016-07-07T09:18:37.624Z| vmx| I120: PCIPassthru: total number of pages needed (2097186) exceeds limit (917504), failing
Oznacza, że nie włączono poprawnie mapowań powyżej 4 GB w systemie BIOS hosta zgodnie z opisem w sekcji System BIOS hosta powyżej lub nie określono poprawnie wpisów VMX.
Nie można użyć urządzenia:
Jeśli wykonano wszystkie powyższe instrukcje i maszyna wirtualna uruchomiła się poprawnie, ale podczas uruchamiania nvidia-smi w systemie operacyjnym gościa:
1 Unable to determine the device handle for GPU 0000:13:00.0: Unknown Error
Zalecamy bezpośredni kontakt z firmą NVIDIA lub przeprowadzenie wyszukiwania w Internecie za pomocą tego ciągu znaków w celu znalezienia dodatkowych informacji, które mogą być pomocne.