11
Opublikowano 9 marca 2012 w Portal komputerowy » Systemy Operacyjne » Windows XP » Przyspieszanie » Plik wymiany (stronicowanie w Windows)
 
 

Plik wymiany (stronicowanie w Windows)


Kiedy brakuje miejsca w pamięci operacyjnej, system zaczyna przechowywać coraz więcej danych na dysku w pliki pagefile.sys. Jest to specjalny typ pliku do którego użytkownik nie ma swobodnego dostępu. Ponieważ pagefile.sys jest cały czas bardzo intensywnie wykorzystywany przez system, nie można manipulować jego parametrami, ani tym bardzie defragmentować go tak, jak pozostałe dane. Zmiany ustawień są widoczne dopiero po restarcie, a defragmentacja jest możliwa wyłącznie w trybie offline.

Aby nieco lepiej zrozumieć wyjątkowość pliku wymiany musimy uzmysłowić sobie, że swap, ma dwa rodzaje fragmentacji:

  • Zewnętrzną – swap jest widziany przez użytkownika jako jeden plik
  • Wewnętrzną – SWAP dzieli się na 4 KB strony. Podsystem pamięci może swobodnie operować stronami tak jak użytkownik normalnymi plikami. Niezależnie od tego czy swap jest zewnętrznie jednym plikiem, czy kilkoma wewnętrznie jest zawsze zbiorowiskiem tysięcy stron. Nie muszą one być zdefragmentowane, często panuje tam nieład. Niezależnie od tego czy system używa jednej strony, czy wszystkich zewnętrznie plik ma zawsze ten sam rozmiar, który powiększy się dopiero, gdy zabraknie wolnych stron.

Aby dostać się do interesujących nas ustawień klikamy kolejno: Menu Start – Panel Sterowania – Wydajność i Konserwacja – System – zakładka 'Zaawansowane’ -okienko 'Wydajność’ – Ustawienia – zakładka 'Zaawansowane’ src=”strzałka.gif” alt=”strzałka”> Pamięć Wirtualna Zmień.

Znajdźmy obiekt naszych rozważań, o tu jest…. W większości wypadków znajdziemy go na partycji systemowej, na obrazku jest widoczny jako czarne kwadraciki. Jak widać jest on przedstawiony jako ciągły plik i do takiego stanu należy dążyć, ponieważ gwarantuje on najlepszą wydajność.

pagefile.sys

pagefile.sys , fragmentacja pliku wymiany

Plik wymiany określają trzy parametry:

  • Lokalizacja – czyli na której partycji/ach się znajduje
  • Rozmiar początkowy – określa ile MB system zarezerwuje podczas startu dla pliku wymiany.
  • Rozmiar maksymalny – określa do jakiego rozmiaru może urosnąć plik wymiany.

XP przed każdym startem systemu tworzy plik od podstaw i szuka ciągłej przestrzeni, gdzie zmieściłby się w całości. Jeżeli jej nie znajdzie wówczas plik wymiany jest dzielony na kilka części. Dopóki nie zmieniamy parametrów swapa nie ma ryzyka, że zostanie podzielony na części. Po zamknięciu systemu Windows w pewnym sensie zapomina, że miał plik wymiany i podczas kolejnego startu odtwarza go od podstaw. Wówczas poprzednia lokalizacja jest przydzielana nowemu plikowi.

Zmieniając rozmiary pliku wymiany pamiętaj, aby 'Rozmiar początkowy’ był adekwatny do Twoich potrzeb. Jeżeli potrzebujesz 300 MB, a masz ustawione 192 [początkowo], wówczas podczas korzystania z aplikacji, kolejne fragmenty pliku wymiany zostaną zapisane w różnych miejscach i cały plik będzie pofragmentowany. Nie pomoże w takim wypadku defragmentacja pagefile, ponieważ nadmiarowe dane będą każdorazowo pofragmentowane. O wiele lepszym rozwiązaniem jest określenie ile MB potrzebuje Twój PC, aby sprostać stawianym przez Ciebie wyzwaniom i ustawienie 'Rozmiaru początkowego’ o kilkadziesiąt MB wyżej tej bariery. W ten sposób, nawet jeżeli system nie znajdzie początkowo wystarczającej ilości miejsca na dysku, wystarczy raz zdefragmentować plik wymiany i możemy zapomnieć o problemie fragmentacji.

