Cookies op Tweakers

Tweakers is onderdeel van DPG Media en maakt gebruik van cookies, JavaScript en vergelijkbare technologie om je onder andere een optimale gebruikerservaring te bieden. Ook kan Tweakers hierdoor het gedrag van bezoekers vastleggen en analyseren. Door gebruik te maken van deze website, of door op 'Cookies accepteren' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt? Bekijk dan ons cookiebeleid.

Meer informatie

Nvidia test gpu-passthrough voor Windows-vm's met consumentenvideokaarten

Nvidia heeft een bètadriver uitgebracht die gebruikers een GeForce-videokaart laat gebruiken bij het starten van een Windows 10-virtuelemachine. Voorheen was deze gpu-passthrough alleen mogelijk bij bijvoorbeeld Tesla- en Quadro-gpu's.

De gpu-passthrough werkt met bètadriver R465 en desktop-Kepler-kaarten of hoger, maakt Nvidia bekend. Voor laptop-gpu's is minstens een Maxwell-kaart nodig. Vooralsnog wordt de passthrough alleen ondersteund bij Windows 10-virtuelemachines. Nvidia zegt niet waarom het alleen voor dit OS werkt en of dit in de toekomst zal veranderen.

Met de update blijft single-root input/output virtualization, of SR-IOV, niet beschikbaar voor de GeForce-kaarten. Computers hebben daarnaast nog steeds twee gpu's nodig; eentje voor de host-pc en een voor de Windows-vm.

Nvidia zegt dat deze functie handig kan zijn voor gebruikers die normaliter Linux draaien, maar via Windows spellen willen spelen. Ook voor gameontwikkelaars kan de functie nuttig zijn, wanneer ze Linux- en Windows-code op één machine willen testen, schrijft Nvidia. Voorheen konden gebruikers met één GeForce-kaart die een Windows-vm wilden draaien, alleen de geïntegreerde gpu van een pc gebruiken in die vm.

Wat vind je van dit artikel?

Geef je mening in het Geachte Redactie-forum.

Door Hayte Hugo

Nieuwsredacteur

01-04-2021 • 19:45

41 Linkedin

Submitter: superjuul99

Reacties (41)

Wijzig sortering
Eindelijk laat Nvidia deze beperkingen los. 11 jaar geleden werkten wij druk samen met Intel en Nvidia aan GPU passthrough en waren de eerste die dit naar de markt brachten. Er waren toen een hoop problemen met Vt-D (moederbord problemen), bugs in Xen (KVM was nog niet geschikt).

Nvidia wilde voornamelijk voorkomen dat Amazon, Google en andere grote jongens Geforce kaarten in data centers gingen gebruiken. Wij kregen toen special Geforce kaarten van Nvidia (met andere IDs) om GPU passthrough te kunnen gebruiken. Er was niks anders dan een lang if-statement in de kernel driver. Uiteindelijk vonden mensen workarounds om de VM te verbergen. Dit werd dan ook een wapenwetloop, waarbij Nvidia VMs ging detecteren.

Ik ben blij dat de beperkingen nu opgeheven zijn. Ati/AMD hadden nooit deze beperkingen ook 11 jaar geleden niet... Nu zijn de voornaamste beperkingen aan de video encoder. Dat is wat velen die GPU passthrough in data centers gebruiken naar op zoek zijn. (video encoder voor remote desktops en cloud gaming).

[Reactie gewijzigd door thunderbird2k op 1 april 2021 20:10]

Nu zijn de voornaamste beperkingen aan de video encoder. Dat is wat velen die GPU passthrough in data centers gebruiken naar op zoek zijn. (video encoder voor remote desktops en cloud gaming).
Wat ook gewoon een beperking vanuit de driver is (zowel voor Linux als Windows). Hopelijk is deze beperking ook van tijdelijke aard.
Zie bijvoorbeeld https://github.com/keylase/nvidia-patch ;)

[Reactie gewijzigd door CH4OS op 1 april 2021 21:18]

