Handheld pluje błędami VRAM w grach? Oto nietypowy powód braku pamięci graficznej

1 dzień temu 8
Reklama 3 tysiące złotych na miesiąc.

Zacząłem ostatnio pogrywać na handheldzie, dając już po raz drugi szansę tego typu mobilnemu komputerowi. Padło akurat na model ASUS ROG Ally X, a więc sprzęt, który pod względem specyfikacji wyróżnia się pozytywnie na tle konkurencji. Chociaż na samym początku zabawa zapowiadała się na bezproblemową, tak szybko trafiłem na pierwszy błąd “out of video memory“. Później błędy te zaczęły się mnożyć, bardziej zaawansowane graficznie gry crashowały jedna za drugą, choć jeszcze kilka godzin temu działały bez zarzutu. Rozwiązanie problemu leżało z kolei tam, gdzie byście się nie spodziewali – w ledwie kilku GB wolnej przestrzeni na dysku.

Handheld zaczął nagle sypać błędami z pamięcią graficzną? Powód może być nieoczywisty

Przenośne komputery do gier, takie jak ASUS ROG Ally i inne mobilne konsole/komputery zyskały ogromną popularność, oferując ciekawą formę dostępu do rozgrywki w kompaktowym formacie. Każdy z nich jest jedna skazany na wydajny procesor APU, a nie połączenie dedykowanego procesora centralnego i graficznego w jednym układzie ze współdzieloną pamięcią operacyjną (dynamiczną), a to rodzi problem. Nie byle jaki zresztą, bo niespodziewanie podczas zabawy możemy dostać “na twarz” krytyczny błąd gry, co z kolei nie pozwoli nam np. dotrzeć do bezpiecznego miejsca czy (gorzej) zapisać stanu rozgrywki. 

Mowa o błędzie związanym z brakiem pamięci wideo, czyli przerażającym “system run out of video memory”, który może nas dręczyć mimo faktu, że urządzenie jest wyposażone w nowoczesny układ graficzny i sporą ilość RAM. Jak to więc jest możliwe, że sprzęt z 16-, a nawet 24 GB pamięci RAM i solidnym GPU nagle nie wystarcza? Czy uległ uszkodzeniu? Czy to czas, aby wejść do podstawowych ustawień i zmienić balans pamięci dedykowanej iGPU a CPU? Wcale nie. Przynajmniej nie w większości przypadków, bo przyczyna tego typu problemów nie leży ani w uszkodzonej karcie graficznej, ani w realnym braku pamięci dynamicznej, a czymś, co z pozoru może wydawać się zupełnie niepowiązane z surową wydajnością w grach.

Czytaj też: Recenzja Doom: The Dark Ages. Niczym Wiedźmin 3 dla swojej serii

W sytuacjach, w których gry zaczynają sypać tym rodzajem błędów, system operacyjny może mieć problem z przydzieleniem niezbędnej pamięci wirtualnej, czyli pliku stronicowania (pagefile) w systemie Windows lub pliku/partycji swap w systemach Linux, takich jak SteamOS. Oba te mechanizmy pełnią zbliżoną funkcję, bo są buforem, który umożliwia kontynuowanie działania gry w momencie, gdy brakuje fizycznej pamięci RAM lub VRAM. Nowoczesne gry (podobnie jak sam system operacyjny) zakładają, że na dysku znajduje się pewna dodatkowa przestrzeń, z której system będzie mógł skorzystać w razie potrzeby. Jeśli tej przestrzeni brakuje, gra nie jest w stanie przydzielić kolejnych bloków pamięci do ładowania tekstur, danych poziomów czy zasobów GPU, a to właśnie skutkuje zawieszeniem lub natychmiastowym zamknięciem aplikacji. 