Tak właśnie przykładowo wygląda plik wymiany, jeżeli jego Rozmiar początkowy jest zbyt mały.

pagefile

pagefile.sys , fragmentacja pliku wymiany

SWAP – plik wymiany

Każdy sam powinien ustalić odpowiednie do własnych potrzeb wartości. Popularna opinia, która głosi, że optymalne ustawienia to:

  • początkowy [minimalny] rozmiar pliku wymiany = Ram*1,5
  • maksymalny = Ram *3,

to duże uproszczenie. Wciąż oficjalnie popiera je Microsoft, ale od dawna wiadomo, że trzeba ten pogląd znacząco zmodyfikować. Więc jakie ustawić wartości? Sprawa jest dosyć skomplikowana. Wszystko zależy od tego, do jakich celów wykorzystujesz komputer:

  • np. używasz komputera tylko do prac typowo biurowych [edytory tekstu…] i/lub Internetu [przeglądarki internetowe, komunikatory…]
  • Inaczej trzeba podejść do całego zagadnienia, jeżeli Twój komputer musi sprostać nowy grom i aplikacjom do przetwarzania danych [kompresja i obróbka plików multimedialnych, projekty przestrzenne, obliczenia naukowe…]
  • sytuację dodatkowo komplikuje mnogość konfiguracji sprzętowych. Komputer który ma 256 MB Ram-u niemal zawsze potrzebuje dużego pliku wymiany. Z kolei 1 GB Ram-u sprawia, że SWAP jest niemal nieużywany. Oczywiście zdarzają się sytuacje dokładnie odwrotnie, co obrazuje złożoność problemu.

Zasada jest prosta: im trudniejsze zadanie, tym więcej potrzeba pamięci. Banalne, nieprawdaż? Podsystem zarządzania pamięcią XP jest tak skonstruowany, że plik wymiany jest magazynem na dane, a wszystkie dane na których operuje procesor muszą znajdować się w pamięci fizycznej [Ram]. Zanim procesor przetworzy dane znajdujące się w pliku wymiany, system musi najpierw przenieść je do pamięci, co trwa dość długo. Ten magazyn choć bardzo przydatny jest niesamowicie powolny w porównaniu z Ram-em [~20-50 MB/s w porównaniu z ~1500-5000MB/s].

Podczas dużego obciążenia podsystemu pamięci XP stara się jak najwięcej danych z Ram-u przenieść do swap-a. Takie zachowanie jest doskonale widoczne, kiedy jakiś proces zajmuje kilkaset MB pamięci np gra. Gdy już zabraknie miejsca w pamięci fizycznej, np. na skutek uruchomienia kolejnej aplikacji, XP postara się przenieść jak najwięcej danych do pliku wymiany, a część zostanie po prostu usunięta (system pozostawi tylko odpowiednie znaczniki). Automatycznie przenoszone do swap-a są dane, który w czasie działania aplikacji zostały zmodyfikowane, a potem przez pewien czas nie były używane.

Na podstawie powyższych rozważań można wysnuć kilka wniosków:

  • XP powinien mieć plik wymiany nie mniejszy niż wielkość Ram-u. Przynajmniej dla komputerów z pamięcią mniejszą niż 256 MB. Pozwoli to na w miarę swobodne korzytanie z dobrodziejstw pliku wymiany i nie „rozepchnie” zanadto swap-a.
  • Ustawienie minimalnej wielkości pliku wymiany, jako wielokrotnie większą niż Ram mija się z celem, gdyż systemowi trudno będzie taki plik efektywnie wykorzystać. Różnice w szybkości odczytu danych są zbyt duże, aby można je było zignorować.
  • Wszystko zależy od tego, ile pamięci fizycznej posiada i do jakich celów wykorzystywany jest komputer.
    Nie ma sensu powiększać swap-a do zbyt dużych rozmiarów, jeżeli nie grasz w wymagające gry lub nie pracujesz przez wiele godzin z zasobożernymi aplikacjami.

