home
WIELKOŚĆ SWAP




Jak ustalić wielkość SWAP? To najczęściej zadawane pytanie prze użytkowników komputerów. Bardzo znanym schematem było trzymanie się dosyć prostego i logicznego równania, gdzie początkowy rozmiar pliku wymiany równał się ilość posiadanej fizycznie pamięci RAM x 1,5, zaś rozmiar maksymalny pliku równał się ilość posiadanej fizycznie pamięci RAM x 3. Jest to dosyć duże uproszczenie, choć wciąż oficjalnie popierane przez Microsoft. Moim zdaniem schemat ten należy znacznie rozwinąć i nie jest to takie proste jakby mogło się wydawać. Wszystko bowiem zależy od tego, do jakich celów wykorzystujemy nasz komputer. I tak, ktoś kto używa komputera jako „maszyny” do prac biurowych, edytora tekstu, przeglądania Internetu, wszelkiego rodzaju komunikatorów, ma inne zapotrzebowania niż osoba która na co dzień używa swojego komputera do grania, obróbki plików multimedialnych, przetwarzania danych, projektów przestrzennych, itp., dodatkowo dochodzi jeszcze mnogość konfiguracji sprzętowej co w znacznym stopniu komplikuje cale zagadnienie. Wiadomo też, że komputer wyposażony w 256MB Ram’u praktycznie na każdym kroku potrzebuje dużego pliku wymiany, z kolei komputer wyposażony w 1GB Ram’u praktycznie nie korzysta z pliku wymiany. Nie jest to jednak żelazna reguła, bowiem zdarzają się sytuacje w których jest zgoła odwrotnie, co po raz kolejny świadczy o tym iż określenie rozmiaru Swap’a nie jest wcale takie proste. Co więc począć, czym się kierować w przypadku ustalania rozmiaru pliku wymiany? Otóż, zasada niby jest prosta, mianowicie im trudniejsze zadanie, tym większe zapotrzebowanie na pamięci. Podsystem zarządzania pamięcią Windows 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 fizycznym Ram’em. Podczas dużego obciążenia podsystemu pamięci systemu 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, system 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. Nasuwa się tu kilka wniosków, system 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 korzystanie 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 wymagającymi aplikacjami. Fakty i mity Często spotykanym stwierdzeniem jest to iż 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 i 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 napracować, ż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 do tego dojdzie, 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, co w efekcie gwarantuje nam zatrzymanie całego systemu. Pamiętajmy o tym, że aplikacje mają coraz większe wymagania względem sprzętu. moment, w którym nasz system 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 obciążona zostaje pamięć. W normalnych zastosowaniach domowych nie ma co próbować nawet wyłączać pliku wymiany. Chyba, że posiadasz minimum 512 MB, a jedynymi aplikacjami jakie używasz są, przeglądarka internetowa, komunikator, edytor tekstu, i gry typu pasjans. Kolejnym stwierdzeniem często spotykanym jest to, że początkowy rozmiar pliku stronicowania nie powinien być równy jego maksymalnej wielkości, a to z obawy przed fragmentacją pliku wymiany. To nie do końca jest tak, otóż szczegół tkwi w 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.sys, warto pozostawić sobie to wyjście awaryjne. Położenie SWAP a partycja systemu plików Często można spotkać się z opinią że partycja z systemem plików NTFS jest gorsza niż z FAT jako miejsce na plik wymiany. To nie do końca jest tak, a czasami bywa wręcz odwrotnie. Niektórzy twierdzą, że konieczność sprawdzania możliwości nadpisywania plików zgromadzonych w pliku wymiany ogranicza jego wydajność. 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 pamięci Ram, 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 mamy do czynienia jeszcze z faktem gdzie 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ę wielkim magazynem 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, ale ta przewaga jest wyraźnie widoczna tylko, jeżeli plik wymiany znajduje się na oddzielnej partycji na innym dysku. Na domyślnych 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 generalizować. Co zatem? Reasumując, polecam wszystkim by plik wymiany trzymali na początku dysku systemowego, na specjalnie utworzonej do tego partycji w systemie plików FAT – ja osobiście używam systemu plików FAT32. Wielkość tej partycji szacował bym w zależności od fizycznie posiadanej pamięć RAM. Rozmiar początkowy/minimalny pliku wymiany ustawiłbym na taki sam jak rozmiar końcowy/maksymalny pliku, czyli nadałbym mu wartość „sztywną”. Dodatkowo oczywiście zachęcam do skorzystania z opcji „Czyszczenia pliku wymiany przy zamykaniu systemu” o czym była już mowa. Powstałej partycji przypisujemy jakąś końcową literę dysku i możemy nadać jej etykietę SWAP lub Pagefile. Dodatkowo by zwiększyć wydajność naszego systemu, przenosimy również na w/w partycję zawartość katalogów „Temp”, unikniemy w ten sposób znacznej fragmentacji naszej partycji systemowej. Dokonać tego możemy poprzez edycję wpisu w „Zmiennych środowiskowych”: Menu Start -> Panel Sterowania -> System -> zakładka „Zaawansowane” -> „Zmienne środowiskowe”. Do wyboru mamy „Zmienne użytkownika” i „Zmienne systemowe”. Edytujemy wpisy dla „TEMP” i „TMP” podając im nową lokalizację. Warto przedtem stworzyć odpowiednie katalogi zachowując strukturę użytkowników. Sposób przedstawiony tu przez moją osobę jest powszechnie wykorzystywany w przypadku serwerów MS 2k/2k3, ale z powodzeniem można zaimplementować to rozwiązanie dla WindowsaXP, co daje naprawdę odczuwalne skutki w szybkości pracy systemu nie mówiąc już o samym komforcie pracy.