Jak wybrać rozmiar pliku stronicowania

  1. Pamięć wirtualna
  2. Aktualne ustawienia pliku stronicowania
  3. Zrzut pamięci
  4. Określanie wymaganego rozmiaru pliku stronicowania
  5. Dostosowywanie
  6. Wniosek

Pytanie o rozmiar pliku stronicowania często znajduje się w różnych zasobach technicznych, ale nie ma konkretnych zaleceń na ten temat. Istnieją obie wskazówki, aby zainstalować plik stronicowania 1,5-2 razy więcej niż ilość zainstalowanej pamięci i całkowicie go wyłączyć. Oba są absolutnie bez znaczenia z praktycznego punktu widzenia. Dlatego dzisiaj omówimy, czym jest plik stronicowania (jest to również plik wymiany, jest to plik stronicowania) i jak wybrać i odpowiednio dostosować jego rozmiar.

Aby zrozumieć, dlaczego potrzebujesz pliku wymiany, powinieneś najpierw zrozumieć zasady pamięci w systemie Windows. Dlatego zaczynamy od teorii.

Pamięć wirtualna

Z reguły mówiąc o pamięci, mamy na myśli moduły RAM, które są fizycznie zainstalowane na komputerze lub pamięci fizycznej . Ilość dostępnej pamięci fizycznej jest ściśle ograniczona i zależy od możliwości sprzętu, warunków bycia i licencjonowania systemu operacyjnego. W celu obejścia tych ograniczeń w systemach operacyjnych Windows używany jest zasób, taki jak pamięć wirtualna .

System operacyjny Windows nie działa z pamięcią fizyczną, ale z pamięcią wirtualną. Technicznie pamięć wirtualna składa się z pamięci fizycznej (RAM) i specjalnych plików stronicowania połączonych w jedną wirtualną przestrzeń adresową. Każdemu uruchomionemu procesowi przydzielana jest jego własna, niezależnie od innych procesów, przestrzeń adresowa w pamięci wirtualnej, w której działa i jest zarządzana. Wskaźniki do adresów w wirtualnej przestrzeni adresowej służą do uzyskiwania dostępu do pamięci, a sam proces nie wie, gdzie są przechowywane jego dane - w pamięci RAM lub w pliku decyduje o tym system operacyjny.

Maksymalna możliwa ilość dostępnej pamięci wirtualnej zależy od wydajności systemu operacyjnego. W systemie 32-bitowym proces może adresować nie więcej niż 4 gigabajty (232) pamięci. W przypadku procesu 64-bitowego teoretyczny limit wynosi 16 eksabajtów (264), aw praktycznie nowoczesnych 64-bitowych wersjach systemu Windows przestrzeń adresowa jest obsługiwana do 16 terabajtów.

Uwaga Niektóre 32-bitowe wersje systemu Windows Server wykorzystują technologię PAE do adresowania do 64 GB pamięci. Dowiedz się więcej o PAE. tutaj .

W przeciwieństwie do pamięci fizycznej pamięć wirtualna ma znacznie bardziej elastyczne ograniczenia. Pozwala to na jednoczesne uruchomienie dużej liczby procesów, które nie mieszczą się w pamięci fizycznej. Głównym zadaniem mechanizmu pamięci wirtualnej jest więc rozszerzenie dostępnej pamięci komputera.

Zarządzanie pamięcią odbywa się w ten sposób.

Wirtualna przestrzeń adresowa jest podzielona na bloki o jednakowej wielkości, nazywane stronami. Tak więc, nawiasem mówiąc, plik z nazwą strony jest plikiem strony. Pamięć fizyczna jest również podzielona na sekcje zwane ramkami stron, które służą do przechowywania stron.

