Van az a pillanat, amikor az asztali géped több teljesítményt nyújt, mint amennyit egyetlen Windows vagy Linux rendszerrel ki tudnál hozni belőle. Évek óta kísérletezem a szerverekkel és a virtualizációval, de a GPU-virtualizáció otthon: így ossz meg egyetlen videokártyát egyszerre négy operációs rendszer között PCI passthrough technológiával, még mindig a technikai bütykölés csúcsa. Nemcsak pénzt spórolsz meg azzal, hogy nem kell négy külön gép a házba, hanem a hardver kihasználtsága is végre eléri azt a szintet, amit a specifikációk ígérnek.
Sokan kérdezik tőlem, miért nem elég egy egyszerű virtuális gép. A válasz a nyers erőben és a közvetlen hardverelérésben rejlik. Egy hagyományos virtuális gép szoftveresen emulált grafikát használ, ami arra elég, hogy böngéssz vagy dokumentumokat szerkessz. Ha viszont 3D renderelésre, videóvágásra vagy akár játékra vágysz több rendszer alatt, a PCI passthrough az egyetlen járható út.
A technológia lényege, hogy a gazdagép (host) elrejti a videokártyát az alaprendszer elől, és közvetlenül átadja azt az egyik virtuális gépnek. Így az operációs rendszer azt hiszi, hogy egy dedikált hardverbe dugott kártyán dolgozik. Amikor pedig ezt több rendszer között osztjuk el, vGPU vagy mdev alapú megoldásokkal, az álomból valóság lesz.
Mielőtt belevágnál a konfigurálásba, néhány dolognak stimmelnie kell a gépházban. Nem minden alkatrész szereti a virtualizációt, ezért a választásnál érdemes figyelni a részletekre.
A legtöbb szakértő Proxmoxot vagy egy tiszta Arch/Debian alapot használ KVM-mel és QEMU-val. Én személy szerint a Proxmoxra esküszöm, mert a webes felülete rengeteg időt spórol meg, és a konfigurációs fájlok kezelése is átláthatóbb.
Az operációs rendszerek elosztásakor fontos, hogy legyen egy stabil host, ami nem igényel grafikát. Így a kártya teljes kapacitását a négy vendégrendszer között oszthatod el. Ne feledkezz meg a megfelelő IOMMU paraméterek bekapcsolásáról a GRUB bootloaderben, mert anélkül az egész kártyaátadás kudarcba fullad.
Amikor a négy rendszer osztozik egyetlen GPU-n, a legnagyobb kihívás a sávszélesség és a memória kezelése. A legtöbb vGPU megoldás a memóriát szeletekre vágja. Ha egy 8 GB-os kártyád van, négy gép esetén mindenki 2 GB VRAM-ot kap.
Sok kezdő beleesik abba a hibába, hogy túl sok erőforrást akar adni egyszerre minden gépnek. A rendszer összeomlása vagy a fagyások általában a memória-túlfoglalásból vagy a processzorszálak ütközéséből adódnak. Mindig hagyj egy kis tartalékot a gazdagépnek, hogy a rendszer alapszolgáltatásai zökkenőmentesen fussanak.
A GPU-k nem mindig szeretik, ha újraindítod a virtuális gépeket. Előfordulhat, hogy a kártya nem áll vissza alapállapotba, és egy hardveres resetre van szükség a gépen. Ezt a problémát gyakran az ACPI-táblák javításával vagy specifikus QEMU scriptekkel lehet kezelni, amik resetelik a kártyát a gép leállítása után.
Ha egyszer belövöd a rendszert, olyan, mintha egy szuperkomputeren ülnél. A billentyűzet és az egér megosztása a négy gép között szoftveresen, például Barrier vagy Synergy használatával megoldható, így egyetlen perifériakészlettel vezérelheted mind a négy operációs rendszert, mintha csak négy monitorod lenne egymás mellett.
Érdemes rendszeres mentéseket készíteni a virtuális gépek konfigurációs fájljairól. Egy rosszul sikerült frissítés a hoston könnyen elviheti az összes GPU-konfigurációt, és órákba telhet, mire újra összelegózod a kártya szétosztását.
Összességében a GPU-virtualizáció otthoni keretek között nem a kezdők játékszere, de ha szeretsz a géptér motorházteteje alatt bütykölni, ennél izgalmasabb projektet nehéz találni. A végeredmény egy olyan hardverpark, ami tényleg azt tudja, amire tervezték. Amikor látod, hogy egyszerre fut egy Windows a játékoknak, egy Linux a fejlesztéshez és két másik rendszer valamilyen tesztelésre, mindezt egyetlen videokártyával, az az igazi technikai sikerélmény.