Zmiana wielkości pliku wymiany

Niegdyś znajdowała się tu tabelka z proponowanymi ustawieniami, nic szczególnego, nie wyróżniała się niczym na tle innych tego typu zestawień. Ale już dość tabel i sztucznych podziałów! Koniec zabawy w zgadywanie jak dużego pliku wymiany potrzebuje użytkownik. Nie ma sensu prowadzenie filozoficznych dysput i rozważanie setek kombinacji sprzętu i używanego oprogramowania. Niech użytkownik sam określi swoje potrzeby! Jak? Dzięki specjalnemu skryptowi, to naprawdę nic trudnego.

Po pierwsze, musisz zaopatrzyć się w odpowiednie narzędzie, które będzie sprawdzało ile MB pliku wymiany jest używane przez system. Normalnie jest to trudne do oszacowania ponieważ XP nie informuje o tym użytkownika. Zatem nikt nie wie, czy potrzebuje większego czy mniejszego swap-a, co prowadzi często do marnotrawienia przestrzeni na dysku lub niedoboru przestrzeni w pliku wymiany. Wystarczy, że skopiujesz zawartość tabelki i wkleisz ją do Notatnika, a potem zapiszesz plik jako – Rozmiar pliku wymiany [www.xptruepower.friko.pl].vbs

 

strComputer = „.”Set objWMIService = GetObject(„winmgmts:” _

& „{impersonationLevel=impersonate}!\” & strComputer & „\root\cimv2”)
Set colPageFiles = objWMIService.ExecQuery(„Select * from Win32_PageFileUsage”)

For Each objPageFile in colPageFiles

Wscript.Echo „Lokalizacja: ” & objPageFile.Name

Wscript.Echo „Rozmiar początkowy: ” & objPageFile.AllocatedBaseSize

Wscript.Echo „Aktualne wykorzystanie: ” & objPageFile.CurrentUsage

Wscript.Echo „Najwyższe wykorzystanie: ” & objPageFile.PeakUsage

Next

 

Jest to zmodyfikowany przeze mnie skrypt udostępniany przez Microsoft, nie widzę więc jakichkolwiek podstaw, aby nie uczynić jego zawartości dobrem publicznym. Jako jedyny warunek użytkowania i rozpowszechniania proszę o zachowanie oryginalnej nazwy.

Powyższy skrypt pokazuje cztery wartości.

  • Lokalizacja – określa umiejscowienie pliku wymiany na dysku, jest to przydatna informacja zwłaszcza, gdy mamy więcej niż jeden plik wymiany, pozwala wówczas zorientować się, do którego pliku odnoszą się kolejne wartości
  • Rozmiar początkowy – określa ile MB system rezerwuje podczas uruchamiania systemu
  • Aktualne wykorzystanie – pokazuje ile MB w pliku wymiany system obecnie wykorzystuje
  • Najwyższe wykorzystanie – pokazuje ile najwięcej MB było wykorzystanych od ostatniego restartu systemu

Wiemy już jak działa skrypt, pora go wykorzystać. Nie musisz się nim w ogóle przejmować skopiuj go na pulpit lub inne łatwo dostępne miejsce i niech sobie tam spokojnie zostanie. Nie musisz nawet restartować PC-ta. Wystarczy, że… będziesz jak zawsze korzystał ze swojego sprzętu. Jeżeli grasz w gry, to graj, jeżeli przetwarzasz dane, to je przetwarzaj. Chodzi o to, aby komputer wykonywał te zadania, które wykonuje zawsze, ze szczególnym uwzględnieniem tych, które najbardziej go obciążają. Wyniki będą bardziej wiarygodne, jeżeli trochę go przy tym pomęczysz np. będziesz grał przez 4-5 godzin. Długość działania PC-ta jest ważna, ponieważ z czasem XP przenosi część danych do SWAPA.