Heb dit ook gehad, en was er eerlijk gezegd niet van op de hoogte en dacht 'dit kan gewoon'. Zodra je de Geforce driver ging installeren en een herstart deed liep ESXI vast etc (PSOD). Ik had nog een R7 280X liggen en die werkte gelijk (Met externe voeding voor PCI-E power). Later een 2de hands Quadro kaartje gekocht (35 euro) en werkte gelijk.

Nog met 'gehackte' drivers lopen knoeien maar dat was geen succes. Na wat verder zoeken kwam ik een berg aan posts tegen dat het stom was van Nvidia etc.

Jammer dat het zo lang geduurd heeft, ik zou graag een GTX1050 (75 watt) kaartje willen in mijn ESXI server.
Hm, ik was altijd van gedachten dat het toch kon als je een bepaalde parameter in ESXi meegaf.

Na even grafen:
Als je de VM de volgende parameter meegeeft zou het moeten werken:

Hypervisor.CPUID.v0 = “FALSE”

Kwam die oplossing meerdere keren tegen bij googelen van een ander passthrough probleem.
Heb alles geprobeerd, error 43 of PSOD. Helaas maar als de nieuwe driver er is dan kan ik de 1050 weer uit de kast trekken.
Ik volg de logica van die argumenten niet helemaal. Waarom zou je een Geforce kaart kopen en dan dingen doen die niet met een Geforce kaart kunnen? En wat is nu nog de grote reden om een niet-Geforce kaart aan te schaffen?
Nou ja, als je Linux draait en voor games met vervelende DRM Windows nodig hebt, is het niet ongebruikelijk om de videokaart tijdelijk te koppelen aan de VM om het spel te spelen.

Het kan overigens al wel met wat trucs, onder andere het patchen van de Nvidia driver om de kaart niet te weigeren. De hardware kan het prima, maar de software beperkt wat je er in de praktijk mee kan.

Zo heb je ook een kunstmatige beperking op de hoeveelheid videoencoders en -decoders. In de hardware zitten veel meer cores, maar de software beperkt dat, tenzij je de driver laat denken dat je een dure videokaart hebt. Best handig voor goedkoop en efficiënt een terminal server hosten, RDP met h.264-acceleratie voor een derde van de prijs; leuk voor je thuisserver.

De gedachte "koop dan een Quadro" is precies waarom Nvidia hun drivers zo beperkt.
Is er een manier om te zien welke hardware video codecs je hebt, en welke uitgeschakeld zijn?
Qua codecs is de support overal gelijk (Nvidia en AMD zijn nog steeds extreem beperkt vergeleken met Intel, Qualcom, Apple, etc. maar goed). Het gaat om het aantal hardware encoding/decoding units van NVENC. De officiële, software-beperkte getallen en de ondersteunde codecs per stream kun je hier vinden.

Met een tool als deze (video met uitleg) kun je de limiet van 2 of 3 (afhankelijk van je kaart en driver) compleet weghalen. Nvidia heeft zelf voor consumentenkaarten deze limiet al stilletjes met één verhoogd.

Wat de echte limiet is per kaart, is lastig te zeggen volgens mij. Nvidia geeft je in elk geval de getallen die in de driver staan. Het probleem is dat je output slechter wordt zodra de GPU het allemaal niet meer bijbeent. Op internet kun je resultaten vinden van mensen die met een GTX 650 zo'n vier 1080p streams kunnen encoden, dus op een moderne GPU zal dat wel beter geregeld zijn.

De truc om te bepalen wat de max is, komt eigenlijk gewoon neer op proberen tot je foutmeldingen krijgt of tot de output er raar uitziet. Als je een plex-, emby- of jellyfinserver draait, of als je veel video encode/decode op de GPU is het dus de moeite waard hier eens naar te kijken, zolang je in je achterhoofd houdt dat je nog steeds beperkt bent door de limits van de hardware.
Ah, ik begreep je verkeerd:
Zo heb je ook een kunstmatige beperking op de hoeveelheid videoencoders en -decoders.
Ik dacht dat je hier bedoelde dat de hardware bijvoorbeeld 10 verschillende codecs ondersteunde maar er softwarematig 5 waren uitgeschakeld. Dat je bijvoorbeeld softwarematig h265 zit te encoden terwijl de hardware dat stiekem ook kan.

