Optymalizacja pliku pamięci wirtualnejPamięć wirtualna to bardzo szerokie pojęcie mylnie sprowadzane tylko do obecności jej pliku. W istocie pamięć wirtualna to plik wymiany (aka stronicowania) + zainstalowany fizycznie RAM. W tej części opracowania zajmiemy się plikiem a jest nim:
pagefile.sys
Plik ten jest ukryty, chroniony przez system i nie operujemy na nim bezpośrednio. Przy próbie skasowania tradycyjną drogą pojawi się błąd niemożności kasacji. Przy każdym starcie systemu jest on regenerowany na nowo.
Ustawienia pliku pamięci wirtualnejCYTAT
Control Panel (Panel strowania) >>> System >>> Advanced (Zaawansowane)
W sekcji Performance (Wydajność) klikasz w Settings (Ustawienia). I wybierasz Advanced (Zaawansowane)>>> Virtual Memory (Pamięć wirtualna) >>> Change (Zmień)

Podajesz partycję lub dysk na którym ma się znajdować plik wymiany i określasz jego rozmiar. Klikasz przycisk
Set (Ustaw). Potwierdzasz + reset by zmiany zostały zatwierdzone. Możemy dobrać następujące kombinacje rozmiaru:
CYTAT
Custom Size (Rozmiar niestandardowy) - Sam dobierasz parametry rozmiaru początkowego i końcowego:
Initial size (Rozmiar początkowy) - wielkość pliku tworzona przy starcie systemu, pozostanie stała o ile system nie będzie potrzebował więcej
Maximum size (Rozmiar maksymalny) - maksymalna granica do której może się powiększyć plik
System Managed Size (Rozmiar kontrolowany przez system) - System dobiera parametry pliku za ciebie według modelu, że rozmiar początkowy jest o połowę większy od RAMu
No Paging File (Bez pliku stronicowania) - Wyłącza plik wymiany na wybranym dysku. Tak samo działa ustawienie:
Initial size = 0
Maximum size = 0
Dobranie rozmiaruDynamiczny czy statyczny? Domyślna konfiguracja Windows zakłada dynamiczne zwiększanie/zmniejszanie się rozmiaru pliku wymiany stosownie do potrzeb uruchamianych aplikacji. Można to zauważyć np. grając intensywnie w gry kiedy to w 'tajemniczy' sposób znika nam miejsce na dysku. Tylko reset komputera przywraca ten plik do poprzedniego rozmiaru. Zmienny rozmiar pamięci wirtualnej może wpływać niekorzystnie na jej sprawność. Na dysku o sporej fragmentacji danych operacja zwiększania - zmniejszania trwa dłużej. Efektem jest wolniejsza praca dysku, a nawet przerwanie ciągłości plików. Starym tweakiem proponowanym na tę okoliczność jest wprowadzenie ustawienia zakładającego "sztywny plik" który nie zmienia rozmiarów i nie przekroczy określonej pojemności:
Initial size = Maximum sizeZ drugiej strony można takim ustawieniem narobić sobie szkody jeśli nieprawidłowo dobierze się rozmiar. Identyczny nieomal skutek nie rozciągalności pliku pagefile.sys możemy uzyskać sprytnie dobierając parametr rozmiaru początkowego. Może on okazać się wystarczający dla systemu i plik nie wzrośnie ponad rozmiar początkowy pomimo zostawienia komfortowego zapasu na "w razie czego".
Ile?Windows XP domyślnie ustawia rozmiar początkowy jako 1.5 x RAM a rozmiar maksymalny jako 3 x RAM. Np. dla RAM 256 MB min= 384 MB a max=768 MB. Te wartości domyślne często sprawdzają się lecz są one zbyt sztywno obliczone. Konsekwencją może być dobranie zbyt małego lub zbyt dużego pliku. Bo logiczne jest że na podstawie tego modelu liczenia ci z małą ilością RAM uzyskają mniejszy plik niż ci z dużą ilością RAM. A w zasadzie powinno być na odwrót:
Im mniej RAMu masz tym większe prawdopodobieństwo intensywnego korzystania z pliku pamięci wirtualnej. Jeśli masz poniżej 512 MB w zasadzie powinieneś zostawić ustawienia domyślne.
Im więcej RAMu masz tym mniejsze prawdopodobieństwo intensywnego korzystania z pliku pamięci wirtualnej. W takim układzie domyślne ustawienie rozmiaru początkowego pliku jest grubo przesadzone i konsumuje za dużo miejsca na dysku bez realnej potrzeby. Jeśli masz 512 MB RAM i wyżej ustaw rozmiar początkowy jako połowę RAM przy pozostawieniu rozmiaru maksymalnego jako potrójność RAMu ..... tak na wszelki wypadek. Powyższe dywagacje są dość teoretyczne i niby uniwersalne. W praktyce jednak wszystko zależy od przeznaczeń komputera. Pecet z przeglądarką i GG a pecet jako studio grafiki i video to przepaść w skali przemiału pamięci. W następnym poście jest opis jak monitować system przy najbardziej wyczerpujących momentach i przewidywać potencjalny rozmiar.
Zbyt niska?Jeżeli jest na wyczerpaniu to wszystko pracuje przeraźliwie wolno zacinają się gry, długo czekamy na "reakcję" programu itd. Potem przy 90% zajętej pamięci wyskakuje komunikat ze jest jej zbyt mało lub brak.

