KVM Win10 max teljesítménnyel (vfio pc)

Fórumok

Windows 10-et kell KVM guestbe telepíteni úgy, hogy a teljesítménye közel azonos legyen a "natív" környezettel.

Az egyszerűség kedvéért a példa legyen gaming. Ha az jól megy akkor más is.  :)

Linux hoston QEMU/KVM-ben működik a Windows 10 guest, amire SteamLink csatlakozik LAN-on.

Hardver AMD Ryzen7 nyolc fizikai maggal (16 szállal), 16GB ram és GeForce GTX 1060 6GB

Kérdések:

1. Milyen Linuxot érdemes hostnak használni? Van értelme adott PC-ra optimalizáltan fordított Gentoot használni? Vagy ez csak időpocsékolás és jó egy normál Ubuntu vagy Mint is? Esetleg van direkt erre direkt optimalizált disztribúció? (Proxmoxot nem szeretnék használni)

2. Windows 10 guestnek közvetlen VGA hozzáférést kell biztosítani a megfelelő graf teljesítményhez. Mire kell ügyelni, hogy biztosan PCIe X16-ban működjön a GeForce? Nem megfelelő beállítással a guestben néha csak X1-ben megy, ami rendesen visszafogja a teljesítményt. 

3. Normálisan működő audióhoz kell valami extra beállítás? Ehhez kell közvetlen audio hardver hozzáférés a guest számára vagy nem szükséges? Mikrofon működni fog rendesen?

4. Ha nincs GPU az a proci mellett, azaz nem APU, akkor kell egy második VGA kártya is, ha a hoston is szükség van desktopra. A GeForce GTX 1060 oda lett adva a Windows 10 guestnek, igaz? (Illetve még egy harmadik is ha két guest működne párhuztamosan hardveres VGA hozzáféréssel. Bár ehhez nem egyszerű alaplapot találni)

Ez a második (harmadik) VGA lehet egy másik, kisebb teljesítményű és fogyasztású Geforce is? Például Geforce 710 vagy jobb egy kis fogyasztású Radeon?

5. Mennyi cpu magot kell mindenképp fenntartani a host rendszernek? Elég egy CPU mag is, ami valójában a 16 szál miatt csak egy fél fizikai CPU-nak felel meg? Vagy kell egy fizikai cpu-nak megfelelő 2 mag?

6. Optimális esetben milyen teljesítmény várható a Windows 10 guesten? Mennyi % a veszteség ahhoz képest ha natívan fut ugyanazon a PC-n? Feltételezve természetesen, hogy a hoston nem megy semmilyen erőforrásigényes folyamat párhuzamosan és másik guest sem lett elindítva mellette.

7. A jobb teljesítmény érdekében érdemes fizikai partícióra telepíteni a Windows guest rendszert. Ebben az esetben be lehet bootolni dual-bootban natívan is a Windows 10-et, igaz?

8. Power management mennyire működik hatékonyan a guestekben? Desktop PC ahol ez nem annyira fontos, viszont az nem lenne szerencsés ha mindig full órajelen pörögne az összes guest-nek adott cpu mag. A hardveres hozzáférés miatt a Geforce kártyán feltételezem rendben működik a power management.

Hozzászólások

Én is épp ezzel szemezgetek, mert a Dead By Daylight-ban az Easy Anti-Cheat (amit amúgy röhögve kijátszanak) nem hajlandó elindulni, lévén rossz binárist rángat le (konkrátan a Linux-osat) és nyilván nem sikerül elindulnia. 7 Days To Die játsziban is pont ugyan ez az EAC található meg, de ott érdekes mód működik.

 

Amit még érdemes szem előtt tartani, hogy a másodlagos guest videokártyának is külön kell videokimenet. Én is jobban örülnék, ha meglehetne ezt Xnest-szerűen oldani valahogy.

Próbáltad natívan elindítani a Windows guestet? Ez persze csak akkor lehetséges ha fizikai partícióra lett telepítve. Ha ott a megfelelőt tudod telepíteni, működni fog talán már guest Windowsban is.

Egyébként a játékok teljesítményén észre lehet venni valamit?