Czyż nie jest to banalnie proste? Robisz po prostu, to co zawsze. Powiedzmy po 6 godzinach działania non-stop uruchom skrypt. Jeżeli komputer był włączony dłużej nie ma kłopotu, nie ma się co śpieszyć, uruchom skrypt przed jego wyłączeniem.

Najbardziej interesują nas wartość 'Najwyższe wykorzystanie’

SWAP

w połączeniu z danymi jakie możemy wyczytać w managerze zadań, a dokładniej z wartościami grupy 'Pamięć zadeklarowana’ [Start – Uruchom – 'taskmgr’ – zakładka 'Wydajność’]. W szczególności interesuje nas wartość 'Szczyt’.

pamięć zadeklarowana

Małe wyjaśnienie:

  • Razem- aktualne użycie Ram-u i pliku wymiany łącznie
  • Limit – pojemność Ram-u + rozmiar początkowy pliku wymiany, pomniejszone o kilkanaście MB [dokładniej jest to maksymalna wielkość pamięci jaką system może przeznaczyć dla zalogowanego użytkownika]
  • Szczyt – określa ile MB Ram-u i pliku wymiany system wykorzystał najwięcej od ostatniego restartu

Powyższe obrazki są tylko przykładowe, każdy otrzyma inne wartości, podstawa to wiedzieć jak je interpretować, ale to naprawdę nic trudnego. Wszystko widać jak na dłoni.

Jeżeli brakuje Ci Ram-u, to wartość 'Razem’ w czasie użytkowania PC-ta będzie zbliżała się do pojemności Ram-u. Ta sama sytuacja wystąpi, gdy wartość 'Szczyt’, będzie znacznie przekroczy pojemność Ram-u.

  • Jeżeli masz za mały plik wymiany w stosunku do potrzeb, to jego Najwyższe wykorzystanie będzie oscylować wokół rozmiaru początkowego lub nawet go przekroczy.
  • Jeżeli masz za duży plik wymiany w stosunku do potrzeb, to jego 'Najwyższe wykorzystanie’ będzie bardzo małe np. 28 MB jak w powyższym, przykładzie. Najczęściej, nawet gdy maszyna jest wyposażona w 2 GB Ram-u, wykorzystanie swap-a przekracza 100 MB.

Są trzy rozwiązania:

  • Można kupić więcej pamięci – naraża to Cię na koszty, ale daje najlepszy efekt.

    Kiedy Szczyt przekracza wartość Razem w grupie Pamięć fizyczna KB oznaczającej wielkość pamięci Ram, najlepszym rozwiązaniem jest dokupienie kości Ram-u. Przyniesie to duży wzrost wydajności.

     

  • Masz za mały plik wymiany – nie panikuj i powiększaj go stopniowo. Po pierwsze powiększ początkowy rozmiar swapa o jakieś 30-40 MB ponad 'Najwyższe wykorzystanie’. Teoretycznie może to być dowolna liczba, ale staraj się, aby była podzielna przez 4. Po pierwsze będzie to bardziej czytelne, po drugie, to taka tradycja liczby 4 często pojawiającej się w artykułach, o podsystemie pamięci wirtualnej. Jeżeli kiedyś stwierdzisz, że nadal brakuje Ci miejsca w swapie powiększ go o kolejne 32 MB i tak do skutku. Staraj się, jeżeli to możliwe powiększać rozmiar minimalny, a nie maksymalny. Nie ma sensu niepotrzebnie narażać się na fragmentację pliku wymiany.
  • Masz za duży SWAP – zmniejsz go sumy: 'Najwyższego wykorzystania’ + 30-40 MB. Te dodatkowe MB mają zapobiec fragmentacji związanej z używaniem pliku wymiany ponad wielkość minimalną. Na wszelki wypadek sprawdź jeszcze, czy nowa wartość nie okazała się za mała.

