PORADNIKI

Plik stronicowania a gry: dlaczego wyłączenie go szkodzi

Windows może obiecać programom tylko tyle pamięci, ile wynosi RAM plus plik stronicowania. Usuń plik stronicowania, a ten pułap spadnie do wartości nieco niższej niż twój RAM, a gra, która do niego dojdzie, może się zawiesić albo wysypać.

Masz 32 GB RAM-u, więc jakiś poradnik powiedział ci, że plik stronicowania to pozostałość po słabszych komputerach i można się go pozbyć. Albo gra wysypała się z błędem braku pamięci, choć Menedżer zadań pokazywał mnóstwo wolnego RAM-u. Albo w środku meczu Windows wyświetlił „Your computer is low on memory” (komputerowi brakuje pamięci) i poprosił o zamknięcie programów.

Wszystkie trzy przypadki wynikają z tego samego mechanizmu, i nie jest to ten, który zakłada rada, żeby plik stronicowania wyłączyć.

Do czego służy plik stronicowania

Windows przydziela pamięć w dwóch krokach. Program najpierw zatwierdza pamięć (commit), co oznacza, że Windows obiecuje, że to miejsce istnieje, a dopiero później do niej zapisuje. Wprowadzenie do pliku stronicowania od Microsoftu definiuje pułap tych obietnic: systemowy limit zatwierdzeń (commit limit) to suma pamięci fizycznej i wszystkich plików stronicowania razem.

Suma wszystkich obietnic to obciążenie zatwierdzeniami (commit charge) i nie jest tym samym co używany RAM. Przewodnik Microsoftu po wydajności dotyczący zatwierdzonej pamięci zwraca uwagę, że zatwierdzona pamięć niekoniecznie została już zapisana czy choćby dotknięta, więc obciążenie może dojść do limitu, choć wciąż dostępna jest duża ilość pamięci fizycznej. Właśnie tak grze może zabraknąć pamięci, gdy Menedżer zadań pokazuje wolny RAM.

Plik stronicowania ma drugie zadanie: przechowuje pamięć, która została zmieniona, ale jest rzadko używana, żeby Windows mógł zabrać ją z RAM-u i oddać ten RAM czemuś bardziej zajętemu. Trzecie zadanie, zrzuty awaryjne, ma własną sekcję poniżej.

Co się dzieje bez niego

Bez pliku stronicowania, według przewodnika Microsoftu po rozmiarze pliku stronicowania, limit zatwierdzeń staje się nieco mniejszy niż zainstalowana pamięć fizyczna. Obietnice wszystkich programów muszą się wtedy zmieścić w RAM-ie, łącznie z pamięcią obiecaną, ale jeszcze nieużytą.

Gdy obciążenie dojdzie do limitu, system i procesy według wprowadzenia mogą nie dostać zatwierdzonej pamięci, co może powodować zawieszanie się, awarie i inne nieprawidłowe działanie. Mark Russinovich, pisząc w 2008 roku o pamięci wirtualnej Windows, ujął to wprost: gdy limit zatwierdzeń zostanie osiągnięty, alokacje zatwierdzające pamięć kończą się niepowodzeniem. Gra, która w tym momencie prosi o pamięć, nie dostaje jej.

Odpowiedział też na argument o szybkości. Niektórzy uważają, pisał, że brak pliku stronicowania daje lepszą wydajność, i przy niektórych obciążeniach tak może być; ale na ogół plik stronicowania pozwala Windows zapisać na dysk strony, które nie są aktywnie używane, co zostawia systemowi więcej użytecznej pamięci. Wprowadzenie Microsoftu dodaje, że niektóre produkty i usługi wymagają pliku stronicowania.

Zrzuty awaryjne też go potrzebują

Gdy Windows ulega awarii z błędem Stop, zapis tego, co zawiodło, domyślnie trafia na dysk przez plik stronicowania. Dokumentacja Microsoftu o zrzutach podaje, że zawartość RAM-u jest zapisywana do pliku stronicowania na partycji, na której zainstalowano Windows, że plik stronicowania musi być na woluminie rozruchowym, żeby funkcja zrzutu działała, i że jeśli przeniesiono go na inny wolumin, trzeba go przenieść z powrotem. Przy domyślnym typie zrzutu, Automatyczny zrzut pamięci, i pliku stronicowania ustawionym na „System managed size” (rozmiar zarządzany przez system) Windows dobiera rozmiar pliku stronicowania tak, żeby w większości przypadków dało się przechwycić zrzut pamięci jądra.

Okno pamięci wirtualnej samo przed tym ostrzega: jeśli wyłączysz plik stronicowania albo ustawisz jego rozmiar początkowy poniżej określonej liczby megabajtów i wystąpi błąd systemu, Windows może nie zapisać szczegółów, które pomogłyby zidentyfikować problem. Bez tych szczegółów ustalenie, dlaczego gra się wysypała, jest trudniejsze.

Sprawdź, jak blisko jesteś pułapu

