- Natalie Vock je s popravki za jedro in KDE dala prednost igralnemu VRAM-u v ospredju, kar je zmanjšalo porabo GTT in zatikanje.
- dmemcg-booster in plasma-foreground-booster usklajujeta jedro in namizje za zaščito pomnilnika grafičnega procesorja, dodeljenega aktivni igri.
- Izboljšave koristijo predvsem grafičnim procesorjem AMD z 8 GB VRAM-a ali manj, ki so že na voljo v sistemu CachyOS in so načrtovane za integracijo v sisteme višje v sistemih.
- Novi sistem bolje izkorišča vsak MB VRAM-a, stabilizira minimalni FPS in podaljšuje življenjsko dobo grafičnih kartic srednjega razreda v Linuxu.
Če igrate igre na računalniku z operacijskim sistemom Linux in še vedno uporabljate grafično kartico z 8 GB VRAM-a ali manj , ste verjetno v najnovejših igrah že opazili zatikanje, mikro zatikanje in padce FPS. Presenetljivo je, da ta slaba izkušnja pogosto ni toliko posledica surove moči vašega grafičnega procesorja, temveč načina, kako sistem upravlja video pomnilnik, ko se stvari zapletejo.
Vse to se je pravkar precej spremenilo po zaslugi dela Natalie Vock, inženirke v ekipi za grafične gonilnike pri Valveu , specializirane za RADV (gonilnik Vulkan za grafične procesorje AMD). Vock je razvila vrsto popravkov za jedro Linuxa, KDE Plasma in ekosistem Gamescope, ki popolnoma spremenijo način, kako sistem odloča, kaj ostane v VRAM-u in kaj se izvrže v sistemski RAM, ko ni več prostora.
Težava z grafičnimi procesorji z 8 GB VRAM-a v Linuxu
V zadnjih letih je količina video pomnilnika postala resno ozko grlo. Sodobne igre nalagajo ogromne teksture, kompleksno geometrijo in napredne učinke , ki požirajo VRAM. Z 8 GB ali manj, kar je zelo pogosto pri grafičnih karticah srednjega razreda, igra zlahka zapolni pomnilnik grafične kartice takoj, ko le malo povečate nastavitve.
V Linuxu, ko se VRAM začne polniti, pride v poštev tabela prevajanja grafike (GTT) . V bistvu sistem začne premikati nekatere podatke grafičnega procesorja v RAM računalnika, da prepreči zrušitve. Težava je v tem, da je RAM, čeprav je hiter, precej počasnejši od VRAM-a, in ta skok v zakasnitvi povzroči zatikanje, skoke v hitrosti sličic in neenakomerno igralno izkušnjo.
Do sedaj jedru Linuxa manjkal resnično dovršen način za določanje, kateri podatki naj ostanejo v VRAM-u in kateri se lahko pošljejo v RAM brez povzročanja resnih težav. Sistem ni pravilno upošteval, ali gre za celozaslonsko igro ali brskalnik, ki teče v ozadju . V mnogih primerih je bila igra sama delno izvržena iz VRAM-a, medtem ko so manj pomembne namizne aplikacije še naprej zasedale video pomnilnik.
Vse to je za igralce privedlo do vse prej kot idealnega scenarija: z 8 GB grafične kartice je sistem v zahtevnih igrah, kot je Cyberpunk 2077 na Steam Play , komaj izkoristil 6 GB VRAM-a, medtem ko je bilo GTT-ju v RAM-u dodeljenih več kot 1,3 GB – popolnoma nezaželeno. Skratka: prostega VRAM-a je bilo veliko, pa se je igra še vedno mučila.
Praktične posledice za uporabnika so bile jasne: nestabilen minimalni FPS, zatikanje pri nalaganju novih območij , manjše zamrznitve pri obračanju kamere ali vstopu na drugo območje in splošen občutek, da je »grafična kartica komaj zadostna«, medtem ko je v resnici ozko grlo izviralo iz slabo nastavljenega upravljanja pomnilnika.