Aby dokonać zmian ustaw odpowiedni „Rozmiar początkowy „. 'Rozmiar Niestandardowy’ – Ustaw – OK.

Teraz zapewne niektórzy z Was zadają sobie pytanie – „A co z Rozmiarem maksymalnym?”

Zostaw sobie duży margines, czyli jakieś 512 MB ponad „Rozmiar początkowy „. Jeżeli nie przyda Ci się do niczego, XP nie skorzysta nawet z jednej strony ponad ustawioną minimum. Szeroki margines zostaw na „zadania specjalne” np. dla wnuczka, który będzie chciał pograć u dziadka, ale nie w pasjansa…

Zanim uruchomisz ponownie komputer użyj Pagedefrag. Programik podczas kolejnego uruchomienia systemu zdefragmentuje plik wymiany, a przy okazji częściowo również rejestr. Jest to ważne jeżeli powiększyłeś plik wymiany, pozwoli scalić go w jeden plik. Nawet jeżeli nie powiększałeś pliku użyj tego programu. Może się okazać, że SWAP został podzielony już wcześniej. Uruchom program i kliknij OK.

pagedefrag

pagedefrag, defragmentacja plików systemowych

Dla pewności, że dobrze wyznaczyłeś rozmiary swap-a sprawdzaj co jakiś czas za pomocą skryptu, czy nie należy powiększyć pliku wymiany.Czy

Czy partycja NTFS jest gorsza niż z FAT

Rzekomo partycja z systemem plików NTFS jest gorsza niż z FAT jako miejsce na plik wymiany. Jest odwrotnie, to NTFS jest lepszy.

  • Niektórzy twierdzą, że konieczność sprawdzania możliwości nadpisywania plików zgromadzonych w pliku wymiany ogranicza jego wydajność. Poważny błąd…
    • plik wymiany może nadpisać tylko system i nie musi w tym celu niczego sprawdzać, nawet administrator systemu nie prawa w nim grzebać,
    • plik wymiany nie podlega zasadzie 1 klaster = 1 plik. Jest to rozszerzenie Ram-u zatem dzielony jest na 4 KB strony, a nie klastry. Podsystem kontrolujący operacje dyskowe nie ma żadnych praw, aby kontrolować swap-a, który „rządzi się swoimi prawami”.
  • Poza tym w pliku wymiany, w systemie FAT 16/32 nowe dane w pliku wymiany są dopisywane w pierwsze wolne miejsce, natomiast w systemie NTFS nowe dane są nadpisywane jak najbliżej danych z którymi są powiązane. Zapobiega to wewnętrznej fragmentacji pagefile.sys, który jest tak naprawdę workiem na strony, a jeden plik jest widziany tylko przez użytkownika. System NTFS jest nawet lepszy do pełnienia roli pagefile.sys niż FAT16/32.
    Mimo to, ta przewaga jest tak wyraźnie widoczna tylko, jeżeli plik wymiany znajduje się na oddzielnej partycji na innym dysku. Na fabrycznych ustawieniach NTFS jest nieco wolniejszy niż FAT16/32 [w operacjach zapisu, w operacjach odczytu NTFS jest szybszy!!!]. Jeżeli plik wymiany znajduje się na partycji systemowej sformatowanej w systemie NTFS, jego przewaga jest niwelowana przez ogółem niższą wydajność operacji zapisu. Mimo to NTFS jest nadal lepszy i zachowuje przewagę w szybkości odczytu. Zarówno NTFS jak i FAT mają swoich zwolenników jak i przeciwników, ale dla nas najistotniejszy jest fakt, że maksymalną wydajność otrzymamy umieszczając plik wymiany na oddzielnej partycji z system NTFS. Z drugiej strony nie można tego w ten sposób tego generalizować. Więcej dokładnych informacji o filozofii umieszczania pliku wymiany znajdziesz w rozdziale poświęconym podziałowi na partycje.

