Sdílená grafika s video výstupy pod VM

RDa

  • *****
  • 3 065
    • Zobrazit profil
    • E-mail
Sdílená grafika s video výstupy pod VM
« kdy: 05. 09. 2025, 22:23:30 »
Ahoj, mám tu silné cpu a silnou GPU (nvidia rtx aXXXX rada, tj. nastupce quadro) - a chci udělat multi-seat setup.

Dá se nasdílet grafika vícero virtuálům a zachovat jeden či dva video výstupy pro každou VM ?
(GPU má 4x DP, mám buď 4 monitory nebo 2+1 monitor co vyžaduje dva DP kabely)

Našel jsem zatím jen od NVidie vGPU - a to je o sdílení compute/memory resources.. neřeší to video výstup (CRTC?).

Jak by jste tento setup řešili po sw stránce, když nechci gpu passthrough a přiřadit celou kartu do jednoho VM ?
(a více karet pak dost popírá myšlenku konsolidace ... taky máme přece NAS, aby šlo sdílet storage.. cpu se sdílí.. ale co GPU ?)

Neříkejte že to GPU budu moci využít jen jako výpočetní, nebo jenom v hypervisoru (nebo jedné VM), která bude ostatní virtuálky s emulovanou grafikou zobrazovat a la vnc/spice.

Po dvou třech dekádách vývoje virtualizací bych čekal že řešení bude existovat.


Re:Sdílená grafika s video výstupy pod VM
« Odpověď #1 kdy: Dnes v 01:51:22 »
Ahoj. Co si pamatuju, tak tohle nikdy nefungovalo ani v jedné variantě toho virtualizačního mechanismu.
Jinými slovy, i když má karta fyzické výstupy (Quadro, RTX..), tak se po přepnutí do vGPU/GRID režimu vypnou.
A to jak u starších generací, co mají ty mdevy (virtuální grafiky přiřazené do virtuálů) emulované softwarově z jednoho PCIe zařízení, tak u novějších od Ampere (to máš ty) a dál, kde už je ta izolace po přepnutí řešená hardwarově přes SR-IOV a VF, jako třeba u síťovek.
Ani si vlastně nejsem jistý, jestli s fyzickým výstupem počítá NVIDIA GRID ovladač na virt. grafiku, který pak instaluješ do virtuálu. Pokud uděláš "obyčejné" PCI pass-thru celé karty, používáš normální ovladač bez licence a máš samozřejmě všechny výstupy. Jakmile je to v tom virtualizačním režimu, používá se na ty emulované karty ovladač jiný, který pak místo výstupu zachytává framebuffer, kóduje ho třeba přes NVENC a pouští přes daného VDI klienta (Jako např. Horizon u VMWare nebo speciální build KVM/QEMU s DCV VNC serverem, nechodí to se standardním Spice)
Ale také si po každém spuštění daného virtuálu průběžně kontroluje licenci on-line. A ta není úplně levná - řekněme 250 dolarů ročně za rok, pokud chceš virtuální RTX - workstation třídu, tzn. třeba zaplatíš 2500 za deset souběžně spuštěných virtuálů (resp. vzdálených sezení VDI).

Nicméně stejně mi to tvé přání (víc virtuálů s fyzickými výstupy) přijde trochu zvláštní, resp. dost nezvyklý use-case. Netuším, na co by to prakticky sloužilo, ani jsem nikdy nic takového neslyšel.. Buď mám fyzický stroj s lokálním grafikou a monitorem, nebo se ze vzdáleného klienta připojuju na server (veřejný cloud s nějakou škálovatelností a dostupností, firemní server třeba pro home office s nějakými CADy atp.). Ty fyzické výstupy z jedné bedny (extendery ke klientům?) a zároveň virtualizace s nějakým síťovým ovládáním mi přijde trochu jako kočkopes. Možná i proto se tím nikdo moc nezabývá.

Re:Sdílená grafika s video výstupy pod VM
« Odpověď #2 kdy: Dnes v 12:11:28 »
Tak jeden (dávný) čas se docela řešila multiklientská stanice na X serveru  - jeden počítač pro více lokálních uživatelů současně. Možná tu jde o něco podobného.

Re:Sdílená grafika s video výstupy pod VM
« Odpověď #3 kdy: Dnes v 13:13:08 »
V podstatě bys potřeboval nějakou OpenGL (nebo Vulkan) proxy, něco jako VirtualGL, která by klientům umožnila vytvářet OpenGL kontexty/seance a mapovat je na výstup na monitor. Realizovatelné to podle mého je, ale nevím, jestli to někdo už udělal nebo jestli by k tomu šlo přiohnout to VirtualGL (to podle mého použije GPU k vypočítání obrazu, ale pak ho pošle klientovi, ať si ho zobrazí sám).

Tak jeden (dávný) čas se docela řešila multiklientská stanice na X serveru  - jeden počítač pro více lokálních uživatelů současně. Možná tu jde o něco podobného.

Z toho by asi šlo vyjít – každá VM by měla svého uživatele a v tom by to fungovalo stejně jak ten kdysi používaný multi-seat. Jde o to, aby se ten výsledný obraz poslal rovnou na monitor a neprocházel přes VNC/SPICE. Chtělo by to vyzkoušet, jak je na tom qemu s SDL výstupem na celou obrazovku…
« Poslední změna: Dnes v 13:15:50 od Franta Kučera »

RDa

  • *****
  • 3 065
    • Zobrazit profil
    • E-mail