"Amit még érdemes szem előtt tartani, hogy a másodlagos guest videokártyának is külön kell videokimenet. Én is jobban örülnék, ha meglehetne ezt Xnest-szerűen oldani valahogy."

Úgy érted valódi monitort vagy (dummy kamumonitort) kell kötni a guest vga kártyára?

> Ha nincs GPU az a proci mellett, azaz nem APU, akkor kell egy második VGA kártya is, ha a hoston is szükség van desktopra. A GeForce GTX 1060 oda lett adva a Windows 10 guestnek, igaz?

igen

 

> Ez a második (harmadik) VGA lehet egy másik, kisebb teljesítményű és fogyasztású Geforce is? Például Geforce 710 vagy jobb egy kis fogyasztású Radeon?

lehet, de egyszerűbb megoldani ha nem nvidia (pl intel hd, radeon)

 

> Van értelme adott PC-ra optimalizáltan fordított Gentoot használni?

ez esetben sincs

 

> Normálisan működő audióhoz kell valami extra beállítás?

dedikált eszközzel a legjobbak a tapasztalataim (gtx mellett átadok egy pcie usb3 kártyát is, és azon lóg egy usb audio eszköz)

 

> Optimális esetben milyen teljesítmény várható a Windows * guesten?

gpu benchmark 100%

cpu benchmark ~90%

 

> A jobb teljesítmény érdekében érdemes fizikai partícióra telepíteni a Windows guest rendszert.

miért? qcow2/virtio, szt jónapot

 

inputot nem kérdezted, de: evdev passthrough

Távlati célok között szerepel MacOS guest lehetősége, amiatt gondoltam Geforce 710-re, mert azt még támogatja, és keveset fogyaszt. De látom nem lehet két azonos típusú VGA, szóval akkor kelleni fog egy kis fogyasztású Radeon és mindenképpen lesz két VGA egy gyártótól, persze két különböző modell ha AMD a CPU. Intel CPU-nál lehet Nvidia+Radeon+IntelVGA. Ha jól látom az Arch wikiben nem minden PCIe slot felel meg egy alaplapon, így ezzel is szűkül a megfelelő alaplapok választéka.

Szerinted jobb az Intel CPU a célra mint az AMD?

Jelenleg van olyan PC-m Win10-el amire nincs monitor kötve, se billentyűzet. Egy dummy egér azért kellett, hogy remote lássam az egérmutatót. Wireless egér usb vége erre megfelel, nem kell működnie magának az egérnek. Ez így teljesen jól működik. Legjobb remote desktop képminőséget a jó Steam steam adja, notepad.exe trükkel elérhető a teljes desktop. Van sajnos néhány hiányossága. Például az admin jogot kérő ablakkal nem tud mit kezdeni. RDP elmegy még, bár TeamViewer jobb nála. Lokális neten ismeri közvetlen az adatforgalmat a TW.

Ha KVM-ben input így nem megy majd megoldom. De alapvetően remote desktoppal lenne elérve minden, a guest(-ek) és a host is. Monitorra ha nem lenne szükség jól jönne, ha mégis kell dummy vga plug.

bar nem tudom ez milyen gep meg hol van, de ha ennyi vgat kell belerakni a hazba. akkor crypto vilagban van pcie eloszto kartya. ez x1-es, tehat gamingra nem lesz jo, de azert nemkell tole fele, a sima desktop feladat dolgai atmegy x1-en is. (az usb csati nem zavarjon meg, az csak a fizikai csatlakozo, nincs ott semmi usb)

A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!

Vannak ebből a koncepcióból egészen elvadult példányok is: https://www.amazon.com/B250-MINING-EXPERT-Motherboard-Cryptocurrency/dp…

és https://www.amazon.com/Graphics-Extension-Powered-Adapter-Capacitors/dp…

Cryptozás mellett egyéb cuda-s projektekre is jól jöhet. Nálam viszont most a normál gyors desktop mindenképp a kritériumok között szerepel. Ezért írtam a kezdő hozzászólásba a virtualizált gamer pc-t, mint amolyan mércét. Ha ez a funkció jól működik megfelel, de ha csak kompromisszumokkal akkor nem. Még ha nem is igazán játék a cél. 