Po tym komunikacie te aplikacje które doprowadziły do jej braku powinny zostać zamknięte automatycznie. Gdy wyczerpie się pozostały zapas pamięci wirtualnej otrzymamy dodatkowe efekty specjalne - totalne zawieszenie kompa lub BSOD i wyjściem jest tylko restart. Całkowity brak pamięci wirtualnej to wynik albo nieprawidłowego dobrania rozmiaru albo błędów w działaniu programów.
Zbyt wysoka?Masz zapas. W teorii nigdy sie ona nie wyczerpuje. W praktyce limituje cię tylko rozmiar dysku bo przecież jest to plik. Jeżeli rozmiar pliku jest wyższy niż wolne miejsce na dysku to pojawi sie prawdopodobnie zestaw błędów typu: "Scratch disk is full", "Cannot write to dysk", "Disk is full".... i inne kombinacje z błędem zapisu i pełnym dyskiem. Bardzo wysoko ustawiony rozmiar tego pliku bez realnej potrzeby jest marnowaniem przestrzeni dysku. Samo korzystanie z ogromnego pliku pamięci wirtualnej spowalnia pracę całego systemu bo nawet najszybsze dyski twarde nie dorównują szybkością pamięciom RAM. Miej to na uwadze ...
No paging file?Teorią pewnych tweakerów jest zakładanie możliwości całkowitego wyłączenia tego pliku przy posiadaniu ogromnej ilości RAMu. To jest tylko teoria która zupełnie mija się z praktyką. W istocie całkowite wyłączenie pliku pagefile.sys jest niemożliwe gdyż pamięć wirtualna to szersze pole niż tylko ten specyficzny plik. Sama operacja może przynieść opłakane skutki gdyż XP i tak potrzebuje tego pliku,
wiele komponentów Windows wymaga jego obecności nawet jeśli z niego nie korzysta a większość programów pada przy braku jego obecności. Nie polecam zabaw tego typu! Wyjątek od reguły: okresowe wyłączenie dla celów przeprowadzenia rzetelnej defragmentacji. O tym będzie jeszcze mowa.
LokalizacjaPodstawowe wymaganiaUstawień tego pliku należy dokonywać na dysku, który:
- Jest zdefragmentowany
- Ma wystarczającą ilość wolnego miejsca
- Nie jest skompresowany!
Umieszczenie pliku na szybszej partycji/dysku Plik ten powinien być na szybszej partycji/dysku. Sytuacje:
1 dysk - kilka partycji: Jak masz tylko 1 dysk ale 2 lub większą ilość partycji to powinno się umieścić pagefile.sys na systemowej C bo ona jest szybsza.
KOD
1 dysk 3 partycje:
C: |
|
D: | coraz wolniejszy odczyt gdyż skok głowicy jest większy
|
E: |
|
\|/
2 dyski: Jeśli masz 2 dyski, to się umieszcza pagefile.sys na szybszym dysku. Wtedy tworzymy dla tego pliku pierwszą w kolejności partycje stosownego rozmiaru. W bardzo szczególnym przypadku może pojawić się problem z obecnością pliku na innym od systemowego dysku. Jego objawem będzie albo komunikat o małej ilości pamięci wirtualnej pomimo prawidłowych ustawień lub też stworzenie klona o niekontrolowanym rozmiarze na partycji systemowej. Obejściem tego "konfliktu" jest wprowadzenie dodatkowo na partycji systemowej malutkiego pliku o minimalnym rozmiarze
2 MB.
Podzielenie pliku pamięci wirtualnej na kilka dyskówBardzo dobrym rozwiązaniem podnoszącym wyśmienicie performance jest podzielenie pliku na kilka osobnych dysków (
nie partycji na jednym dysku!). Rozwiązanie takie zapewnia równoczesny odczyt danych z każdego z plików wymiany co bardzo przyśpiesza. Takie pliki wymiany nie będą się dynamicznie powiększać z obłędną szybkością jak w przypadku pojedynczego pliku!
Ustawiamy wtedy rozmiar początkowy owych plików wymiany jako wynik podzielenia obecnego rozmiaru pliku przez ilość tworzonych plików wymiany. Np. rozmiar początkowy obecnego pliku jest równy 384 MB, a po utworzeniu 2 plików na dwóch dyskach każdy z nich otrzyma po 192 MB.
DefragmentacjaPamięć wirtualną powinniśmy ustawiać na zdefragmentowanym dysku. To jednak nie daje dożywotniej gwarancji zachowania ciągłości tego pliku. Dynamicznie rozciągający się plik ulega fragmentacji. Operacje na takim pliku w kawałkach tracą na wydajności.
Defragmentator Windowsa nie potrafi scalać pliku pagefile.sys. Wtedy wyjściem jest:
1. Tymczasowe zdeaktywowanie lub przeniesienie pliku na inny dysk ze sporym zasobem wolnego miejsca wg tych kroków:
- Jeśli masz tylko jeden dysk to wyłącz ten plik. Jeśli masz 2 dyski to ustaw ten plik na drugim a na pierwszym w obu polach jako rozmiar wpisz zero
- Zrestartuj komputerek
- Zrób defragmentację dysku systemowego
- Ponowne uaktywnij plik na dysku systemowym
- Zrestartuj komputerek
2. Alternatywnie skorzystanie z dodatkowego defragmentatora wyposażonego w taką funkcję. Darmową propozycją jest narzędzie
PageDefrag. Z komercyjnych rozwiązań polecam
PerfectDisk który będzie jeszcze wspomniany przy okazji globalnego wątku defragmentacji.
3. Trzecia możliwość to uruchomienie LiveCD zbudowanej przez
BartPE z wtyczkami do darmowych defragmentatorów
Auslogic / JKDefrag.
Przykład pracy PerfectDiska:Przed defragmentacją plik pagefile.sys znajduje się w czarnym pociętym "regionie":
Po wykonaniu Offline Defragmentation + Smart Placement nastąpiło pełne scalenie tej strefy:
Źródła:http://aumha.org/win5/a/xpvm.htmhttp://www.theeldergeek.com/paging_file.htmhttp://en.wikipedia.org/wiki/Virtual_memoryDyskusja na forum: http://www.searchengines.pl/phpbb203/index.php?showtopic=48954.