Je bedoelt dat je maximaal 2 (of 3) video's tegelijk kan encoden. Stiekem wist ik dat al, maar je uitleg hierover plus de link naar de workaround is sowieso een +2 waard.
Oh het is niet dat het niet kón hoor...

Het is letterlijk één klein config veldje aanpassen in je hypervisor en voilá het werkt.

Tof dat Nvidia het nu 'officieel' ondersteunt, en op deze manier ook mensen toestaat om het te doen zonder een 'workaround' te moeten doen (met mogelijk negatieve gevolgen van dien (citation needed)), maar om dit nou echt een enorme vooruitgang te noemen?..

Wat 'testen' ze dan? Er zit praktisch geen verschil tussen Quadro/RTX kaarten wat de kern functionaliteit betreft.. het is enkel een driver verschil waar de Quadro NIET een check doet om te kijken of het in een VM runt en de RTX kaart wél (en vervolgens de gebruiker een error toont en op z'n buik gaat liggen).
Nou kan zeggen dat het meer is hoor. je moet de xml van de vm editen met bepaalde regels zodat de vm niet zichtbaar word voor de kaart.
Verder is voor sommige serie nvidia kaarten ook een rom file benodigd die je zelf moet maken en in moet passen in de xml file.
Edid emulation zit helaas alleen op quadro kaarten. Echt de enige feature waarvooor ik een quadro kaart aan het zoeken ben.
Deze truukjes gaven bij mij Error 43/PSOD zowel met ESXI 6.7 als 7.0 helaas. Uiteindelijk een simpel Quadro kaartje aangeschaft om te kijken wat het doet.
Support dat is alles, want daar betaal je voor.
ECC in registers, L1 en L2 cache van een Tesla/quadro kaart bijvoorbeeld. Dat zie je bij Geforce kaarten alleen terug in het Vram geheugen.
Ja ok, maar de use-case is toch wel een stuk kleiner van die kaarten de laatste jaren?
Juist niet, als ik naar de verkoop cijfers kijk van Nvidia dan is de Datacenter tak met 124% gegroeid naar $6.70 billion tegenover vorig jaar. Voor de normale huis tuin en keuken gebruiker die af en toe een video in elkaar zet heb je die features echt niet nodig inderdaad.
En een sloot geheugen in veel gevallen.
De reden waarom je een quardro nodig hebt is nog steeds de hoeveelheid vram. Een concument zal niet snel 24gb gebruiken.
Nog steeds niet echt praktisch:

- Je hebt meerdere video kaarten nodig en je moet gaan lopen klooien met de limitaties van HDMI/Displayport want de meeste (high-end monitoren) hebben maar net 1 primary poort die net de bandbreedte van de specs van je monitor aan kan.

- Dus of je accepteert op een van de twee een lagere refreshrate o.i.d, of je moet gaan klooien met KVM's die niet bestaan of bar slecht werken.

- Anti-cheat blijft een probleem in virtual machines met GPU passthrough want blijkbaar is dit het grootste probleem van de anti-cheat efforts (Not). Success met veel multiplayer games met aggressieve anti-cheat die nog steeds cheats door laten maar VM's niet.

- Je kan volgens mij wel je beeld doorgeven van VM naar Host met een tooltje (Eigenlijk via shared geheugen o.id.) maar dat is ook niet ideaal, geen G-sync support en milliseconden aan input lag.
Gewoon een soort remote desktop view met alle bijkomende limitaties.

Leuk begin, maar voorlopig is dit echt nog geen oplossing voor mensen die gewoon native Linux willen draaien met 99.999% Windows performance gaming in een VM.

[Reactie gewijzigd door Marctraider op 1 april 2021 20:29]

Ik heb een andere use-case. Namelijk, wij hebben hier thuis jarenlang met twee personen op één desktop PC gewerkt d.m.v. twee VM's met GPU passthrough. Ik speel spelletjes, mijn vrouw doet alleen maar browser/office werk. Destijds vond ik het kostenefficienter om iets betere hardware te kopen, die geschikt was voor twee VM's, dan twee losse desktops.

(nu alweer een oud beestje)

- Arch Linux
- i7 quad+hypercores (6 cores naar mij, 2 naar haar)
-16GB RAM (10 naar mij, 4 naar haar, 2 voor het Linux OS)
- 2 videokaarten met eigen monitor (GTX1060 voor mij, fanless GT740 voor haar) + onboard voor linux (zonder monitor)
- Allebei een dedicated partitie op een gedeelde SSD
- twee muizen/toetsenborden, bepaalde usb poorten statisch naar mij en haar (in de praktijk gebruiken we altijd de hubs in onze monitoren)

Dit heeft jarenlang voor beiden naar tevredenheid gewerkt, op een bepaald moment ben ik wel gestopt met het Linux OS actief gebruiken/updaten/wijzigen om de VM's stabiel te houden (requirement van de vrouw).

[Reactie gewijzigd door Patrick4 op 1 april 2021 21:00]

Deze functionaliteit is vooral voor NVENC en virtuele machines die hardware transcoding via de GPU willen gaan doen. Gaming op een VM kent nog wel meer issues. ;) Niet alles wat Nvidia maakt en doet is gericht op de gamer.
Grappig, want ik doe exact dit dus al sinds 2015.