A három VGA értelme az lenne, hogy egyszerre két guest is tudjon működni saját dedikált gpu-val, például egy Win10 és egy macOS és a host-nak is kell még egy. De ennél több párhuzamos guest saját vga-val nem kell. 

Na ha ezt sikerül összeraknod, akkor igazán visszajöhetnél ide, és leírhatnád, hogy miből és hogyan. Annyira sok helyen tud ez eltörni, hogy tényleg szeretnék már végre látni valakit, akinek sikerült.

AMD-vel nincs tapasztalatom, de nálam legalább 3, de lehet, hogy inkább 4 éve gond nélkül működik hasonló felállás Skylake + GTX + NVMe SSD + LVM + VirtIO + libvirt alapokon, amit először megcsináltam Proxmoxszal, aztán váltottam Archra.

Biztosan nem én vagyok az első és egyetlen, akinél hibátlanul működik, mert nulla KVM tudással vágtam bele és az infókat másoktól szedtem össze. Talán ez a legjobb naprakészen tartott összefoglaló oldal a témában: https://heiko-sieger.info/running-windows-10-on-linux-using-kvm-with-vga-passthrough/

Az egyik állandó VM-ben OMV fut standalone KODI-val, mintegy NAS + HTPC kombóként, az kapta PCI passtrough-val az IGD-t és az Intel Audiot, a Windows 10 VM kapta a GTX-et, így a host VGA nélkül maradt. Többeknek volt problémája a hanggal, de én egyik VM-ben sem tapasztaltam rendellenességet, ami külön kezelést igényel volna. Működik az Nvidia GameStream + Moonlight is, habár mostanság csak ritkán van alkalom játékra, de nem maradt parlagon a GTX, március óta éjjel-nappal a folding@home koptatja az erőforrásokat. Hagytam annyi erőforrást szabadon, hogy a 2 "állandó" VM mellett tudjak csinálni még egyet, ha valamit éppen ki akarok próbálni.

Lehet, hogy tényleg sok helyen el tud törni, de nem olyan nagy ördöngösség jól megcsinálni, hozzátéve, hogy hardvert venni tudni kell, ahhoz meg előbb nem árt olvasni és csak utána bevásárolni. :-)

Szabi

Arch-ot jobb választásnak tartod erre a feladatra? Vagy csak kézenfekvő volt mert Arch wiki a legjobb és legrészletesebb ebben a témában? 

Ismerőseim beszámolói alapján, akik desktop linuxnak használnak Arch-ot, több hónapos uptime nem jellemző. Pár hetente lefagy néha a rendszerük. Cserébe friss minden és optimalizált. Kicsit bleeding edge. Virtualizációs host-ként, pláne grafika nélkül lehet ez nem jön elő és stabil alap. 

Szerinted felesleges a VGA a hostra? Tudatos döntés volt vagy csak nem maradt VGA a hostnak és úgy maradt? 

VGA nélküli hostnak mennyi erőforrást hagytál? Mennyi CPU mag (vagy thread), illetve mennyi ram? 

Néhány éve KVM tanulás gyanánt döntöttem úgy, hogy csinálok egy otthoni mindenes szervert. Először az ajánlások miatt megcsináltam Proxmoxszal, de előjött egy bosszantó hiba, amit nem tudtam megoldani, ezen felül szerettem volna pontosan megérteni a működésnek azokat a részeit is, amiket a Proxmox elfedett előlem. Ezután váltottam Archra, ami a dokumentációk miatt is adta magát, de egyébként is érdekelt, mint bleeding edge rolling distro, mert korábban valahogy kimaradt az életemből. Pedig nem ebben az évezredben kezdtem az "ipart", otthon volt Debian, FreeBSD, sokáig Gentoo, aztán Ubuntu, a melóban meg RHEL, AIX és Windows. A család mellett persze mások lettek a prioritások, el is kényelmesedtem, így az állandó reszelgetés, hegesztgetés helyett otthoni desktop rendszernek már vagy tizenpár éve megmaradt az Ubuntu. Viszont hobbi projektnek és a KVM tanuláshoz meg abszolút bevált nekem az Arch, soha semmi problémám nem volt vele, de ettől még YMMV.

