Fórum Root.cz

Hlavní témata => Software => Téma založeno: RDa 05. 09. 2025, 22:23:30

Název: Sdílená grafika s video výstupy pod VM
Přispěvatel: RDa 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.
Název: Re:Sdílená grafika s video výstupy pod VM
Přispěvatel: Michal Šmucr 06. 09. 2025, 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á.
Název: Re:Sdílená grafika s video výstupy pod VM
Přispěvatel: redustin 06. 09. 2025, 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.
Název: Re:Sdílená grafika s video výstupy pod VM
Přispěvatel: Franta Kučera 06. 09. 2025, 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…
Název: Re:Sdílená grafika s video výstupy pod VM
Přispěvatel: RDa 06. 09. 2025, 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.
Název: Re:Sdílená grafika s video výstupy pod VM
Přispěvatel: RDa 06. 09. 2025, 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.
Název: Re:Sdílená grafika s video výstupy pod VM
Přispěvatel: jauznevimco 06. 09. 2025, 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?
Název: Re:Sdílená grafika s video výstupy pod VM
Přispěvatel: RDa 06. 09. 2025, 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)
Název: Re:Sdílená grafika s video výstupy pod VM
Přispěvatel: jauznevimco 07. 09. 2025, 12:19:49
Ano, myslel jsem to tak, ze 3D akceleraci by stale zajistovala nVidia, u niz rozumim, ze nejaky rozparcelovani mezi VM guests je mozne (? - neco takoveho jsem zkousel jen s Inteli GPU pres MDEV a ackoliv to fungovalo, vykon byl zcela zoufaly, treba to je u nV zmaknuto lepe), pricemz onen DisplayLink by zajistoval ciste ten obrazovej vystup.


Obdobny postup uvazuju pro Davinci Resolve - grafiky se spoustou VRAM jsou drahe, takze uvazuju nejakou vypocetni nVidii bez vystupu a tyto suplovat prave DisplayLinkem (nebo RDP ... prekvapive to wokenni RDP pres domaci LAN je vyborne pouzitelne, obcas je videt naznak komprese, ale vse pekne plynule).
Na funkci to nema vliv, pokud neco potrebuje vyuzit CUDA/OpenCL, ma tu moznost.
Název: Re:Sdílená grafika s video výstupy pod VM
Přispěvatel: Ondrej Nemecek 07. 09. 2025, 12:50:50
IMHO to jako výzkumný teoretický projekt sice může být zajímavé, ale prakticky to buď nebude realizovatelné nebo to nebude použitelné.
Název: Re:Sdílená grafika s video výstupy pod VM
Přispěvatel: Michal Šmucr 08. 09. 2025, 00:05:45
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.

Už chápu, co chceš docílit, ale myslím, že to je velmi obtížné realizoval, protože takhle specifický lokální "pavouk" :) dnes zajímá úplné minimum lidí v porovnání s tím VDI resp. remote desktopy, kde to jde přes síť všechno. Takže tohle podle mě žádným standardním způsobem není rozumně řešitelné.

Byť asi nejblíž, co tomu s Windows kdy bylo, je MS Multipoint server. Ale o tom vím, jen že to existuje a byť jsem viděl kdysi i nějaké prezentace, nikdy jsem s tím reálně nedělal. V té dedikované verzi to umělo opravdu fyzická připojení, pak to šlo i kombinovat přes RDP, jak to bylo pak třeba s OpenGL atp. netuším.
https://en.wikipedia.org/wiki/Windows_MultiPoint_Server

Jinak rozumím, co by to případně mělo za výhody.. ale myslím, že i když něco podobného měl osobně zajistit, tak bych prostě používal server na kompilace, výpočty, CI/CD atp.
A k tomu koupil pár normálních PC stanic.. (karty už máš, menší PC nebo třeba o generaci starší HP Zka se dají občas sehnat za zlomek ceny a pořád se na nich nechá dobře dělat většina věcí), nemusí to nutně žrát až tolik, pokud se na tom nic nepočítá.
Sice si kolegové budou muset rozmyslet, kde budou sedět podle toho, co mají za práci, ale snad to nebudou brát tak úkorně, kdyžtak si vezmou hrnek s kafem a přejedou si na kolečkové židli :)

Protože když bych si měl představit, že tedy nemám vGPU (které je samo o sobě drahé), tak řeším nějaké PCIe expanzní šasi, hovadsky velký zdroj, pak přepínačku/router s USB, co zvládne dvoumonitorové konfigurace s větším rozlišením, tak to taky není úplně zadarmo, zvlášť jestli to má spolehlivě fungovat (např. Lightware).. velmi snadno budu na ceně těch pár PCček i s nějakým provozem. Ty PC pak mají výhodu v tom, že když už se něco podělá, tak to neodejde všechno naráz a bude to i licenčně čisté.
Navíc když solidně nastavím tu vzdálenou práci na serveru (je spousta variant od toho distcc, cos psal, přes různé synchronizace a SSH příkazy, až po věci typově jako VSCode SSH Remote, JetBrains Gateway atp.), tak ti lidi můžou v pohodě v podstatě tím samým způsobem dělat třeba přes VPNku.

Citace
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.

Pokud se pošle celá karta do VM, může to být klidně něco jako A10, L40 bez výstupu, instaluješ standardní driver (ne ten pro vGPU s licencí), pak když se tam připojíš třeba přes VNC, jede to. Ale to zas neřeší, co chceš.
Jakmile chceš dělit jednu kartu, musíš mít ty licence. A "proxy/dekodér" ve VM na fyzické výstupy mi přjde trochu blbost.

Jinak u AMD to taky není řešitelné, předtím měli obdobnou věc jako vGPU, u které jsi sice nemusel platit za každou session - MxGPU.. ale to je bohužel jen pro staré karty FirePro, jsou tam i nějaké historické ovladače, ale už se to nevyvíjí a bylo to prý peklo uchodit (mám zprostředkovaně jen s VMWare).
Nástupce je MxGPU/GIM a také se používá SR-IOV, ale to je pořád ve vývoji, vyžaduje data-center řadu Instinct MX (začínáme tak na 8-10 tis. dolarech) a má ovladače jen pro Linux guesty (počítám, že primární use-case je spíš oddělené počítání přes GPU ve VM).
U Intelu je pak obodba u data-center řady Flex a tam ani nevím, jestli to má Windows driver pro guesty. Nic podobného pro desktop ARC pak není.
Intel GVT-g umožňoval 3D akceleraci v guestu pomocí integrované grafiky, ale bylo to peklo rozchodit, šlo to jen s Linuxem (Windows virtio-gpu-3d jsem nikdy nerozběhl) a bylo to líné jak vandrácká hůl.

Takže suma sumárum, NVIDIA má aktuálně jedinou možnost pro použití grafiky s více Windows guesty.