Kako poboljšati grafičke performanse u modernim virtuelnim mašinama

  • Virtualizacija uvodi blagi gubitak performansi CPU-a i RAM-a, ali je utjecaj obično veći na pohranu i grafiku, posebno na udaljenim radnim površinama.
  • Grafičko iskustvo virtuelnih mašina zavisi od GPU-a, CPU-a, memorije, I/O operacija na disku, mreže i korištenog protokola udaljene radne površine.
  • SR-IOV i GPU passthrough nude bolje grafičke performanse, ali dodaju složenost i troškove; virtio-gpu, SPICE i virgl su praktičan izbor u KVM/Proxmox okruženjima.
  • Izbor između virtuelne mašine ili fizičkog servera za grafička opterećenja zahteva testiranje opterećenja i fino podešavanje uskih grla, prilagođavanje hardvera i hipervizora u skladu s tim.

Grafičke performanse u virtuelnim mašinama

Kada se ozbiljno počnete baviti modernom virtualizacijom, prije ili kasnije naiđete na problem koji se ponavlja: Virtuelne mašine rijetko nude iste grafičke performanse kao operativni sistem instaliran direktno na hardveru.Dok host desktop može raditi glatko čak i u 4K rezoluciji, VM desktop može biti isprekidan, sa kašnjenjem miša, kidanjem ekrana ili video zapisima koji se ne reprodukuju glatko kako bi trebali.

Ovaj scenario se ponavlja i u domaćim okruženjima i u Poslovne platforme koje koriste KVM, Proxmox, VMware, Hyper-V ili javni oblak.I osjećaj je isti: "Host radi savršeno, ali VM je spor... šta radim pogrešno? Da li mi je potreban poseban GPU, SR-IOV, za promjenu hipervizora ili jednostavno više sirove CPU snage?"

Grafičke performanse u virtuelnim mašinama: šta zaista možete očekivati

Prvi korak je prilagođavanje očekivanja: Virtualizacija desktopa sa "gotovo izvornim" 3D ubrzanjem i dalje predstavlja izazov.Pogotovo ako želite dijeliti jedan GPU između hosta i nekoliko virtualnih mašina bez pribjegavanja vrlo skupim ili složenim rješenjima.

U tipičnom slučaju sa Debian 12 kao host preko KVM-a, Ryzen 7 PRO laptop sa Radeon iGPU-om i 4K ekranomFizička radna površina radi savršeno: pomicanje prozora je trenutno, web stranice se brzo učitavaju, a 4K YouTube se reproducira glatko. Međutim, na Linux virtuelnim mašinama s Virtio ili SPICE grafikom, performanse opadaju: Teške web stranice i online videozapisi doživljavaju veće kašnjenje, a glatkoća nije tako dobra kao kod hosta..

Prilikom testiranja različitih konfiguracija (VirtIO-GPU drajver, SPICE, virgl, različiti udaljeni preglednici kao što je virt-viewer, Windows klijenti, itd.) uočeno je da Pokazivač i ukupni odziv su donekle poboljšani, ali su i dalje prisutni kidanje slike, ispuštanje kadrova i izrazit osjećaj manje "živahne" radne površine.Zbog toga mnogi ljudi odmah razmisle o propuštanju GPU-a. Ili čak o promjeni platforme.

Važno je shvatiti da, čak i u moćnim infrastrukturama, Virtualizacija uvodi malo opterećenje CPU-a, RAM-a, a posebno diskovnih ulazno/izlaznih operacija i grafike.Kod tradicionalnih serverskih opterećenja (web, baze podataka, mikroservisi) ta kazna je prihvatljiva; ali kada počnete pitati Fina grafička interaktivnost, niska latencija i glatki videosvaka milisekunda je važna.

Kako poboljšati grafičke performanse u modernim virtuelnim mašinama

Virtuelne mašine u odnosu na fizičke servere: stvarni uticaj na performanse

Iako se ovdje fokusiramo na grafiku, vrijedi staviti virtualizaciju u kontekst. Fizički (bare metal) serveri ostaju mjerilo kada tražite sirove performanse i minimalnu latenciju.Pogotovo u visokoperformansnim bazama podataka, 3D renderiranju, umjetnoj inteligenciji ili streamingu u stvarnom vremenu.