Predlog Valvea in Natalie Vock: dajte prednost igranju iger na VRAM-u
Da bi se s to težavo spopadel v samem korenu, je Vock zasnoval rešitev, ki združuje spremembe jedra z orodji uporabniškega prostora . Osrednja ideja je preprosta za razlago, čeprav se za njo skriva veliko inženiringa: Linuxu je treba jasno povedati, katera aplikacija je v ospredju in bi morala imeti absolutno prednost v VRAM-u.
Osrednji tehnični vidiki tega predloga so popravki za krmilnik nadzorne skupine Device Memory Management (DRM) in vrsta pomembnih sprememb podsistema za upravljanje pomnilnika Translation Table Maps (TTM) v jedru. TTM je odgovoren za določanje, kako se pomnilnik dodeljuje in odstranjuje v grafičnih napravah, zaradi česar je idealno mesto za učenje sistema novega načina razmišljanja.
Ti popravki omogočajo jedru , da prepozna pomnilniški bazen, povezan z igro v ospredju , in ga obravnava kot VIP. Ko je treba sprostiti VRAM, ker je poln, bo sistem najprej preveril procese namizja, brskalnike, predvajalnike medijev ali pripomočke, ki se izvajajo v ozadju, kritično vsebino igre pa bo pustil kot zadnjo možnost.
Preprosteje povedano: od zdaj naprej bo VRAM, če igrate igro z odprtimi več okni, dodeljen igri pred vsem drugim . Linux se bo dotikal virov aktivne igre le, ko bo to nujno potrebno, kar močno zmanjša verjetnost zakasnitve zaradi slabe odločitve o izvrženju.
Za to spremembo se skriva zelo tesna integracija s funkcionalnostjo cgroups v Linuxu , mehanizmom, ki ga systemd že uporablja za izolacijo in nadzor virov aplikacij. Vock je ta sistem izkoristil za ustvarjanje načina za razvrščanje in zaščito pomnilnika GPU po skupinah procesov , kar jedru omogoča, da ves čas ve, kaj je treba ohraniti in kaj je mogoče žrtvovati.
dmemcg-booster: srce novega nadzora pomnilnika naprave
Ključna komponenta v uporabniškem prostoru se imenuje dmemcg-booster . Gre za storitev systemd, ki orkestrira, kako se omejitve in prioritete skupine za nadzor pomnilnika naprave (DMEM cgroup) uporabljajo za aplikacije, ki uporabljajo grafični procesor.
Njegova glavna funkcija je, da sistemu jasno pove, kateri program naj bo v danem trenutku zaščiten v VRAM-u. Ko zaženete igro in ta postane glavno okno, jo dmemcg-booster označi kot prednostni proces znotraj svoje skupine cgroup, tako da jedro razume, da do tega video pomnilnika ni mogoče zlahka dostopati.
Brez tega mehanizma je jedro vso porabo VRAM-a obravnavalo kot praktično enakovredno, kar je vodilo do "slepih" izmetavanja. Če je treba pri delujočem dmemcg-boosterju sprostiti prostor, ker je pomnilnik poln, bodo prvi izmetani procesi sekundarni procesi : namizja, brskalniki ali aplikacije, ki niso v fokusu.
Ta prednostna razvrstitev ne zmanjša čarobno porabe VRAM-a v igri, vendar kar najbolje izkoristi vsak zadnji razpoložljivi megabajt . Na ta način lahko grafični procesor, ki je prej zaradi načina upravljanja pomnilnika zaostajal, zdaj deluje veliko bližje svojemu pravemu potencialu.
V testih, ki jih je Vock delil z igro Cyberpunk 2077 na 8GB kartici prek Steam Play, je sprememba zelo opazna: pred popravki je igra komaj uporabljala 6 GB VRAM-a, pri čemer se je približno 1,37 GB prelilo v GTT v RAM-u. Po aktivaciji nove pomnilniške arhitekture igra uporablja približno 7,4 GB dejanskega VRAM-a , medtem ko se poraba GTT zmanjša na približno 650 MB, kar pomeni, da se je zmanjšala za več kot polovico.
plasma-foreground-booster in koordinacija s KDE Plasma
Da bi celoten sistem prioritet deloval gladko, ni dovolj le spremeniti jedro; namizno okolje mora sistemu povedati tudi, katero okno je dejansko v ospredju . Tukaj pride na vrsto druga komponenta, ki jo je razvil Valve: plasma-foreground-booster.
Ta modul je zasnovan za integracijo s KDE Plasma in deluje kot most med namizjem in mehanizmi cgroups pomnilnika naprave. Njegovo poslanstvo je preprosto, a ključno: v realnem času sporočati, katero okno je aktivno (običajno celozaslonski način igre), da lahko sistem dinamično prilagodi prioritete VRAM-a.
Ko preklopite med aplikacijami ali pritisnete alt+tab za v drugo okno, plasma-foreground-booster posodobi informacije, poslane jedru in dmemcg-booster, tako da se lahko prioriteta "crown" na VRAM-u spremeni, če želite. To je koreografija med namizjem in jedrom, ki prej preprosto ni obstajala.
Poleg KDE Plasma je Valve upošteval tudi tiste, ki uporabljajo druga namizna okolja. Za te uporabnike rešitev vključuje uporabo najnovejših različic Gamescopea , Valveovega znanega mikrokompozitorja, ki se pogosto uporablja v Steam Decku in igralnih okoljih. Gamescope lahko opravlja podobno funkcijo kot Plasma: prepozna okno igre in mu dodeli prednost glede virov ali, v nekaterih delovnih procesih, uporablja orodja, kot je Bottles, za upravljanje sej združljivosti.
Osnovna ideja je zgraditi usklajen ekosistem, od jedra do namizja , v katerem je celoten sistem usklajen s tem, kar si uporabnik resnično želi: da igra pred njim deluje čim bolj gladko, tudi če v ozadju tečejo druge stvari.
Praktični rezultati v igrah, kot je Cyberpunk 2077
Poleg teorije je pomembno, kako se vse to prevede v vsakodnevno igralno izkušnjo. V javnih primerih, ki jih je pokazal Vock, je eden najbolj reprezentativnih primerov Cyberpunk 2077, ki deluje na Steam Play z 8 GB grafičnim procesorjem.
V stanju pred popravkom je igra delovala s porabo VRAM-a, ki se je na papirju zdela sprejemljiva, vendar v resnici še zdaleč ni izkoristila vsega razpoložljivega pomnilnika: približno 6 GB na grafičnem procesorju in 1,37 GB se je "razlilo" na GTT . Zaradi tega nenehnega razlitja je bil znaten del grafičnih podatkov dejansko v sistemskem RAM-u, zaradi česar je grafični procesor moral do njih dostopati prek GTT in povzročati konice v odzivnem času.
Z novo arhitekturo se je igralna pokrajina bistveno spremenila. Cyberpunk 2077 zdaj uporablja skoraj ves razpoložljivi VRAM, približno 7,4 GB , medtem ko poraba GTT pade na približno 650 MB. Manj izvrženega pomnilnika pomeni manj počasnih dostopov do RAM-a in s tem veliko stabilnejšo igralno izkušnjo.
Pomembno je poudariti, da ti popravki niso toliko osredotočeni na povečanje najvišjega FPS – tiste številke, ki jo vidite, ko strmite v steno – temveč na izboljšanje minimalnega FPS in stabilnosti časa sličic . Z drugimi besedami, zmanjšujejo zatikanje, zgladijo skoke v hitrosti sličic in izboljšajo splošni občutek tekočnosti, kar igralci resnično opazijo pri premikanju po Night Cityju ali katerem koli drugem zahtevnem odprtem svetu.
V praksi je prednost še posebej opazna v sistemih, kjer je bil VRAM že tako ali tako preobremenjen: grafične kartice z 8 GB ali manj, ki poganjajo sodobne AAA igre , pri čemer je hkrati odprtih več programov. Prav v teh "komaj delujočih" scenarijih lahko dobro upravljanje izmetov kartic in prioritet podaljša življenjsko dobo kartice za nekaj generacij.
Distribucije, združljivost in trenutno stanje popravkov
V času objave podrobnosti je bil najlažji način za testiranje te nove pomnilniške arhitekture uporaba CachyOS-a , distribucije, ki je bila pred drugimi in je te popravke privzeto integrirala tako v jedro kot v uporabniški prostor.
Za druge distribucije je mogoče sami prevesti popravljeno jedro ter paketa dmemcg-booster in plasma-foreground-booster , čeprav to zahteva nekoliko višjo raven strokovnega znanja. Namen Vocka in ekosistema je, da se sčasoma vse te izboljšave integrirajo v uradno jedro Linuxa in formalna repozitorija KDE in Valve, tako da bodo uporabniki Ubuntuja, Fedore, Archa in drugih distribucij lahko imeli koristi, ne da bi morali spreminjati karkoli nenavadnega. Za tiste, ki potrebujejo plasti združljivosti, pa obstajajo tudi možnosti, kot je Wine.
Obstaja pomembna razlika: te spremembe so namenjene predvsem grafičnim procesorjem AMD z gonilniki odprte kode in skladom RADV. Razlog je preprost: upravljanje pomnilnika pri NVIDIA se močno zanaša na lastniške gonilnike zaprte kode , kar močno omejuje možnosti jedra in odprtih uporabniških prostorov. V primeru AMD-ja gonilniki odprte kode omogočajo veliko boljšo nastavitev interakcije med jedrom, DRM, TTM in grafičnim gonilnikom.
Kar zadeva časovnico, nekatere distribucije že delajo na integraciji teh izboljšav v kratkoročnem in srednjeročnem obdobju. Ko se bo jedro s podporo za gonilnik cgroup DMEM in popravke TTM bolj uveljavilo v stabilnih različicah, bo vse pogosteje najti distribucije, ki vključujejo določanje prioritet VRAM-a za igre praktično "takoj po namestitvi".
Za tiste, ki uporabljajo namizne računalnike, ki niso KDE Plasma, bo najbolj logična pot uporaba Gamescopa v njegovi najnovejši različici, saj ga Valve postavlja kot standardni del za upravljanje igralnih sej, zlasti na strojni opremi, kot je Steam Deck ali hipotetičnih prihodnjih napravah tega podjetja.
Vpliv na igralno izkušnjo in življenjsko dobo strojne opreme
Neposreden rezultat vsega tega dela je, da lahko milijoni igralcev z 8 GB grafičnimi karticami še naprej dvigujejo zmogljivosti svojih kartic, ne da bi morali drastično znižati grafične nastavitve ali takoj nadgraditi strojno opremo. Pristop Vocka in Valvea poudarja učinkovitost programske opreme in inteligentno dodeljevanje virov , kar do neke mere kompenzira fizične omejitve samega čipa in njegovega pomnilnika.
Namesto da bi se sprijaznili s tem, da se VRAM polni in da sistem naključno odloča, kaj bo izvrgel, imamo zdaj jasno strategijo: igra v ospredju zadnja zapusti VRAM . To pomeni, da bo igralni mehanizem tudi pri težkih teksturah in kompleksnih okoljih bolj verjetno ohranil svoje kritične podatke v hitrem pomnilniku grafičnega procesorja, kar bo zmanjšalo število zrušitev.
Za povprečnega uporabnika se to prevede v nekaj zelo oprijemljivega: lahko še naprej uporabljate namizje, imate odprt brskalnik z več zavihki, predvajalnik glasbe ali aplikacije za klepet, saj veste, da bodo v kritičnem trenutku najprej žrtvovani oni v smislu VRAM-a in ne vaša igra.
S širšega vidika Vockovo delo tudi krepi sporočilo, da Valve resno misli z igranjem iger na Linuxu . Ne gre le za izdajo konzol, kot je Steam Deck ali potencialnih Steam Machines z 8 GB skupnega video pomnilnika GDDR6; vlaga tudi sredstva v izboljšanje celotnega ekosistema: jedra, gonilnikov, namiznega okolja in orodij, kot je GameScope.
Za tiste, ki jih skrbi zakasnitev, časi sličic in stabilnost v kompleksnih igrah, ti popravki ponujajo ravno tisto, kar so potrebovali: upravljanje brcanja glede na kontekst , ki razume, kaj je igra v celozaslonskem načinu in kaj je zgolj hrup v ozadju na namizju.
Skratka, nova infrastruktura, ki jo je zasnovala Natalie Vock, predstavlja pomemben korak naprej v načinu, kako Linux ravna z video pomnilnikom v sistemih z omejenimi viri. Z združevanjem kontrolnih skupin pomnilnika naprav, popravkov podsistema TTM, storitve dmemcg-booster in integracije s KDE Plasma in Gamescope sistem končno deluje v korist igralca, ne obratno. Za vse, ki igrajo igre v Linuxu z 8 GB grafičnim procesorjem ali manj, je to ena tistih tihih izboljšav, ki jih, ko jih enkrat izkusiš, zelo pogrešaš, če izginejo.
Strasten pisec o svetu bajtov in tehnologije nasploh. Rad delim svoje znanje s pisanjem in to je tisto, kar bom počel v tem blogu, saj vam bom pokazal vse najbolj zanimive stvari o pripomočkih, programski opremi, strojni opremi, tehnoloških trendih in še več. Moj cilj je, da vam pomagam krmariti po digitalnem svetu na preprost in zabaven način.
Kazalo
- 1 Težava z grafičnimi procesorji z 8 GB VRAM-a v Linuxu
- 2 Predlog Valvea in Natalie Vock: dajte prednost igranju iger na VRAM-u
- 3 dmemcg-booster: srce novega nadzora pomnilnika naprave
- 4 plasma-foreground-booster in koordinacija s KDE Plasma
- 5 Praktični rezultati v igrah, kot je Cyberpunk 2077
- 6 Distribucije, združljivost in trenutno stanje popravkov
- 7 Vpliv na igralno izkušnjo in življenjsko dobo strojne opreme
