Proxmox VE + NVIDIA = 🚀

I NVIDAs vGPU 18 release så dyker Proxmox VM upp på listan över supportade hypervisors. Tidigare så gick det såklart köra GPU:er, till och med vGPU:er i vissa fall, men det krävdes oftast PCIe passthrough av hela grafikkortet(vilket då innebär att bara en VM kan nyttja GPU:n). Man blev också helt utelämnad utan support från varken NVIDIA eller Proxmox.

Vad är vGPU?

vGPU-kvm

vGPU gör det möjligt att dela upp en fysisk GPU i flera mindre virtuella GPU:er. Det kan jämföras med att dela upp en fysisk CPU i många vCPU:er som man gör vid virtualisering.

Eftersom Proxmox VE bygger på KVM så kan man titta på arkitekturen för KVM för att skapa sig en bild över hur sakerna faktiskt fungerar. Implementationen för KVM bygger vGP bygger på SR-IOV där vGPU:er egentligen är ett gäng VF:er(Virtual Functions). Och delar på det sätter upp den fysiska GPU:n till flera mindre GPU:er. VFIO är en drivrutin som finns med i Linux kärnan och tillhandahåller ett ramverk för direct I/O exponering. NVIDIA har sedan sin egna VFIO-driver som ligger en nivå ovanpå detta och interagerar med core-drivern som hanterar kontakten med hårdvaran. Allt tillsammans resulterar i en fullt fungerande vGPU-lösning med stöd för live-migration och både heterogena och homogena GPU-uppsättningar vilket gör lösningen extremt flexibel.

Proxmox VE

Sätta upp vGPU i Proxmox är otroligt lätt. Mycket tack vare verktygen och dokumentationen som Proxmox tillhandahåller.NVIDIA vGPU on ProxmoxVE Deras guide kunde kanske vara något mer detaljerad, men överlag så kan man följa den från punkt a till b och få till en fullt fungerande vGPU. NVIDIA:s dokumentation för vGPU är också extremt bra och nyttig att titta på. vGPU on KVM NVIDIA o andra sidan är lite väl verbose ibland, så det kan vara svårt att hitta vad man leta efter. Men grymt användbar när man vill förstå hur sakerna fungerar, och hur man ändrar vissa speciella inställningar.

NVIDIA vGPU för KVM implementerar stöd för live-migration och Proxmox är inte sämre. Har man två hosts med GPU:er som kan presentera samma vGPU-profil så kan man flytta en vGPU guest mellan dessa hostar under drift. Möjligheten implementerades i Proxmox VE 9.1 och är fortfarande experimentell, så man ska nog vara lite försiktig om man vill nyttja detta just nu.

Testerna jag har gjort hittils har bara resulterat i lyckade migreringar utan några fel. Om man t.ex kör RDP mot en vGPU guest och kör en live migration upplever man en mycket kort freeze. Tittar man på loggarna så handlar det om runt 400-900ms glapp - och har inte resulterat i några krasher eller liknande. Förhoppningsvis går den ifrån experimental i 9.2 =)

Vad jag vet så finns det inget dåligt att säga om vGPU:er på Proxmox VE utan jag är förvånad över hur bra det fungerar. Man märker att det inte är någon hastig implementation från Proxmox(eller i KVM) utan något som har växt fram över tid. Likaså från NVIDIAs håll verkar allting stabilt, här är nog Proxmox mycket hjälpt av att det bygger på beprövad teknik (KVM). VIktigt att nämna kan också vara att man har full enterprise support OM man har supportavtal med NVIDIA och Proxmox.

Dags att njuta av “The Coolest 4K Video ULTRA HD 240FPS | Dolby Vision HDR 4K” på en GPU-accelererade Windows Server 2025. Framöver är det kanske dags för en kort guide för hur man sätter upp NVIDIA vGPU på Proxmox, där de delar jag saknade från dokumentatonen också finns med. ツ