Tipični testovi performansi pokazuju da dobro konfigurisana virtuelna mašina na KVM-u ili VMware-u postiže performanse vrlo slične onima na računaru u pogledu procesora i RAM-a: približni gubici od 5-8% u CPU-u i 7-13% u memorijiNajveći nedostatak je u skladištenju podataka. 4K IOPS može pasti za 17-25%, što je ključno ako je vaše opterećenje vrlo intenzivno za korištenje diska.

Ova kazna postoji i u grafičkom dizajnu, s nijansom da GPU obično dijeli resurse s više virtualnih mašina (VM), a put prezentacije (SPICE, VNC, RDP, vlastiti protokol hipervizora itd.) dodaje latenciju i kompresiju.Rezultat: sistem "nije neupotrebljiv", ali u poređenju sa hostom, djeluje manje glatko.

Zato postoje scenariji u kojima se isplati držati se golog metala: velike transakcijske baze podataka (Oracle, SQL Server Enterprise, SAP HANA), AI/ML engine-ovi sa snažnim GPU-ima ili serveri za igre/streaming sa vrlo strogim zahtjevima za latencijom. U ovim situacijama, opterećenje CPU-a, memorije, I/O i GPU-a sloja virtualizacije postaje mnogo primjetnije.

Umjesto toga, web aplikacije, mikroservisi, razvojna okruženja i virtualne uredske radne površine — čak i lagana radna površina u Ubuntuu— Vrlo dobro se uklapaju u virtuelne mašine. Imaju koristi od snapshot-ova, visoke dostupnosti i brzog skaliranja, a mali gubitak performansi je sasvim prihvatljiv.

CPU, RAM, disk i mreža: koje metrike treba pratiti u sporoj virtuelnoj mašini

Prije nego što okrivimo GPU, moramo potvrditi da Niste ograničeni procesorom, memorijom, diskom ili mrežomMnogi problemi sa "sporom radnom površinom" su zapravo zasićenja drugog resursa: CPU čeka svoj red, intenzivna swap memorija ili disk na svojim granicama.

Na primjer, u VMware vSphere-u, CPU svakog vCPU-a prolazi kroz četiri stanja: RUN (radi), WAIT (čekanje/I/O ili mirovanje), READY (u redu čekanja bez fizičkog CPU-a) i COSTOP (ko-zaustavljanje u višejezgrenim virtuelnim mašinama)Visoke vrijednosti READY ili COSTOP su jasni pokazatelji sukoba i prevelike pretplate hosta.

Za CPU-ove, ključne metrike su postotak održive upotrebe, korištenje MHz po vCPU-u i brojači Ready/COSTOPAko je VM konstantno iskorištena 90-100% ili je SPREMNA više od 10% vremena, ta mašina ima problema. Dodavanje više vCPU-ova, htjeli ili ne, gotovo nikada ne pomaže ako je host već pod opterećenjem.

U sjećanju, moramo paziti na Globalna upotreba uključuje straničenje/zamjenu i, na platformama poput Azure ili Hyper-V, straničenje ili zamjenu datoteka na sekundarnim diskovima.Kada ti volumeni pokazuju mnogo čitanja/pisanja, to je jasan znak da je virtuelnoj mašini ponestalo RAM-a.

Na disku i mreži se primjećuje sljedeće: prosječna latencija čitanja/pisanja, IOPS i propusnost mrežeDugotrajna kašnjenja na disku iznad 15-20 ms ili padovi dostupnosti i isteci vremena u udaljenoj pohrani (Azure Storage, SAN, itd.) direktni su neprijatelji percipiranih performansi na udaljenoj radnoj površini.

Azure monitor

Alati za praćenje i dijagnostiku: od ESXTOP-a do Azure Monitora

Veliki proizvođači nude dobro razvijene alate za analizu performansi virtuelne mašine. Neki primjeri:

  • VMware: vCenter i ESXTOP.
  • Azure: Azure Monitor i PerfInsights.
  • Hyper-V: Monitor performansi i PowerShell.
  • KVM/Proxmox: kombinacije kao što su top, htop, iostat, virt-top i sam web interfejs.

ESXTOP je klasik za analizu u realnom vremenu. Omogućava vam da pregledate, svakih nekoliko sekundi, metrike po vCPU-u, kao što su %KORIŠTENO, %RUN, %SYS, %WAIT, %IDLE, %RDY, %CSTP, %MLMTD i mnogo više. Osnovno pravilo: ako %RDY ili %CSTP poraste, imate previše vCPU-ova ili previše VM-ova za host.