Nálam nem szükséges a hostnak VGA, inkább felhasználtam az OMV-s VM-ben a KODI-hoz, ami persze futhatna akár a hoston is, és akkor nem is kellene passtrough, de az úgy nem lenne olyan menő, igaz? :-). Másnak lehetnek ettől eltérő igényei. Nálam a Proxmoxból végül Arch lett, a Xpenologyból meg OMV. Kinek a pap, kinek a papné.

Jelen felállásban az i7-6700 8 magjából és a 16 GB RAM-ból 6 mag és 12 GB van a Windows VM-nek kiosztva, 1 mag és 2 GB az OMV+KODI VM-nek, így 1 mag és 2 GB marad a hostnak. Ez azt is jelenti, hogy ha jelenleg szeretnék még egy harmadik VM-et futtatni, akkor valamelyiket addig le kellene állítanom vagy a Windowstól el kellene vennem legalább 1 magot.

Szabi

Alternatív lehetőség: ha Win10-ről akarsz játszani, nem kell feltétlenül virtuális gépbe telepíteni. Lehet egy USB-s külső drive-ra is, ahonnan bebootol. A trükkje annyi, hogy az USB-s drive-ot kell odaadni a KVM virtuális gépnek, egészében, miután feltelepült rá a Win10, utána leállítani a virtuális gépet, és a gépet újraindítva fizikailag is bebootolni róla. Nekem simán ment így, minden hardvert natívan visz, mivel a vasról bootol. Nincs semmilyen trükközés a telepítést kivéve, nem kell 2 GPU, meg PCI passthrough-val és egyebekkel szórakozni.

Ha ez bonyás, akkor keresel egy Windowsos virutális gépet, és ott Rufus-szal írsz ki a kérdéses USB meghajtóra Win10-et Win to Go módban. Ez is ugyanazt eredményezi.

Ezeknek a módszereknek az a hátránya, hogy így Win to Go módban telepítve a nagyobb évszakos frissítések nem fognak felmenni, mert kiírja, hogy ilyen telepítésre nem lehet őket felrakni. De ezt leszámítva teljes értékű Win10 telepítések ezek, épp úgy futnia kell róla a Steamnek, játékoknak, mindennek.

“I didn’t start using Linux so I could have friends.” (Luke Smith, 2019) 🐧

Itt nem a Win10 hordozásának usb driveos megkönnyítése a cél. Virtualizáció minimális teljesítményveszteséggel. Ennek előnyei, teljesség nélkül pár dolog: több virtualizált rendszer párhuzamosan egy gépen; guest rendszer különböző összeállításainak gyors és kényelmes cserélhetősége; bármilyen probléma adódik egy guest rendszerrel távolról host-on keresztül teljes elérésed van kb kvm csak másként; másik hasonló vfio pc -re gyors guest os deployment; kb felhős desktophoz hasonló előnyök csak egy host pc-n nálad. 

Ezek közül több pontot az általad leírt megoldás is tud, de mindent egyben amit egy vfio pc.

Akkor félreértettelek, azt hittem játszani kell. Az sose lesz natív teljesítmény virtuális gépen, főleg ha többet futtatsz egymás mellett és mindenféle felhős meg egyéb guest feauter-öket akarsz. Akkor írd legközelebb ezt.

“I didn’t start using Linux so I could have friends.” (Luke Smith, 2019) 🐧

Sajnálom ha félreérthető voltam. 

Az itt leírtak és más források alapján, a vfio pc közel natív teljesítményt tud. Természetesen akkor ha egyedüli (kövér) guest és a host rendszeren sem működik erőforrásigényes folyamat. Maga a virtualizáció és teljesítménykritikus gaming nem zárják ki egymást. A Microsoft Xbox One konzolja egy virtualizált megoldást használ. Speciális Windows hoston működik az Xbox360 továbbfejlesztett és AMD64-re portolt OS-e. Illetve működik mellette egy lightos Windows, a játék közben kommunikációra. Sony PS4 konzervatívabb megoldása egy külön ARM alapú boardot használ játék közbeni kommunikációra. Teljesítményben, már amennyire lehet erről beszélni konzoloknál jobb a PS4, de életképes megoldás az Xbox One is. 
Vfio PC-n a grafikus kártya közvetlen hozzáférése a kulcs. Desktop virtualizációnál a közvetlen GPU hozzáférés hiánya a teljesítményproblémák legfőbb oka. Természetesen hangkártya és egyéb hardver közvetlen guest hozzáférése is hasznos, de GPU messze a legfontosabb. 