Każdemu procesowi przy uruchamianiu przydzielana jest ″ część space przestrzeni adresowej w pamięci wirtualnej. W związku z tym w każdym punkcie czasowym w pamięci znajdują się strony z wirtualnej przestrzeni adresowej każdego procesu. Strony znajdujące się w pamięci fizycznej i dostępne natychmiast są nazywane prawidłowymi stronami, a strony, które są obecnie niedostępne, takie jak strony na dysku, nazywane są niepoprawnymi stronami.

Gdy proces uzyskuje dostęp do strony pamięci oznaczonej jako nieprawidłowa, występuje błąd strony (błąd strony). Gdy wystąpi przerwanie, menedżer pamięci wirtualnej znajdzie żądaną stronę i załaduje ją do wolnej ramki pamięci fizycznej. W rzeczywistości proces ten nazywa się stronicowaniem.

Gdy brakuje pamięci fizycznej, menedżer pamięci wybiera ramki, które można zwolnić, i przesyła ich zawartość na dysk w pliku stronicowania. Zasada transferu jest następująca: gdy proces używał wszystkich przydzielonych mu ramek, to przy każdym przerwaniu strony w tym procesie system usuwa jedną ze swoich stron z pamięci fizycznej. Wybór strony jest przeprowadzany zgodnie z zasadą „kto pierwszy przyjdzie” - pierwszy na liście (pierwszy na wejściu, pierwszy na wyjściu, FIFO), tj. Strona, która była w pamięci przez najdłuższy czas, jest przenoszona do pliku stronicowania.

Każdy proces ma swój własny zestaw roboczy (zestaw roboczy) - zestaw stron w pamięci fizycznej. Zestaw roboczy określa rozmiar pamięci fizycznej przydzielonej do procesu, ma minimalny i maksymalny rozmiar. W momencie uruchomienia procesowi przypisywany jest minimalny rozmiar zestawu roboczego, tj. Minimalna liczba stron gwarantowanych w pamięci RAM. Przy wystarczającej ilości wolnej pamięci fizycznej proces może zwiększyć swój zestaw roboczy do rozmiaru równego maksymalnemu zestawowi roboczemu. Gdy zaczyna brakować pamięci, menedżer pamięci wirtualnej zaczyna wycinać zestaw roboczy wszystkich procesów do minimum, usuwając dodatkowe strony z pamięci fizycznej.

Po zredukowaniu zestawu roboczego procesu do minimum, menedżer pamięci śledzi przerwania stron generowane przez każdy proces. Przy dużej liczbie przerwań dyspozytor może zwiększyć rozmiar zestawu roboczego procesu, w przypadku braku kontynuuje zmniejszanie zestawu roboczego do momentu wystąpienia przerwy. Pojawienie się przerwania wskazuje, że osiągnięto minimalny rozmiar pamięci wymagany przez proces do działania. Zapewnia to równowagę między zużyciem pamięci fizycznej a wydajnością.

W rzeczywistości jest to bardzo przybliżony opis pracy pamięci wirtualnej, ale dla ogólnego zrozumienia jest to wystarczające. Dlatego jesteśmy związani z teorią i przystępujemy do praktyki.

Aktualne ustawienia pliku stronicowania

Możesz wyświetlić bieżący rozmiar pliku w przystawce Właściwości systemu. Aby to zrobić, kliknij Win + R i uruchom komendę sysdm.cpl . Następnie przejdź do zakładki „Zaawansowane”, kliknij przycisk „Ustawienia” w polu „Wydajność” i przejdź do zakładki „Zaawansowane” w oknie, które się otworzy.

Tutaj możesz zobaczyć całkowity rozmiar pliku stronicowania na wszystkich dyskach, a za pomocą przycisku „Zmień” możesz przejść do jego ustawień.

Tutaj możesz zobaczyć całkowity rozmiar pliku stronicowania na wszystkich dyskach, a za pomocą przycisku „Zmień” możesz przejść do jego ustawień