Deze klachten komen altijd van mensen die voor een dubbeltje op de eerste rang willen zitten. Ja, het kost wat meer geld voor het premium moederbord met de betere chipset, de betere CPU met meer PCIe lanes. En ja, het kost moeite, en je moet je inlezen, het is zeker niet turnkey. Hoe goed het werkt heb je grotendeels zelf in de hand.

Maar als 't werkt, dan werkt 't, en is je performance prima. Met als enige kanttekening dat ik games die dat soort aggressieve anti-cheat gebruiken (dat zijn er momenteel bij mijn weten exact 5, uit de honderden populaire titels die er bestaan) gewoon links laat liggen, die zijn m'n geld niet waard.
Ach met wat kunstgrepen kon dit allemaal al. Niks nieuws onder de zon. Word alleen maar makkelijker.
Inderdaad, ik heb zelf een QEMU KVM met Windows 10 en GPU passthrough van een RTX 3080. Werkt als een zonnetje, geen enkel probleem. Letterlijk het enige dat ik moest doen is de vendor id van de hypervisor op iets willekeurigs zetten en de voor de guest verbergen dat ie onder kvm draait. Dus niet echt groot nieuws dit, de vraag is waarom ze het überhaupt nodig vonden om dit te beperken als het zo makkelijk te omzeilen is.
de vraag is waarom ze het überhaupt nodig vonden om dit te beperken als het zo makkelijk te omzeilen is.

Omdat Nvidia het niet zo enorm veel boeit dat Jan de Particulier dit op zijn thuisservertje doet.
Wat ze wél boeit is dat Paul de Datacenter Architect 1000 quadro kaarten koopt in plaats van GTX/RTX kaarten omdat zijn klant 'officiële ondersteuning' 'nodig heeft' en niet schrikt van een paar extra nulletjes op een offerte. :+
ik moet zeggen dat ik het nog nooit geprobeerd heb maar ik dacht altijd dat je gewoon de pci-e poort kon blacklisten in het host-OS en dan kon toewijzen aan de VM,

ik zou wel iets meer 'diepgang' willen over het hoe en waarom van dit alles, wat brengt deze driver nu precies en hoe werkte (of niet) dit voorheen?
Nou kan je wel enlighten enige verschil is nu dat je de vm nu niet onzichtbaar hoeft te maken voor een nvidia kaart zodat de driver geen errror 43 gaat geven. Dat word nu weggenomen.
Mocht je dieper op de materie in willen graag ben je altijd welkom op de tweakers dscord of #softe-goederen

[Reactie gewijzigd door Cybermage op 1 april 2021 20:06]