W Windowsie oznacza to często nieudane próby rozszerzenia pagefile’u, a w systemach opartych na Linuksie może dojść do aktywacji OOM Killera, czyli mechanizmu, który automatycznie zabija najbardziej pamięciożerne procesy, żeby zapobiec całkowitemu zawieszeniu się systemu. Dlatego też niezależnie od tego, czy grasz na Windowsie, SteamOS czy innym wariancie Linuxa, sam brak przestrzeni na dysku może prowadzić do błędów, które do złudzenia przypominają problemy z brakiem VRAM lub bezpośrednio z samym sprzętem. Innymi słowy? Jeśli problemy z VRAM nadeszły nagle, a nie grzebałeś w ustawieniach, to wystarczy, że wyczyścisz nieco partycję systemową. Usuń więc gry lub przenieś je na kartę pamięci albo zewnętrzny dysk. Byleby główny dysk sprzętu zyskał nieco elektronicznego luzu. Proste? Proste. 

Zrozumienie VRAM, RAM i pamięci wirtualnej w handheldzie (i laptopie)

Jeśli chcecie wiedzieć więcej na temat tego problemu, to już śpieszę z wyjaśnieniem, bo czy aby na pewno wiesz, jak działa system pamięci w nowoczesnych handheldach? Wbrew pozorom, to akurat nie jest nic nowego, bo tak samo działają wszystkie komputery i laptopy z APU. Takie urządzenia niezmiennie od lat i od przeznaczenia korzystają z trzech podstawowych rodzajów pamięci:

  • RAM (pamięć operacyjna) – np. 16 GB pamięci systemowej wykorzystywanej zarówno przez procesor, jak i zintegrowany układ graficzny.
  • VRAM (Video RAM) – pamięć przeznaczona wyłącznie na potrzeby GPU. W przypadku kart graficznych zewnętrznych (np. desktopowych) VRAM to oddzielna pamięć GDDR, ale w urządzeniach przenośnych z APU (procesor + GPU w jednym) część RAM jest rezerwowana na VRAM. Tak też sprawa wygląda w większości handheldów.
  • Pamięć wirtualna:
    • W Windowsie to tzw. plik stronicowania (pagefile), a więc specjalny plik na dysku SSD, który służy jako rozszerzenie RAM. Może również pełnić funkcję bufora GPU (DirectX), co pozwala na dynamiczne zwiększanie efektywnego VRAM.
    • W systemach Linux to z kolei plik swap lub partycja swap, które działają analogicznie, bo przechowują dane tymczasowo, gdy kończy się RAM. W systemach z Mesa i Vulkanem również może być używane jako bufor pośredni między RAM a GPU.

Gdy gra ładuje wysokiej jakości tekstury lub rozległe światy, może przekroczyć dostępną fizyczną ilość VRAM. W takiej sytuacji Windows próbuje wykorzystać RAM systemowy, a nawet plik stronicowania (czyli przestrzeń dyskową), by obsłużyć nadmiar danych. W Windowsie ten proces nadzoruje DirectX, który dynamicznie zarządza budżetem VRAM. Jeśli jednak pagefile jest zbyt mały lub na dysku brakuje wolnej przestrzeni, system nie może przydzielić odpowiedniej ilości bufora i gra kończy działanie z błędem. Microsoft zresztą jasno ostrzega, że “niewystarczająca ilość wolnego miejsca na dysku uniemożliwia poprawne zarządzanie pamięcią wirtualną, co może skutkować błędami aplikacji lub zawieszaniem systemu”.

W Linuxie sytuacja jest podobna, bo brak wystarczającego pliku swap lub jego niewłaściwa konfiguracja skutkuje brakiem możliwości alokacji dodatkowej pamięci dla procesów graficznych. Mechanizm OOM Killer może zabić grę w trakcie działania, gdy zużycie RAM i VRAM przekroczy możliwości systemu. Dotyczy to szczególnie urządzeń z mniejszym pokładem pamięci RAM, takich jak Steam Deck czy GPD Win, ale musimy pamiętać, że niezależnie od systemu, gra może się “wykrzaczyć” nawet wtedy, gdy VRAM jest teoretycznie dostępny, ale wolna pamięć masowa liczy ledwie kilka gigabajtów. 

Jak rozwiązać problem z błędami VRAM na handheldzie (Windows, Linux, SteamOS)?