U Azureu, omogućavanje dijagnostike na nivou virtuelne mašine i računa za skladištenje daje vam grafikone CPU, memorija, disk i mrežazajedno s metrikama o dostupnosti, latenciji, ograničavanju i greškama zbog isteka vremena pohrane. Ove informacije pomažu u razlikovanju problema s platformom od uskog grla na vašoj strani zbog prekomjernog IOPS-a ili propusnosti.

U Hyper-V-u, posao je podijeljen između Hyper-V Manager, Performance Monitor, Resource Monitor i PowerShell cmdletsMožete pregledati fizičke naspram logičkih jezgara, NUMA, VHDX diskove, virtualne adaptere, redove diskova i još mnogo toga kako biste precizno podesili koji dio ne ispunjava očekivanja.

Pored proizvođača, mnogi vodiči preporučuju korištenje specifični testovi opterećenjasysbench za CPU, stress-ng i memtester za RAM, fio za disk I/O, iperf3 ili netperf za mrežu. Ovo vam omogućava da lako uporedite Bare Metal sa VM i vidite ograničenja svakog hipervizora.

Virtuelizacija GPU-a: SR-IOV, prolaz i vlasnička rješenja

Kada je usko grlo očigledno grafičko (kidanje slike, niska brzina kadrova, spore animacije, isprekidan video), vrijeme je da se pogleda... Virtualizacija GPU-aOvdje postoje tri glavne porodice rješenja:

  • Prolaz GPU-a (prolaz PCI-a)Puna grafička kartica je dodijeljena jednoj virtuelnoj mašini. Ovo nudi gotovo nativne performanse, ali s očiglednim ograničenjima: ta grafička kartica postaje nedostupna hostu i drugim virtuelnim mašinama, a obično vam je potreban poseban video izlaz za tu virtuelnu mašinu, što nije idealno ako želite sve na istom ekranu.
  • Virtualizacija GPU-a putem SR-IOV-a (virtualizacija jednog korijena I/O)Omogućava izlaganje virtuelnih GPU funkcija (VF) različitim VM-ovima. Ideja je veoma privlačna: dijeljenje grafičkog hardvera uz minimalno opterećenje. Intel promoviše ovaj pristup u svojim Xe2 iGPU-ima za laptope (kao što je Lunar Lake) i u GPU-ima za podatkovne centre (Flex), dok AMD i NVIDIA prvenstveno rezervišu ovu funkciju za... veoma skupe vizit karte gdje, osim toga, često postoje modeli licenciranja i pretplate koji nisu baš jednostavni za korištenje kućnim korisnicima ili malim preduzećima.
  • SR-IOV. Ovo rješenje Nije u potpunosti transparentan za virtuelne mašine, zahtijeva specifične drajvere, BIOS/firmver i podršku za hipervizor, te može donijeti vlastite probleme s kompatibilnošću.Nije uvijek isplativo nadograditi sav hardver (na primjer, kupiti Intel Lunar Lake laptop samo zbog toga) ako će ostatak vašeg radnog procesa ostati ograničen drugim faktorima. Analiza hardvera računara pomaže u odluci.
  • Vlasnička rješenja za virtualizaciju GPU-aKao što su NVIDIA RTX vWS, NVIDIA VGX ili njihovi nasljednici. Oni kombinuju specifični hardver (na primjer, VGX K1/K2 kartice sa više Kepler GPU-a, velikim količinama GDDR5 memorije i hiljadama CUDA jezgara) sa GPU hipervizorom koji omogućava multipleksiranje kapaciteta grafičkog računarstva na desetine virtuelnih desktopa.

QEMU

Djelomične GPU tehnologije u desktop okruženjima: virtio-gpu, virgl i SPICE

Za one koji koriste KVM, QEMU, Proxmox ili slično, uobičajeni put uključuje Paravirtualizirani grafički kontroleri poput virtio-gpu, u kombinaciji s protokolima za udaljenu radnu površinu poput SPICE-aNa strani gosta, instaliran je drajver koji "razumije" taj virtuelni uređaj i omogućava određeni nivo osnovnog 2D/3D ubrzanja.