https://www.youtube.com/watch?v=h8LdfZJunrs

Két éves videó, elég jó fps-t tudott már akkor, hiába "csak" virtualizáció. 

Szerkesztve: 2020. 06. 02., k - 00:05

Szóba kerültek a miértek? Ebben cikkben elég jól összeszedte a szerző az elején az okokat:

https://www.erianna.com/amd-ryzen2-pci-passthrough-vfio-libvirt-ubuntu1804-windows10/

Még annyival lehetne kiegészíteni a járványhelyzet miatti állapot tanulságait levonva, hogy egy több gyerekes családban gazdaságosabb megoldás lehet, egy erős családi desktop pc-t fejleszteni virtualizált rendszerekkel, amikre rácsatlakozhatnak a korosabb notebookok vagy akár egy Raspberry Pi + monitor kombó is, mint folyamatosan napra készen tartani, vásárolni gyerekek száma + 2 szülő darab notebookot vagy desktopot. 

Szerkesztve: 2020. 06. 02., k - 07:46

Használtam sokáig (1-1,5 év), utoljára talán 2 évvel ezelőtt, pusztán csak játékokra. Manapság viszont nem éri meg szerintem (csak játékokra), mert ott a DXVK és mert annyit fejlődött a Steam Proton. Sokszor natív Windows teljesítménnyel egyezőt kapsz már wine alatt is. Persze tudom, hogy nem tökéletes minden játékhoz, az én igényeimet azonban teljesen lefedi.

"1. Milyen Linuxot érdemes hostnak használni? Van értelme adott PC-ra optimalizáltan fordított Gentoot használni? Vagy ez csak időpocsékolás és jó egy normál Ubuntu vagy Mint is? Esetleg van direkt erre direkt optimalizált disztribúció? (Proxmoxot nem szeretnék használni)"

nincs különösebb jelentősége, szerintem.

"2. Windows 10 guestnek közvetlen VGA hozzáférést kell biztosítani a megfelelő graf teljesítményhez. Mire kell ügyelni, hogy biztosan PCIe X16-ban működjön a GeForce? Nem megfelelő beállítással a guestben néha csak X1-ben megy, ami rendesen visszafogja a teljesítményt. "

Alaplap függő, amelyiknek van rendes PCIex16 és tud normálisan PCI Passtrough-t, azoknál nem lesz gond.

"3. Normálisan működő audióhoz kell valami extra beállítás? Ehhez kell közvetlen audio hardver hozzáférés a guest számára vagy nem szükséges? Mikrofon működni fog rendesen?"

Tudsz szoftveres audio-t emulálni qemu alatt, az működik rendesen, bár profi audio munkát ne akarj csinálni. Ha ez nem jó akkor USB passtrough valami normális usb-s DAC.

"6. Optimális esetben milyen teljesítmény várható a Windows 10 guesten? Mennyi % a veszteség ahhoz képest ha natívan fut ugyanazon a PC-n? Feltételezve természetesen, hogy a hoston nem megy semmilyen erőforrásigényes folyamat párhuzamosan és másik guest sem lett elindítva mellette."

90-95%-a a natívnak kb.

"7. A jobb teljesítmény érdekében érdemes fizikai partícióra telepíteni a Windows guest rendszert. Ebben az esetben be lehet bootolni dual-bootban natívan is a Windows 10-et, igaz?"

Nem feltétlenül, de ha akarsz róla dual boot-olni, akkor mindenképpen azt kell. Viszont, én biztos, hogy másik fizikai drive-ra tenném és nem másik partícióra azonos disk-en.

És igen, ebben az esetben, be tud bootolni a Windows qemu nélkül is.