Re:Sdílená grafika s video výstupy pod VM
« Odpověď #4 kdy: Dnes v 14:02:30 »
Nicméně stejně mi to tvé přání (víc virtuálů s fyzickými výstupy) přijde trochu zvláštní, resp. dost nezvyklý use-case. Netuším, na co by to prakticky sloužilo, ani jsem nikdy nic takového neslyšel.. Buď mám fyzický stroj s lokálním grafikou a monitorem, nebo se ze vzdáleného klienta připojuju na server (veřejný cloud s nějakou škálovatelností a dostupností, firemní server třeba pro home office s nějakými CADy atp.). Ty fyzické výstupy z jedné bedny (extendery ke klientům?) a zároveň virtualizace s nějakým síťovým ovládáním mi přijde trochu jako kočkopes. Možná i proto se tím nikdo moc nezabývá.

Fyzicky si to predstav v ramci jednoho pokoje (kancl, lab) - jako konsolidacni ukol. Je tu tichej komp (64C / 256G+ ram) a je vicero pracovist (cca 3-4) s jednim-dvema monitory kazdy, v dosahu do tech 5m od spolecneho kompu. Vetsina pcie slotu je obsazena temi 4xNVMe kartama a nechtel jsem delat kabelove prodluzky na gpu. Pulka nebo vice stanic pojede pod win s CADem ktery ma rad 3D akceleraci (ale nepotrebuje moc jader). Druha pulka nebo vice pojede SW vyvoj ktery obcas oceni vice jader (lokalni build), a headless ci/cd si v nejakem VM taky uzije svuj zivot.

To sdileni cpu/ram resources umozni SW lidem si sednout kde je volno. A rad bych toho sameho dosahnul i s graficky narocnejsim sw jak je CAD - tj. kazde fyzicke misto by melo mit identicke schopnosti, si ukousnout se spolecneho vykonu.

Jako slo by to realizovat skrze video-matici a dedikovane gpu, ale to je takove meh reseni. Diskretni stanice zas neposkytuji efektivitu - energetickou/financni/vykonovou, brat to z druheho konce a rozjizdet distcc se me zrovna nechce jako.

Zpet k brainstormingu:

Jak existovali hybridni gpu reseni (a par YT videi i ukazovalo moznosti hrani na vypocetni gpu bez video vystupu), neexistuje co podobneho pro nasazeni s VM ? Jako graficky vystup by byla nativni (v hypervisoru) session s namapovanymi "streamy" z virtualek (ale dostat tam kousek vGPU bude zas licencne drahy)... takze to spis vypada ze to bude chtit protahnout i ten akceleracni stack napul ven z VM.


RDa

  • *****
  • 3 065
    • Zobrazit profil
    • E-mail
Re:Sdílená grafika s video výstupy pod VM
« Odpověď #5 kdy: Dnes v 14:04:10 »
Tak jeden (dávný) čas se docela řešila multiklientská stanice na X serveru  - jeden počítač pro více lokálních uživatelů současně. Možná tu jde o něco podobného.

Uzitim ano, ale neni to cisty linux sw, takze VM je nutny pro kombinaci win/lin. Nevim nakolik funkcni by bylo reseni skrze Wine.. sw ma dost problem sam se sebou a jeste mu pridavat tyhle handicapy, to by nedal.

Re:Sdílená grafika s video výstupy pod VM
« Odpověď #6 kdy: Dnes v 14:50:26 »
A co obezlicka skrze DisplayLink?


USB passthrough nejake DisplayLinkove dokiny do kazde z prislusnych VM a jedem, zcela nezavisle na tom, co nVidia umozni...? Pripadne, z pohledu KVM "cistejsi" reseni je PCI passthrough celyho USBckovyho radice do VM, pokud jich teda deska nabizi dostatek.


Omezeni - dopad na vykon (vysoka rezie), za nekterych okolnosti potencialne viditelne znamky komprese. Treba aspon nejaky scenar by to pokryt mohlo?

RDa

  • *****
  • 3 065
    • Zobrazit profil
    • E-mail
Re:Sdílená grafika s video výstupy pod VM
« Odpověď #7 kdy: Dnes v 15:00:01 »
A co obezlicka skrze DisplayLink?

Diky za namet - DisplayLink chipsety jsou pouze USB framebuffery s kompresi, to nema imho 3D akceleraci.
Takze to lze nahradit tim vnc/spice klientem a neni potreba kupovat extra krabicky.
(nicmene nejaky DL bych asi nasel mezi ruznymi docky co se zde povaluji)

To uz nema daleko k per-vm gpu - ze radeji potahnu celou gpu ven na kabelu (jednak se to fyzicky nevejde do stroje, takze premisteni blize na stul je jedno z reseni, za cenu diskretniho zdroje). Nevyhoda - nelze delat hotswap a power cycling (vypnout s monitory zaroven i gpu), protoze zmizeni zarizeni z hostu zabrani uspesnemu pass-through. Zde by bylo mozne reseni do toho vlozit TBT radic/expander (ten resi i zdroj).. ale zda to ma cenu za hotplug.. nevim nevim. Plus TBT ma omezeni na 4L, pres pasivni/aktivni pcie kabely je mozne udelat x8 (gen4).

Gpu ktere mam k dispozici jsou A1000 (1S,LP), A4000 (1S), A4500 (2S).
Chtel jsem ale pouzit jen jednu, max dve (jedna na 4 konektorech to umi 6 screenu vyuzitim DP MST, coz je na ty 3-4 pracoviste)