VirGL je dodatni sloj koji prevodi OpenGL pozive sa gosta na host GPUDakle, aplikacija unutar virtuelne mašine indirektno koristi stvarno 3D ubrzanje. U teoriji, ovo bi trebalo poboljšati grafičke performanse desktopa i aplikacija. Međutim, u praksi se ponekad dešava suprotno. Ako je iGPU hosta nedovoljno snažan ili implementacija nije usavršena, primjetan je značajan pad performansi.

U stvari, mnogi korisnici sa AMD iGPU-ovima (na primjer, Renoir) prijavljuju da kada aktiviraju VirGL, VM desktop postaje mnogo sporiji i težido te mjere da je gore nego korištenje Virtio-GPU-a "bez GPU-a". To ne znači da je VirGL beskoristan, ali uveliko zavisi od kombinacije. hardver + drajveri + opterećenje VM grafike.

U Proxmoxu, trio virtio-gpu + SPICE + virtuelni preglednik Ovo je obično minimalna razumna konfiguracija za grafičku Linux radnu površinu. Omogućava pristojan pokazivač miša, promjenu veličine prozora i bolju kompresiju slike od jednostavnog VNC-a, ali ipak... Ne očekujte isto iskustvo kao sa VMware ESXi udaljenom konzolom ili VMRC-om., koji su visoko usavršeni nakon godina optimizacije.

Zato su mnogi administratori koji dolaze iz ESXi-ja iznenađeni kada isprobaju Proxmox. Uprkos tome što ima vrlo moćan hipervizor, Osjećaj "brzog" rada udaljene radne površine je manji osim ako ne podešavate mnogo finih podešavanja ili ne koristite namjensku grafičku karticu.

Kada se isplati koristiti GPU passthrough, a kada ne?

Propusnost GPU-a ostaje najbolja opcija za određenu virtuelnu mašinu. Međutim, u svakodnevnim scenarijima korištenja desktop računara postoji nekoliko nedostataka. Na primjer. potreba za dodatnim monitorskim ulazom, gubitak GPU-a za host, dodatne komplikacije (IOMMU, grupe, BIOS, drajveri, greške sa suspendovanjem, itd.).

Ako ti je cilj to Jedna virtuelna mašina ima potpuno 3D ubrzanjeTrud se obično isplati. Projekti poput Looking Glassa vam omogućavaju da "ponovno ubrizgate" sliku virtuelne mašine na radnu površinu hosta kako biste izbjegli dodatne monitore. Ali, ako ono što želite je nekoliko uredskih ili testnih virtualnih mašina s dobrim osnovnim znanjemPrebacivanje GPU-a na svaki od njih nije izvodljivo.

Za moćne desktop računare, možete razmotriti hibridnu kombinaciju: Primarni GPU za hosta i prolaz iz drugog, skromnijeg GPU-a za određenu VMNa ovaj način održavate vrlo upotrebljivu radnu površinu hosta i dajete toj virtuelnoj mašini grafičko okruženje vrlo slično izvornom; analiza laptopa Može ponuditi perspektivu o alternativama za desktop računare u odnosu na laptope.

Sa laptopima, stvari postaju komplikovanije. Oni obično imaju jedan iGPU (ili iGPU + dGPU visoko integriran s firmverom)S ograničenim resursima i bez realne mogućnosti instaliranja druge grafičke kartice, prolaz podataka rijetko se isplati. Ima više smisla iskoristiti paravirtualizirane opcije (virtio-gpu, SPICE, RDP) kako bi se smanjila grafička očekivanja virtualnih mašina.

Ukratko, Propusnost je pravi alat za nekoliko vrlo zahtjevnih virtuelnih mašina.Za laboratorije s mnogo mašina ili laganim desktop računarima, više vas zanima podešavanje hipervizora, kontrola CPU/RAM/I/O opterećenja i odabir pravog protokola za udaljenu radnu površinu.

Hipervizori, NUMA, dinamička memorija i drugi faktori performansi

Osim GPU-a, način na koji hipervizor upravlja CPU, memorija, pohrana i mreža To direktno utiče na percipiranu fluidnost desktopa virtuelne mašine. Hyper-V, KVM, VMware i drugi imaju donekle različite filozofije, ali svi dijele zajedničke koncepte.