Domyślnie włączona jest automatyczna kontrola rozmiaru pliku stronicowania. Oznacza to, że system operacyjny tworzy jeden plik wymiany pagefile.sys w katalogu głównym dysku systemowego i automatycznie ustawia jego rozmiar na podstawie jego potrzeb.

Zrzut pamięci

Aby zrozumieć, czym kieruje się system, wybierając rozmiar pliku stronicowania, przejdźmy ponownie do teorii i zwróćmy się do takiej koncepcji jako zrzutu pamięci. Faktem jest, że oprócz rozszerzenia pamięci fizycznej, plik stronicowania ma jeszcze jeden cel - jest używany podczas tworzenia zrzutów pamięci awarii w przypadku awarii systemu. Zdarza się to w następujący sposób.

Podczas uruchamiania system operacyjny tworzy mapę sektorów zajmowanych przez plik stronicowania na dysku i zapisuje go w pamięci. W przypadku awarii systemu sprawdzana jest integralność tej karty, sterownika dysku i struktury kontroli sterownika dysku. Jeśli ich integralność nie jest zagrożona, jądro systemu wywołuje specjalne funkcje wejścia / wyjścia zaprojektowane w celu zachowania obrazu pamięci po awarii systemu i zapisuje dane z pamięci na dysk w pliku stronicowania przy użyciu zapisanej mapy sektora.

Przy następnym uruchomieniu systemu menedżer sesji (usługa podsystemu menedżera sesji, SMSS) inicjuje plik strony i sprawdza obecność nagłówka zrzutu. Jeśli istnieje nagłówek, dane są kopiowane z pliku stronicowania do pliku zrzutu awaryjnego, a odpowiedni wpis jest wprowadzany w dzienniku systemowym.

W związku z tym podczas automatycznego zarządzania plikiem stronicowania system skupia się na ustawieniach tworzenia zrzutu awaryjnego, wybierając rozmiar pliku zgodnie z typem zrzutu:

• Pełny zrzut pamięci - cała zawartość pamięci RAM jest zapisywana w zrzucie w momencie awarii, dlatego rozmiar pliku stronicowania musi być równy rozmiarowi pamięci fizycznej + 1 MB (dla nagłówka). Ten typ jest wybierany domyślnie, gdy ilość pamięci fizycznej jest mniejsza niż 4 GB;
• Zrzut pamięci jądra - do zrzutu zapisywana jest tylko pamięć przydzielona dla jądra systemu operacyjnego, sterowników urządzeń i aplikacji działających w trybie jądra. Zrzut rdzenia zajmuje znacznie mniej miejsca niż pełny zrzut, podczas gdy zazwyczaj wystarcza określenie przyczyny awarii. Ten typ zrzutu jest wybierany domyślnie w systemach z 4 GB pamięci RAM lub więcej. Minimalny rozmiar pliku stronicowania powinien wynosić około 1/3 ilości pamięci fizycznej;
• Mały zrzut pamięci - mini-zrzut zawierający minimalne wymagane dane: kod zatrzymania i opis błędu, listę załadowanych sterowników oraz informacje o procesach uruchomionych w momencie awarii. Ten zrzut wymaga pliku stronicowania o wielkości co najmniej 2 MB;
• Automatyczny zrzut pamięci - nowy typ zrzutu wprowadzony w systemie Windows 8 Server 2012 i nowszy. W rzeczywistości jest to ten sam zrzut pamięci, jedyną różnicą jest to, że pozwala on systemowi dynamicznie kontrolować rozmiar pliku stronicowania, wybierając najbardziej optymalny rozmiar.

Ustawienia zrzutu pamięci znajdują się w zaawansowanych właściwościach systemu, w sekcji Uruchamianie i odzyskiwanie. Tutaj możesz wybrać jeden z czterech typów zrzutów lub całkowicie wyłączyć jego tworzenie.

Tutaj możesz wybrać jeden z czterech typów zrzutów lub całkowicie wyłączyć jego tworzenie