Otwórz Menedżer zadań, przejdź do karty Wydajność i wybierz Pamięć. „Committed” (zatwierdzona) pokazuje dwie liczby: obciążenie zatwierdzeniami, a potem limit zatwierdzeń. Jeśli podczas gry pierwsza zbliża się do drugiej, jesteś blisko pułapu, o którym mówi ta strona, niezależnie od tego, co pokazuje „In use (Compressed)” (w użyciu, skompresowana).

Dwa przewodniki Microsoftu podają nieco inne progi dla tego stosunku. Przewodnik po wydajności podlinkowany wyżej uznaje wszystko powyżej 75% za bliskie wyczerpania; obecny przewodnik Microsoftu po rozwiązywaniu problemów z wydajnością podaje od 0 do 50% jako stan zdrowy, od 60 do 80% jako ostrzeżenie i od 80 do 100% jako stan krytyczny.

Żeby zobaczyć, który program trzyma obietnice, karta Szczegóły ma dla każdego procesu kolumnę „Commit size” (rozmiar zatwierdzenia); Wybierz kolumny dodaje ją, jeśli jest ukryta. Jeśli Windowsowi już zabrakło pamięci, zapisuje on zdarzenie 2004 od Microsoft-Windows-Resource-Exhaustion-Detector w dzienniku System, z komunikatem, który wymienia programy zużywające najwięcej pamięci wirtualnej. To polecenie PowerShell wyświetla ostatnie pięć:

Get-WinEvent -FilterHashtable @{LogName='System'; ProviderName='Microsoft-Windows-Resource-Exhaustion-Detector'; Id=2004} -MaxEvents 5 | Format-List TimeCreated, Message

Jeśli polecenie zgłosi, że nie znaleziono żadnych zdarzeń, w dzienniku nie ma takiego zdarzenia.

Jaki powinien być rozmiar

Zostaw „System managed size” (rozmiar zarządzany przez system). Przewodnik po rozmiarze podaje, że pliki stronicowania są domyślnie zarządzane przez system, a właściwy rozmiar zależy od ustawienia zrzutu awaryjnego i szczytowego obciążenia zatwierdzeniami, jest inny dla każdego systemu i nie da się go uogólnić. Russinovich z tego samego powodu nazwał stare wzory mnożenia RAM-u bezużytecznymi.

Plik stronicowania zarządzany przez system rośnie sam. Gdy obciążenie zatwierdzeniami przekroczy 90 procent limitu, rośnie do trzykrotności twojego RAM-u albo do 4 GB, zależnie od tego, która wartość jest większa, ale nie więcej niż do jednej ósmej woluminu, i tylko jeśli na dysku jest wolne miejsce. Zostaw trochę wolnego miejsca na dysku, na którym się znajduje.

Jest jeden udokumentowany wyjątek. W KB 4055223, podanym dla Windows 10 i Windows 11, Microsoft opisuje losowe błędy braku pamięci w programach, które często alokują pamięć; mogą one wynikać z opóźnienia, gdy automatyczny plik stronicowania rośnie. Obejściem jest rozmiar niestandardowy z rozmiarem początkowym równym 1,5-krotności RAM-u, podnoszonym dalej, jeśli błędy się powtarzają. To kłóci się z wcześniejszym stwierdzeniem, że rozmiaru nie da się uogólnić, i z Russinovichem, więc traktuj to jako poprawkę na ten jeden objaw, a nie jako regułę.

Żeby zmienić to ustawienie, naciśnij Win+R i uruchom SystemPropertiesAdvanced. W sekcji Wydajność wybierz Ustawienia..., otwórz kartę Zaawansowane i wybierz Zmień... w sekcji Pamięć wirtualna. Górne pole wyboru to Automatycznie zarządzaj rozmiarem pliku stronicowania dla wszystkich dysków. Pod nim, dla każdego dysku, są Rozmiar niestandardowy, „System managed size” (rozmiar zarządzany przez system) i „No paging file” (bez pliku stronicowania). Przycisk „Set” (ustaw) stosuje wybór do tego dysku; potem wybierz OK i uruchom komputer ponownie.

Zużycie SSD

Drugim powodem podawanym za usunięciem pliku stronicowania jest zużycie SSD. Blog inżynierów Windows 7 Microsoftu podał, że w telemetrii z 2009 roku odczyty pliku stronicowania przewyższały liczbę zapisów mniej więcej 40 do 1, i doszedł do wniosku, że niewiele plików lepiej nadaje się do umieszczenia na SSD niż plik stronicowania. To liczby z 2009 roku, więc traktuj je jako wzorzec, a nie dzisiejsze wartości.

Dla skali na nowszym dysku: karta katalogowa 990 PRO Samsunga z 2022 roku podaje dla modelu 1 TB 600 TB zapisanych danych w ramach pięcioletniej ograniczonej gwarancji, zależnie od tego, co nastąpi wcześniej. Rozłożone równomiernie daje to około 330 GB zapisu dziennie przez pięć lat; to dzielenie jest nasze, nie Samsunga.

Co nie pomaga

Powiązane

Czy ta strona pomogła?

Czego zabrakło albo co nie zadziałało? Czytamy każdą taką wiadomość.

Jeśli ta strona nie rozwiązała problemu, napisz do nas — podaj, który artykuł czytasz, a poprawimy ten artykuł.