Często popełniane błędy

  • Plik wymiany jest niezbędny. To nieprawda, że system działa lepiej gdy ma dużo pamięci (powyżej 512 MB), a plik wymiany zostanie wyłączony.
    Osoby polecające taki sposób optymalizacji, twierdzą słusznie, że:

    • pozwala to uniknąć czasochłonnego przenoszenia dużej części danych do/z pliku wymiany,
    • wszystkie dane znajdujące się w pamięci Ram są o wiele szybciej przetwarzane
  • jednak zapominają o kilku ważnych sprawach…System, który nie ma pliku wymiany musi przechowywać o wiele więcej danych w pamięci operacyjnej. To co normalnie znalazłoby się w pliku wymiany musi znaleźć się albo w Ram-ie, albo zostać usunięte z podsystemu pamięci. W efekcie, łatwo uzyskać efekt odwrotny do zamierzonego i wydajność spadnie. Nowe aplikacje, nie będą miały miejsca w pamięci. System będzie musiał usunąć wiele danych potrzebnych do sprawnej pracy innych aplikacji, aby uruchomić kolejny proces. Powstanie niesamowite zamieszanie. Te dane, które normalnie byłyby cały czas pod ręką w pliku wymiany, teraz trzeba ciągle doczytywać z dysku. Jak już zostało powiedziane, plik wymiany ma kilka cech, które dają mu przewagę nad takim rozwiązaniem. Gdy obciążenie systemu znacznie wzrośnie, podsystem pamięci musi się „nieźle napocić”, żeby utrzymać stabilność i jako taką szybkość działania poszczególnych programów.Możliwa jest sytuacja, w której zabraknie wolnej pamięci (a na pewno zabraknie, jeżeli nie masz min. 2-4 GB Ram-u). Wówczas system nie będzie miał dostępu do dodatkowej przestrzeni w postaci pliku wymiany… w efekcie zwis gwarantowany i cała praca idzie na marne. Aplikacje mają coraz większe wymagania względem sprzętu. Moment, w którym nasz XP nie da sobie rady bez swap-a, to tylko kwestia czasu.

    Duża grupa aplikacji została tak napisana, aby korzystać z dobrodziejstw pliku wymiany. Jego nieobecność może powodować zakłócenia w ich działaniu.

    Wiele programów rezerwuje sobie pewną przestrzeń adresową, której nigdy nie wykorzystuje. Z reguły jest to przestrzeń pliku wymiany. Jeżeli nie ma pliku wymiany… no cóż obciążona zostaje pamięć.
    W normalnych zastosowaniach domowych nie próbuj nawet wyłączać pliku wymiany. Chyba, że masz te 512 MB, a jedynymi aplikacjami jakie używasz są: przeglądarka internetowa, gadu-gadu, edytor tekstu, Winamp i pasjans.

  • Początkowy rozmiar pliku stronicowania nie powinien być równy jego maksymalnej wielkości. Wielu tak twierdzi ze względu na obawę przed fragmentacją pliku wymiany. Otóż haczyk polega na tym, że w momencie, w którym zabraknie miejsca tak w pamięci Ram, jak i pliku wymiany… mamy zwis systemu. Zatem rozmiar maksymalny stanowi w pewnym sensie zawór bezpieczeństwa i nawet, jeśli system nie wykorzystuje minimalnej wielkości pagefile, warto pozostawić sobie to wyjście awaryjne. Poza tym wystarczy wrócić do powyższych rozważań nad ustawianiem wielkości swapa i dokonać odpowiednich modyfikacji.

mkk270

Spis treści: Plik wymiany (stronicowanie w Windows)

Słowa kluczowe: plik stronicowania, plik wymiany, pliki stronicowania, lokalizacja pliku stronicowania, strzaka gif

Click to rate this post!
[Total: 6 Average: 4.3]

Marcin Kluczek