Dit kan inderdaad bij overige pcie kaarten, maar Nvidia heeft dit voor de consumenten kaarten dus altijd geblokkeerd in de driver. Om dit wel te kunnen heb je speciale Nvidia Grid kaarten nodig waar je dan vervolgens ook nog eens per user een licentie voor mocht betalen. Dus buiten de 5k wat zo’n kaart kan kosten mocht je dat er ook nog eens bovenop betalen.

Voor hobby doeleinden en kleine projecten waar ECC geheugen en professionele driver support niet nodig is is dit dus geweldig nieuws.

AMD was hier dacht ik vrijer in qua driverbeperking/licenties.

Zelf heb ik ook wel een zitten spelen met een Nvidia Grid K2 kaart van ebay, deze kaart had nog niet de licentiebeperking dat je per user moet betalen. Alleen de support in de laatste vsphere ontbrak dan weer. In hyper-v 2016 heb ik het destijds wel werkend gekregen via DDA.

[Reactie gewijzigd door Pandanl op 1 april 2021 20:11]

Eerder was dat zo, dan moest de kaart op boot al aan VFIO worden gekoppeld. Tegenwoordig zijne r methodes om kaarten tussen host en guest te wisselen.

Voorgaande Nvidia drivers hadden subroutines die checkten of ze in een VM werden gebruikt. Dan gaven ze de errorcode 43. Dat is nu dus niet meer zo. Die subroutine is nu uitgezet.
Hoe is dit onder unRAID?
Unraid is geen Windows, die gebruikt andere binaries voor drivers. Dan zit dus gewoon een dergelijke check nog gewoon in de driver en kun je dus geen Geforce kaart gebruiken voor NVENC doeleinden.Of je moet die check er zelf uit slopen of weten te omzeilen.
For simplicity I’ll link the current patch.sh in a wget friendly format: https://raw.githubusercon...dia-patch/master/patch.sh

Login to unRAID on a terminal as root,

wget https://raw.githubusercon...dia-patch/master/patch.sh

chmod +x patch.sh

./patch.sh
Verify it patches on the output.

watch -n 0.2 nvidia-smi
This command allows you to see any process that is using your gpu. You should see plex transcoder show up.
Dit is wel voor een niche van een niche bedoelt. Ik bedoel, wie heeft er nu twee videokaarten in zijn computer én draait Linux? Niets mis mee hoor, dat had ik ook vroeger, toen ik nog zo'n half open toren naast mijn bureau had staan voor de hobby, maar het was niet echt gangbaar.

Wat we wel goed kunnen gebruiken, zowel op kantoor als als voor thuis, is single-root input/output virtualization (SR-IOV). Alleen dan kan je op een gewone niet-niche computer je (enige) videokaart delen met meerdere besturingssystemen, ongeacht of deze gevirtualiseerd zijn of niet. Zo kan je bijvoorbeeld Linux draaien en zonder te rebooten een Windowsprogramma starten (bijvoorbeeld de laatste Adobe software of het nieuwste spel) met native performance.

Het kan technisch gezien wel, maar dat is en blijft helaas geblokkeerd. NVidia is bang dat videostreaming of gamestreaming websites dan al hun servers van consumentenhardware gaan voorzien.

[Reactie gewijzigd door Redsandro op 2 april 2021 13:06]

Computers hebben daarnaast nog steeds twee gpu's nodig; eentje voor de host-pc en een voor de Windows-vm.
Niet per se. Je kan een videokaart tussen guest en host wisselen.
Leuk, op een moment dat kaarten niet te betalen zijn..... Maar werkt dit dan ook voor headless ESXI machines?
Jammer dat SR-IOV niet beschikbaar is gemaakt. Dat zou echt geweldig zijn!
1 videokaart voor meerdere VM's.
Passthrough werkt idd al een tijd.


Om te kunnen reageren moet je ingelogd zijn


Apple iPhone 12 Microsoft Xbox Series X LG CX Google Pixel 5 Sony XH90 / XH92 Samsung Galaxy S21 5G Sony PlayStation 5 Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True