Problem z błędami Out of VRAM czy Out of memory nie dotyczy wyłącznie użytkowników systemu Windows. Chociaż objawy są najbardziej znane z platformy Microsoftu, to także użytkownicy SteamOS (Steam Deck) czy innych systemów Linux mogą doświadczyć podobnych problemów podczas grania przy nieodpowiednim zarządzaniu swoim sprzętem. Podstawowy sposób walki z tym problemem sprowadza się do zachowywania przynajmniej trzycyfrowej wolnej przestrzeni na dysku czy (precyzyjnej) konkretnej partycji systemowej. 

Czytaj też: Recenzja Split Fiction. Oto najlepsza casualowa gra kooperacyjna dla dwóch graczy

W praktyce można zejść jednak znacznie niżej, bo w rejony 30-50 wolnych GB, ale te “100 wolnych gigabajtów” to w pewnym sensie solidna granica, której warto się trzymać… i regularnie monitorować, czy aby z wolnych 100 GB nie zrobiło się nagle kilkanaście. Pliki zapisu gier mogą bowiem swoje ważyć, a i codzienne korzystanie ze sprzętu jest w stanie doprowadzić do nagromadzenia się plików na pulpicie, w dokumentach czy folderze z pobranymi plikami. Efekt? Dziś pousuwacie stare gry i pliki, a po kilku tygodniach problem może powrócić i wymagać już bardziej uważnego przeglądania tego, co powinno i w ogóle może pójść do kosza, a co niekoniecznie.

Sam jestem zresztą tego świetnym przykładem, bo pierwsze dni z dostępem do ASUS ROG Ally X spędziłem na żonglerce grami na lewo i prawo, nie zwracając w ogóle uwagi na to, że regularnie zbliżam się do poziomu ledwie kilkunastu wolnych GB na dysku, które doprowadzały do błędu. Mam przez to zresztą wrażenie, że producent powinien zadbać o to, aby informować użytkowników o zbliżaniu się do niebezpiecznej progu wolnej pamięci masowej. Zwłaszcza że “ukrywa” surowy system pod swoją fikuśną gamingowa nakładką, w której dokopanie się do informacji o stanie dysku, nie jest wcale łatwe. 

Czytaj też: Czy nostalgia to uratuje? Sprawdziłem Gothic Remake Nyras Prologue

Po takim zwolnieniu miejsca na dysku systemowym zabawa “w naprawę” handhelda powinna się skończyć, a wszystko powinno wrócić do normalności i już nigdy nie rzucić Wam na twarz błędu “system run out of memory” tam, gdzie ten problem nie ma prawa wystąpić. Oznacza to również, że powinniście zostawić w przysłowiowym “spokoju” fabryczne ustawienia urządzenia co do zarządzania “dodatkową pamięcią operacyjną” i regulowania przydziału fizycznego DRAM dla procesora centralnego i graficznego. Tyczy się to zwłaszcza ustawienia automatycznego, bo w nim system potrafi “sam” dopasowywać w sposób dynamiczny te sfery pamięci pod konkretne scenariusze. Nie zawsze działa to oczywiście idealnie i dlatego warto przynajmniej wiedzieć o tej opcji, aby pobawić się w ustawieniach, kiedy już wszystko inne zawiedzie.

Ręczne ustawienie wielkości zarówno pliku swap, jak i pliku stronicowania daje nam bowiem gwarancję, że system operacyjny ma zarezerwowaną, stałą przestrzeń dyskową na pamięć wirtualną. Dzięki temu w stu procentach unikamy sytuacji, w której Windows w trakcie gry próbuje desperacko rozszerzyć plik stronicowania, choć nie ma do tego dostępnych zasobów. Jeśli więc chcecie takie zabezpieczenie, to śmiało – pójdźcie w to. Pamiętajcie przy okazji, żeby zaktualizować sterowniki oraz BIOS i dbać o to, aby podczas grania w tle nie działały żadne zasobożerne (a nawet ogólnie żadne) programy i tym bardziej inne gry, bo przecież one również zajmują część pamięci operacyjnej. Podsumowując więc, powrotu do beztroskiego grania życzę!

Przeczytaj źródło