Nawet znając ustawienia zrzutu i ilość pamięci fizycznej, nie będzie możliwe dokładne określenie, jak duży plik stronicowania zostanie utworzony przez system. Dlatego postanowiłem trochę poeksperymentować, dla których wziąłem 2 systemy jako urządzenie eksperymentalne - po stronie klienta Windows 8.1 (x64) i po stronie serwera Windows Server 2012 R2 i sprawdziłem, jak rozmiar pliku stronicowania zależy od ilości pamięci fizycznej i ustawień zrzutu. Oto co się stało:

Windows 8.1
4 GB pamięci RAM Windows 8.1
8 GB pamięci RAM Windows Server 2012 R2
4 GB pamięci RAM Windows Server 2012 R2
8 GB pamięci RAM Pełny zrzut 4352 MB 8704 MB 4352 MB 8704 MB Zrzut rdzenia 4096 MB 8192 MB 4096 MB 8192 MB Automatyczny zrzut 704 MB 1280 MB 1408 MB 1920 MB Mały zrzut 320 MB 512 MB 1408 MB 1920 MB Bez zrzutu 320 MB 512 MB 1920 MB

Jak widać rozmiar pliku zależy bezpośrednio nie tylko od ilości pamięci RAM i ustawień zrzutu, ale także od rodzaju systemu operacyjnego. Ponadto wyłączenie zrzutu nie oznacza całkowitego braku pliku stronicowania.

Warto również przypomnieć, że są to wartości początkowe. Jeśli podczas działania brakuje pamięci wirtualnej, system może zwiększyć plik stronicowania do maksymalnej wartości, która w automatycznym strojeniu wynosi 3 ilości pamięci fizycznej.

Określanie wymaganego rozmiaru pliku stronicowania

Chociaż rozmiar pliku stronicowania i może być kontrolowany przez ustawienia zrzutu pamięci, ale nie jest to najbardziej bezpośredni sposób. Znacznie bardziej poprawne jest ręczne dostosowanie rozmiaru pliku. Pozostaje tylko dowiedzieć się, jaki rozmiar można uznać za wystarczający.

Nie ma jednej odpowiedzi na to pytanie. Jedynym sposobem na dokładniejsze lub mniej dokładne określenie rozmiaru pliku stronicowania jest zebranie danych o zużyciu pamięci i wykorzystaniu pliku stronicowania w tym konkretnym systemie, ustalenie, ile pamięci może zajmować usługa / aplikacja i jak prawdziwy jest plik stronicowania. Na podstawie danych i należy wybrać rozmiar pliku.

Możesz szybko ocenić bieżące zużycie pamięci wirtualnej w Menedżerze zadań, w sekcji Wydajność. Pole Commited pokazuje stosunek wykorzystanej pamięci wirtualnej do jej całkowitej kwoty. W moim przykładzie komputer ma 64 GB pamięci RAM i ten sam plik stronicowania. Obecna ilość pamięci wirtualnej wynosi 128 GB, 65 GB jest zajęte. Spośród nich 62,4 GB znajduje się w pamięci RAM, a 2,6 GB w pliku stronicowania.

Możesz również użyć liczników wydajności do zbierania informacji. Liczniki dostarczają więcej informacji, a także umożliwiają zbieranie statystyk na określony czas, co pozwoli na dokładniejsze określenie potrzeb systemowych dla pamięci wirtualnej. Potrzebujemy następujących liczników wydajności:

Memory, Commited Bytes - ten licznik pokazuje, ile bajtów w pamięci wirtualnej zajmują bieżące procesy. Gdy wartość Commited Bytes przekracza ilość pamięci fizycznej, system zaczyna aktywnie korzystać z pliku stronicowania;
Pamięć, dostępne bajty - ilość wolnej pamięci fizycznej na komputerze. Ten parametr pokazuje obciążenie pamięci RAM, a im mniej pamięci fizycznej, tym aktywniej system używa pliku stronicowania.
Memory, Commit Limit - wartość równa sumie ilości pamięci RAM i bieżącego rozmiaru pliku stronicowania. W przeciwnym razie maksymalna ilość pamięci wirtualnej, która może zostać przydzielona wszystkim procesom bez zwiększania rozmiaru pliku stronicowania.
Pamięć,% zaangażowanych bajtów w użyciu - pokazuje procent wykorzystania pamięci wirtualnej. Jest to relacja Commited Bytes Commit Limit.
Plik stronicowania,% wykorzystania - procent wykorzystania pliku stronicowania, bieżąca wartość.
Plik stronicowania,% szczyt wykorzystania - procent wykorzystania pliku stronicowania, wartość szczytowa.

Aby głębiej przeanalizować zużycie pamięci, możesz dodatkowo użyć następujących liczników:

Pamięć, błąd strony s - liczba błędów stron (przerwań) na sekundę podczas uzyskiwania dostępu do stron pamięci. Przypomnę, że przerwanie strony występuje podczas uzyskiwania dostępu do strony pamięci, która została przesłana na dysk.
Pamięć, strony s - pokazuje ile stron na sekundę zostało odczytanych jako część przerwania strony. Mówiąc najprościej, ten licznik pokazuje intensywność wymiany danych między pamięcią RAM a plikiem stronicowania. Jest to suma liczników stron wejściowych i liczników stron zewnętrznych .
Proces, zestaw roboczy - pokazuje bieżące wykorzystanie pamięci fizycznej przez aktywne procesy. Wartość Total daje całkowitą objętość dla wszystkich procesów, ale możesz wyprowadzić dane osobno i dla każdego określonego procesu. Ten licznik nie jest bezpośrednio powiązany z plikiem stronicowania, ale może pomóc w diagnozowaniu problemów z wydajnością.

Jak widać w przykładzie, plik stronicowania 64-gigabajtowy jest używany tylko przez 2-3%. Oznacza to, że do normalnej pracy z nadmiarem wystarczającej wielkości pliku wymiany 4 GB. I to pomimo faktu, że serwer jest bardzo dobrze załadowany, dla mniej obciążonego komputera liczby będą jeszcze niższe.

Należy również wspomnieć o wyborze rozmiaru pliku stronicowania dla komputerów z rolą Hyper-V. Faktem jest, że ze względu na naturę architektury hiperwizor nie używa pliku stronicowania dla maszyn wirtualnych nawet w przypadku braku pamięci fizycznej. Na serwerach Hyper-V plik stronicowania jest potrzebny wyłącznie na potrzeby systemu hosta, który wykorzystuje tylko niewielką część pamięci RAM (zwykle nie więcej niż 2-4 GB). Dlatego utworzenie pliku stronicowania w oparciu o całkowitą ilość pamięci fizycznej w tym przypadku jest absolutnie bez znaczenia.

Dostosowywanie

Po określeniu wymaganego rozmiaru przejdź bezpośrednio do ustawienia. Aby zmienić rozmiar pliku stronicowania, otwórz właściwości pamięci wirtualnej i wyłącz automatyczny wybór rozmiaru. Następnie w polu „Drive” wybierz dysk logiczny, na którym zostanie zlokalizowany plik, wybierz opcję „Custom size”, określ początkowy i maksymalny rozmiar pliku stronicowania i kliknij „Set”. Aby zmiany zaczęły obowiązywać, może być konieczne ponowne uruchomienie systemu po konfiguracji.

Istnieją pewne ograniczenia pliku stronicowania:

• Maksymalny rozmiar pliku nie może być większy niż 16 TB dla 64-bitowego i nie większy niż 4 GB dla systemu 32-bitowego;
• Można utworzyć do 16 plików stronicowania, ale każdy musi znajdować się na osobnym woluminie (dysku logicznym);
• Aby móc utworzyć zrzut awaryjny, konieczne jest, aby plik strony (przynajmniej jeden) znajdował się na dysku systemowym.