Hyper-V arhitektura, na primjer, zasnovana je na hipervizor koji kontroliše pristup hardveru, korijenska particija sa sistemom za upravljanje i sekundarne particije za virtuelne mašineOvo je podržano tehnologijama kao što su virtuelna NUMA, dinamička memorija, virtuelni prekidači, mrežni SR-IOV i optimizacije skladištenja kao što je ODX.

NUMA (neuniformni pristup memoriji) je posebno kritičan kod servera sa mnogo jezgara. Ako je velika VM loše particionirana između fizičkih NUMA čvorova, njena latencija memorije se povećava. I performanse pate, čak i ako se na papiru čini da ima dovoljno resursa. Idealno bi bilo da se vNUMA topologija virtuelne mašine uskladi sa pNUMA topologijom hosta.

Dinamička memorija (u Hyper-V-u, ballooning u drugim hipervizorima) može uštedjeti globalni RAM, ali Nije dobar izbor za opterećenja osjetljiva na latenciju poput baza podataka ili desktop računara s mnogo otvorenih aplikacija.U takvim slučajevima, preporučljivo je dodijeliti fiksnu memoriju kako bi se izbjegle pauze kada hipervizor odluči odjednom osloboditi svu RAM memoriju.

Skladištenje je daleko najčešće usko grlo. Preporučuje se Koristite VHDX diskove fiksne veličine, odvojite sistemske i podatkovne diskove, odlučite se za SSD diskove ili NVMe diskove poslovne klase i izbjegavajte RAID konfiguracije sa lošim ponašanjem pri pisanju (RAID 5/6) za intenzivna opterećenja.Gdje je dostupno, Storage Spaces Direct ili NVMe nizovi pomažu u održavanju latencija unutar prihvatljivih margina.

Na mreži je preporučljivo konfigurirati Vanjski virtualni prekidači na brzim mrežnim karticama (10 GbE ako je moguće), koristite NIC teaming, omogućite SR-IOV za vrlo velika mrežna opterećenja i podesite MTU i rasterećenja Samo ako cijeli mrežni lanac to podržava. Loša konfiguracija mreže može učiniti da udaljena radna površina, čak i sa dobrom grafičkom karticom, izgleda gore nego što se očekuje.

Testiranje opterećenja i slučajevi upotrebe: kada odabrati virtuelnu ili fizičku mašinu

Da biste odlučili da li migrirati grafičko opterećenje na virtuelnu mašinu ili ga ostaviti na fizičkom mediju, važno je Testirajte pomoću benchmarkova i alata za mjerenje stresa Trebali bi mjeriti korištenje CPU-a, RAM-a, diska i mreže. I, kada je moguće, korištenje GPU-a. Idealno bi bilo da se "prava" aplikacija uporedi s istom aplikacijom koja se izvršava u virtuelnoj mašini (VM).

Realističan obrazac bi mogao biti: Pokrenite sysbench ili Geekbench za CPU, stress-ng ili memtester za RAM, fio za 4K IOPS i latenciju diska, iperf3 za mrežni propusni opseg., i neke osnovne grafičke testove (npr. glxgears ili WebGL test baziran na pregledniku) i na hostu i na VM-u.

Ako je gubitak performansi u prihvatljivim granicama (na primjer, Manje od 10% opterećenja CPU-a/RAM-a i 15-20% opterećenja diskaAko se udaljena radna površina čini dovoljno glatkom za namjeravanu upotrebu (automatizacija ureda, administracija, lagani razvoj), virtualizacija je savršeno valjana opcija.

S druge strane, ako se aplikacija uveliko oslanja na GPU, niska latencija i visok održivi I/O protok (renderovanje u Blenderu, teški CAD, AI engine-i koji treniraju velike modele, igre, itd.), iskustvo je obično mnogo bolje na fizičkom serveru sa namenskom GPU-om ili na profesionalnoj virtuelizovanoj VM-u sa GPU prolazom.

Ključno je otkriti koja komponenta (spreman CPU, nedovoljno RAM-a, ograničeni I/O, nedostatak pravog GPU-a, spora mreža ili loše optimiziran desktop protokol) usporava svaku VM. primijeniti najjednostavnije i najisplativije moguće rješenje za taj slučaji sačuvajte velika ulaganja (namjenske grafičke procesore, SR-IOV, profesionalni hardver) za opterećenja gdje ona zaista prave razliku.