Aby zautomatyzować proces konfiguracji, możesz użyć następującego skryptu PowerShell (zastępując wartości):

# Wyłącz automatyczne zarządzanie dla pliku stronicowania
$ ComputerSystem = Get-WmiObject -Class Win32_ComputerSystem -EnableAllPrivileges
if ($ ComputerSystem.AutomaticManagedPagefile) {
$ ComputerSystem.AutomaticManagedPagefile = $ false
$ ComputerSystem.Put ()
}
# Ustaw ręczny rozmiar pliku stronicowania
$ PageFile = Get-WmiObject -Class Win32_PageFileSetting -EnableAllPrivileges
$ PageFile.InitialSize = 4096
$ PageFile.MaximumSize = 8192
$ PageFile.Put ()

Wniosek

Podsumowując, kilka praktycznych wskazówek, które mogą pomóc w dostosowaniu.

• Podczas konfigurowania ręcznego i maksymalnego rozmiaru pliku. W takim przypadku system tworzenia pliku początkowego, jeśli to konieczne, zwiększając go, aż osiągnie maksimum. Zwiększenie rozmiaru może spowodować fragmentację pliku, co wpłynie na jego szybkość. Aby poradzić sobie z fragmentacją, początkiem i początkiem i maksymalnym rozmiarem tego samego. To system natychmiast przydzieliło wymagane miejsce na plik, a plik rozmiar pliku został wykluczony.
• Aby zwiększyć wydajność systemu, plik stronicowania można podzielić na inną część. Wyjaśnię, wystarczy tylko plik na część znajdującą się na innym dysku fizycznym . Umieszczenie pliku stronicowania na dodatkowej partycji tego samego dysku nie do prędkości. W praktyce sensowne jest przeniesienie pliku na oddzielny dysk SSD, co może dać zauważalny wzrost wydajnoci.
• Innym teoretycznym sposobem wykonywania pracy jest .ronicronicowronicowronic j jowronic j j umieszczenie go w oddzielnej sekcji specjalnie dla niego, dla którego należy ami ami ami ami ami ami ą te ą go dla, dla których należy ami ami ami ami ami Podczas pracy z dużymi (tak jak plik stronicowania) duży rozmiar może mieć wydajność systemu plików. Im większy rozmiar klastra, tym większe bloki odczytują / zapisują dane, odpowiednio dla tej samej ilości danych przy rozmiarze klastra 64Kb, wymagane jest 16 razy mniej operacji odczytu / zapisu niż w przypadku 4Kb.
• Gdzieś, gdzie są wskazówki, aby całkowicie wyłączyć plik stronicowania. W niektórych przypadkach może to przynieść pewne korzyści w zakresie wydajności, chociaż osobiście nie widzę w tym zbyt wiele korzyści. Jak widać za pomocą liczników wydajności, w obecności wolnej pamięci fizycznej system operacyjny już używa minimalnego pliku wymiany, więc wzrost będzie znikomy. Jeśli przy wyłączonym pliku wymiany pamięć fizyczna się wyczerpie, aplikacja zużywająca pamięć zostanie zatrzymana, co jest obarczone wadliwym działaniem i utratą danych . Ponadto, jeśli nie ma pliku stronicowania, system Windows nie będzie w stanie zapisać zrzutu pamięci w przypadku awarii.
• I ostatni. Manipulacje przy użyciu pliku stronicowania nie wpływają na wydajność systemu jako całości. Ponownie, przy wystarczającej ilości pamięci fizycznej, plik stronicowania jest używany do minimum. Jeśli system ciągle nie ma wystarczającej ilości pamięci i aktywnie korzysta z pliku stronicowania, najpierw należy pomyśleć o rozszerzeniu pamięci fizycznej.