heh.pl
Kanał informacyjny Heh.pl


Piątek 19 kwietnia 2024 r.

artykuły | abc komputera (archiwum) | forum dyskusyjne | redakcja


Artykuł

Komentarzy: 28 | Autor: dj@v-lo.krakow.pl | Wyświetleń: 80491 | Data: 11 lipca 2004, 02:04

Stronicowanie w systemach Windows 2000 / XP / 2003

Problem stronicowania w systemach z rodziny Windows NT, przez tak wiele osób był opisywany, jednak wnioski były na tyle różne, że nie wiadomo gdzie leży prawda. Ilu autorów, tyle pomysłów na to jak optymalizować pracę pliku wymiany.

Mały spis treści by lepiej się można było poruszać po artykule.

1. Wstępne uwagi.

Stwierdźmy na początku kilka faktów:
  • nie da się wyłączyć stronicowania w Windows NT
  • system „dąży” do tego, aby mieć, co najmniej połowę pamięci fizycznej wolną (Windows XP, Windows 2000 ma ta granicę znacznie wyżej).
  • każdy proces ma swoje pewne „opóźnienie” – czas po upłynięciu, którego większa część programu znajdzie się w pliku stronicowania.
  • pamięć wirtualna jest widziana przez system jako kolejny fragment pamięci fizycznej
  • stronicowanie odbywa się nie tylko w pliku pagefile.sys

2. Czym właciwie jest plik pagefile.sys? NTFS vs. FAT.

Plik pagefile.sys jest fizycznym plikiem na dysku, który ma swoje atrybuty, pewną wielkość (w normalnych warunkach stałą), oraz maksymalnie możliwą do uzyskania ciągłość. Jest jednak kilka cech wyróżniających ten plik od innych:
  • możliwość zapisu w nim ma tylko system
  • nie działają na niego ograniczenia wynikające z wielkości klastra
  • pomimo tego, że plik pagefile.sys jest zdefragmentowany, to jego zawartość wcale nie musi
Problemem dla wielu jest pytanie, na jakim systemie plików go osadzić? Trzeba sobie uzmysłowić, w jaki sposób plik wymiany egzystuje na dysku, jego charakter oraz sposób zapisu/odczytu w nim.

Pagefile.sys nie jest zwykłym plikiem pod względem zapisu lub odczytu. W odróżnieniu od zwykłych plików, które mają charakter "balonu", ten ma charakter worka na dane. Wytłumaczmy, na czym polegają różnice.

Balon puchnie wraz z większą ilością powietrza w nim zawartego, czyli plik zajmuje coraz to większą przestrzeń na dysku wraz z większym jego rozmiarem, jednak każdy jego wzrost jest realizowany ... i właśnie tutaj pojawiają się różnice między NTFS a FAT(16/32)

NTFS - wzrost jest realizowany przez dopisanie tego nadmiarowego fragmentu jak najbliżej zbioru macierzystego, a jeśli się uda to dopisać bezpośrednio kolejne klastry obok tych już wcześniej zajętych. Dzięki temu uzyskujemy dużo mniejszą fragmentację danych

FAT - wzrost jest realizowany przez dopisanie tego nadmiarowego fragmentu w pierwszym wolnym klastrze. A co za tym idzie jeśli pierwotna część pliku była na fizycznym końcu dysku, to jej nowy fragment (o ile jest miejsce na fizycznym początku dysku) jest właśnie na początku dysku.

Worek na dane nie puchnie, nie zmienia swojej wielkości wraz ze wzrostem lub spadkiem zajętości danych zawartych w nich. Plik ten jest właśnie takim pudełkiem, do którego wrzucamy dane, ale sama objętość tego pudełka się nie zmienia, niezależnie od tego czy jest on pusty czy pełny. Innymi słowy, jeśli występuje jakakolwiek fragmentacja danych zawartych w tym pliku nie wynika ona z zastosowanego systemu pików, po prostu dla tablicy alokacji partycji, zbiór ten jest cały czas jednym wielkim plikiem, w którym z jego punktu widzenia nic się nie dzieje.

Kolejną kwestią konieczną do obalenia są prawa dostępu na systemie NTFS. Jednym z poważniejszych argumentów przemawiających przeciw trzymaniu pliku pagefile.sys na NTFS'ie była konieczność w czasie jakiejkolwiek operacji odczytu uprawnień do tego pliku. Śmiem powiedzieć jednak, że chyba jednak nikt nie przyglądnął się prawom dostępu do tego pliku. Po prostu ich nie ma! Nie jesteśmy stanie ustalić mu żadnych praw, ani bezpośrednio na tym pliku (zakładka nie jest w ogóle dostępna), ani poprzez dziedziczenie uprawnień na konkretnej partycji. Po prostu dostęp do tego pliku ma tylko system i on nie sprawdza czy ma do niego prawa piania czy nie, odbywa się to w taki sam sposób jak w FAT.

Rozmiar klastra nie ma wpływu na wydajność odczytu lub zapisu w pliku wymiany. Wielu się pewnie teraz oburzy, już tłumaczę. Zapis normalnego pliku na dysku wygląda w ten sposób, że system szuka wolny klaster i jeśli go znajduje, następuje zapis, w przypadku pliku większego od rozmiaru klastra, system znajduje możliwie najbardziej skupione miejsce wolnych klastrów, tak aby plik był maksymalnie zdefragmentowany. System nie może wsadzić dwóch plików w jeden klaster pomimo tego, iż by się zmieściły, jakikolwiek zapis w takim obszarze oznacza, że jest on już w 100% zajęty. W przypadku pliku pagefile.sys sytuacja wygląda nieco inaczej. System plików widzi tylko jeden plik, duży, ciągły (o ile nie jest pofragmentowany), jednak sam Windows traktuje go jako fragment pamięci operacyjnej i tak też w nim zapisuje, czyli na dobrą sprawę w 4-kilobajtowym klastrze może umieścić np. 3 pliki wielkości 1 KB każdy. Więc czy będziemy mieć partycje sformatowaną w 1 KB klastry czy 64 KB i tak wydajność się nie zmieni. Zmieni się jedynie tablica alokacji, która w przypadku małych klastrów, rośnie w dość duże rozmiary i niepotrzebnie zajmuje nam cenne miejsce na dysku. Należy też pamiętać, że system Windows do pliku wymiany przenosi paczki o wielkości 4 KB, nigdy więcej, nigdy mniej. Wyciągając z tego wnioski dochodzimy do stwierdzenia: najbardziej optymalnym rozwiązaniem jest umieścić plik wymiany na osobnej partycji sformatowanej w NTFS'ie ale z maksymalnie dużym klastrem. Jeśli jest na tej samej partycji co system operacyjny, nie ma się czym specjalnie przejmować wielkością tablicy alokacji, gdyż ta i tak będzie puchła.


3. Dwa sposoby stronicowania. Ogólne zasady.


W systemach z rodziny Windows NT wyróżniamy dwa sposoby stronicowania: jawne, oraz ukryte.

Stronicowanie jawne polega na fizycznym przenoszeniu danych z pamięci operacyjnej do pliku wymiany - przeadresowaniu. Dotyczy ono tylko danych, które od czasu załadowania do fizycznej pamięci uległy jakiejkolwiek zmianie. Innymi słowy, wszelkie pliki graficzne, muzyczne, czy dokumenty, na których pracujemy są przenoszone do pamięci wirtualnej w momencie, gdy nie są nam potrzebne - system stwierdzi, że długo już nad nimi nie pracowaliśmy, a może on potrzebować miejsca na inne rzeczy.
Stronicowanie ukryte polega na usuwaniu paczek danych z pamięci fizycznej i pozostawieniu tylko "znaczników", że dany program, lub dana paczka danych powinna znajdować się w pamięci. No tak, ale co się z tym dzieje? Pliki w razie konieczności użycia, są po prostu ponownie ładowane z plików oryginalnych, jakimi są zbiory .exe .dll czy inne. Mechanizm jest wręcz rewelacyjnie pomyślany, program, który nie jest używany, a którego w czasie jego działania nie zmieniliśmy, jest po prostu usuwany. Przecież bezcelowym by było przenoszenie go do pliku wymiany, raz, że tym działaniem zajmujemy miejsce w pagefile.sys to jeszcze, zajmujemy cenny dla nas czas procesora, który musiałby zużyć na przeniesienie tych danych. Bardzo dobrze to widać na programach graficznych, które z reguły są zbudowane modułowo. Jest jeden główny moduł, który zawiera jakby jądro programu, a do tego są kolejne moduły odpowiadające za poszczególne efekty, maski, czy inne elementy dostępne z menu programu. Jeśli będziemy chcieli ich użyć, to system je doczyta, a nie będzie marnował miejsca w pamięci, która mogłaby być wykorzystana w dużo bardziej pożyteczny sposób - czyli przechowując plik, nad którym właśnie pracujemy.


Tutaj jest przykład stronicowania ukrytego:




4. Wielkość pliku pagefile.sys oraz jego położenie.



Jaką wielkość powinien mieć mój pagefile.sys? Takie pytanie zadaje sobie, co bardziej zaawansowany użytkownik, który w miarę swoich możliwości poprawia, co tylko może w swoim systemie operacyjnym. Nie słuchajcie osób, które mówią, że plik powinien być wielkości 0 MB, albo, że powinien być półtora razy większy od wielkości pamięci operacyjnej, albo większy. Wielkość pliku wymiany jest liczbą charakterystyczną dla każdego zespołu: użytkownik - komputer. Oznacza to, że każdy użytkownik sam powinien ustalić wielkość tego pliku w zależności od swoich potrzeb. Powtarzam jeszcze raz - nie ma uniwersalnego sposobu, czy wzoru na obliczenie wielkości tego pliku. Przedstawię kilka standardowych konfiguracji Windows 2000.
  • 256 MB komputer do Internetu, czasami do prostych gier, lub jakaś edycja pliku graficznego, oglądanie filmów - powinno nam wystarczyć około 260 MB tego pliku, jeśli zauważamy, że praktycznie nigdy nie przekraczamy zajętości fizycznej pamięci, spokojnie można ustawić na 100 MB lub nawet mniej.
  • 512 MB (lub więcej) komputer do Internetu, czasami do prostych gier, lub jakaś edycja pliku graficznego, oglądanie filmów - jeśli robimy to co w poprzednim przykładzie, w większości przypadków, wyłączenie pliku wymiany, bądź jego znaczne ograniczenie nie powinno nam w niczym przeszkodzić.
  • 256 MB komputer głównie do prac graficznych, edycji dźwięku, czy innych bardziej zaawansowanych prac - plik w zależności od potrzeb duży, nigdy nie mniejszy niż 260 MB, nie zaszkodzi mieć nawet 600 MB czy więcej, ale to już zależy stricte od naszych potrzeb.
  • 512 MB (lub więcej) komputer głównie do prac graficznych, edycji dźwięku, czy innych bardziej zaawansowanych prac - tutaj mamy już więcej RAM'u, choć z wielkością pagefile.sys nie powinniśmy schodzić poniżej fizycznej wielkości pamięci operacyjnej, gdyż system zawsze musi mieć miejsce gdzie zrzucić, pliki nad którymi pracujemy.
  • 256 MB komputer głównie do gier - nie schodzimy poniżej 260 MB, chyba, że gramy powiedzmy w gry typu FarCry, to tam plik o wielkości 512 MB może być mały. Czyli w zależności od potrzeb.
  • 512 MB (lub więcej) komputer głównie do gier - podobnie jak w przypadku wielkości RAM dwa razy mniejszej, nie powinniśmy schodzić poniżej fizycznej wielkości pamięci operacyjnej.
A co się dzieje, gdy np. ktoś ma powiedzmy 2 GB pamięci RAM, czy należy wtedy wyłączyć plik stronicowania?
Jeśli ktoś pracuje często na aplikacjach graficznych, a te mu zajmują bardzo duże wartości w pamięci, plik pagefile.sys o wielkości 1 - 2 GB powinien (a nawet musi) wystarczyć. Natomiast, jeśli taki ktoś, pracuje głównie na Internecie, gra w gry, czy ogląda filmy, wyłączenie pliku wymiany jest wręcz wskazane, gdyż ograniczymy wtedy niepotrzebne stronicowanie jawne. Pamiętajmy jednak o jednej rzeczy, systemy z rodziny Windows NT, zresztą ograniczenie to wynika bezpośrednio z architektury naszych procesorów, potrafią wykorzystać maksymalnie 4 GB pamięci (łącznie z tą wirtualną), mało tego dla programów dostępne jest "jedynie" pierwsze 2 GB, pozostaje 2 GB potrafi wykorzystać tylko system operacyjny, dlatego też rozszerzać pamięć powyżej 2 GB na dzień dzisiejszy mija się z celem, a jeśli to wówczas pliku pagefile.sys po prostu nie potrzebujemy.

Odrębnym przypadkiem jest sytuacja użytkownika, który na co dzień powiedzmy korzysta z Internetu, ma 512 MB RAM, ale czasami jednak lubi pobawić się edycją grafiki.. Dla niego najlepszym rozwiązaniem byłoby ustalenie minimalnej wielkości pliku wymiany (w przypadku Windows 2000 PRO jest to 2 MB), ale rozmiar maksymalny ustalić np. na 520 MB. Czyli wtedy kiedy system będzie potrzebował więcej pamięci, po prostu sobie ją zwiększy. Ale wówczas pojawia się problem fragmentacji pliku wymiany, bądź zorganizowaniu na tyle dużego miejsca na dysku, by taki plik się zmieścił. I teraz właśnie dochodzimy do kolejnego problemu - czyli umiejscowienie pliku wymiany.

Najkorzystniejszym z punktu widzenia wydajności jest mieć dwa dyski, z czego jeden jest przeznaczony jedynie na swapa. Jak większość z was zauważyła jest to dość abstrakcyjne stwierdzenie, gdyż:
  • dyski wielkości 1 - 4 GB są w porównaniu do dysków dzisiejszych bardzo wolne i stosowanie takich na plik wymiany mijałoby się z celem
  • umiejscowienie natomiast pliku wymiany na dysku szybkim, ale jednocześnie dużym (przecież nikt nie będzie poświęcał szybkiego Raptora 36 GB tylko na plik wymiany), stwarza ryzyko, że w czasie korzystania z pagefile.sys dysk będzie musiał jednocześnie coś odczytać z innych obszarów tego dysku.
Z oczywistych względów drugie rozwiązanie jest znacznie lepsze, choć konieczna jest nieco poprawa tego sposobu.
Mając dwa dyski (nie jest w tym momencie istotna wielkość tych dysków) powiedzmy, że wydajnościowo takie same, na jednym instalujemy system, a na drugim tworzymy specjalną partycję, na której umieszczamy plik wymiany. Kilka wskazówek:

  • musimy z góry założyć jaką wielkość musi mieć taka partycja, niestety konieczne będzie przeznaczenie dość dużego obszaru na taką partycję, gdyż nigdy nie wiemy, czy aby kiedyś nie będzie nam potrzebne więcej obszaru na plik wymiany. 1 GB takiej partycji dla systemów do 1 GB RAM, 2 GB dla komputerów pamięcią operacyjną o wielkości większej niż 1 GB. Oczywiście nie jest to regułą, jednak moim zdaniem 1 GB takiej partycji to jest niezbędne minimum jakie powinniśmy przeznaczyć, najwyżej na dysku zmieści nam się jeden film mniej :). Sprawą, mam nadzieję oczywistą, jest umieszczenie takiej partycji na samym początku dysku - jako pierwszej, którą tworzymy.
  • Co zrobić jednak, gdy mamy tylko jeden fizyczny dysk? I tutaj pojawia się pewien problem, gdyż jak wiadomo partycje są wydzielonymi fizycznie obszarami na dysku twardym i przeskakiwanie głowicy między tymi obszarami jest stosunkowo czasochłonne. I w tym momencie mamy dwie możliwości:
    1. umiejscowienie pliku wymiany na partycji systemowej
    2. utworzenie podobnie jak przy konfiguracji dwu-dyskowej małej partycji na początku dysku i tam umiejscowienie pliku wymiany.
    Sposób nr 1
    Zalety: system w czasie pracy na plikach umieszczonych na partycji systemowej i jednocześnie wykorzystując plik wymiany jest najwydajniejszy.
    Wady: duża fragmentacja pliku, podczas pracy na partycjach innych niż systemowa, następuje "przeskakiwanie" głowicy dysku twardego pomiędzy poszczególnymi partycjami. Bardzo mała możliwość ewentualnego rozszerzenia wielkości pliku wymiany, ze względu na ewentualnie dużą zajętość dysku systemowego oraz niska efektywność takiego rozwiązania.

    Sposób nr 2
    Zalety: bezproblemowe manipulowanie wielkością pliku wymiany, praktycznie zerowa fragmentacja pliku, wysoka efektywność jego rozszerzenia.
    Wady: następuje "przeskakiwanie" głowicy podczas używania jakiejkolwiek innej partycji, nawet systemowej. Konieczność zastosowania takiej partycji jako podstawowej, a co za tym idzie system będzie trzymał na niej najważniejsze pliki uruchomieniowe.

    Sposób nr 1 vs. Sposób nr 2
    Musimy sobie wyobrazić naszą pracę codzienną. Proszę zauważyć, że korzystając ze sposobu nr 2 jest w większości przypadków i tak wydajniejsze niż 1 sposób. Przyczyna jest dość oczywista: partycja przeznaczona na swap file jest zasadniczo pomijalnie mała w stosunku do reszty dysku (przeciętny czytelnik tego artykułu ma dysk wielkości 60-80 GB). A co za tym idzie to przeskakiwanie będzie miało z pewnością mniejszy wpływ na wydajność, niż fragmentacja pliku podczas korzystania ze sposobu nr1. Należy też zauważyć, iż sytuacje, w których plik wymiany będzie wykorzystywany równocześnie z plikami na partycji systemowej są relatywnie rzadkie. Wyjątkiem jest tutaj stosowanie jednej wielkiej partycji na całym dysku, co oczywiście odradzam. Kolejną zaletą stosowania rozwiązania nr 2 w stosunku do pierwszego jest to, że możemy z powodzeniem stosować minimalny rozmiar pliku swapa i tylko w razie konieczności go rozszerzać, co w takim wypadku nie powoduje fragmentacji pliku.

    Co jednak zrobić z ww. plikami startowymi? Pliki te to m.in. boot.ini, ntdetect.com czy ntldr. Wielkość ich sumaryczna nie przekracza 256 KB, dlatego też z powodzeniem możemy zastosować bardzo duży klaster przy formatowaniu tejże partycji. Ale jak to zrobić z poziomu instalacji systemu. Niestety nie da się, musimy albo sformatować dysk na innym komputerze, albo już po zainstalowaniu sformatować dysk c: i zastosować konsolę odzyskiwania i tam odpowiednie komendy, za pomocą, których odzyskamy bootloader. Po takiej operacji normalnie uruchomimy system i z jego poziomu utworzymy na tej partycji pagefile o odpowiedniej wielkości. O zaletach dużego klastra już pisałem, ale dość ogólnikowo, teraz trochę rozszerzę. Im większy klaster tym tablica alokacji będzie mniejsza, a co za tym idzie mamy więcej miejsca na nasz plik wymiany oraz prawdopodobieństwo fragmentacji pagefile.sys spowodowanego, przez umieszczenie tablicy alokacji w środku partycji, spada.

    Jest jeszcze jedno rozwiązanie: mianowicie można ustalić pierwszą partycję systemową, a dopiero drugą przeznaczyć na stronicowanie, wykluczamy w ten sposób problem plików startowych na partycji z pagefile.sys oraz nie musimy uruchamiać konsoli odzyskiwania. Wadą tego rozwiązania (choć może dla niektórych jest to zaleta) jest to, że partycja systemowa musi być maksymalnie mała, aby partycja na plik wymiany była możliwie najbliżej początku dysku. Wymaga to od nas wielkiego rygoru w trzymaniu porządku na dysku, a przynajmniej na partycji systemowej, po prostu praktycznie każdy większy program trzeba trzymać na innej partycji, co swoją droga i tak polecam.


    5. Windows: 2000 vs. XP vs. 2003.


    • Windows NT 4.0 - Windows NT 4.0
    • Windows 2000 - Windows NT 5.0
    • Windows XP - Windows NT 5.1
    • Windows 2003 - Windows NT 5.2
    Jak widać dużym krokiem w rozwoju systemów Windows z rodziny NT był Windows 2000, późniejsze systemy wprowadzały zauważalne zmiany, choć ogólna zasada działania systemu, czy samo jądro pozostało praktycznie to samo. Jak się jednak okazuje są pewne różnice w zarządzaniu pamięcią w wymienionych wyżej systemach. Pomijamy tutaj kwestię Windows NT 4.0 z kilku powodów: bardzo małe moje doświadczenie z tym systemem oraz praktycznie znikoma jego popularność na rynku użytkowników domowych. Windows 2003 operuje pamięcią wirtualną praktycznie tak samo jak Windows XP, jedynie "dwutysiączka" wyłamuje się.

    Jak wynika z moich doświadczeń (dwa lata na Windows 2000, oraz 1 rok na Windows XP, w tym pół roku na XP SP1) oraz obserwacji, Windows 2000 ma dużo mniejszą "ochotę" na korzystanie z pliku wymiany w porównaniu z nowszymi jego odmianami. Może pokaże to na przykładzie:
    • Mamy 256 MB RAM, system tuningowany (wyłączona większość usług, sam system po uruchomieniu zajmuje jakieś 65 MB (Windows 2000) lub 70 MB (Windows XP/2003)), po załadowaniu Winampa, Total Commandera, menadżera zadań oraz Word'a zajętość pamięci wynosi 110 MB w przypadku Windows 2000 lub 115 w przypadku Windowsa XP/2003.
      Po kilkugodzinnym pisaniu w Wordzie, Windows 2000 można powiedzieć, że nie używa pagefile.sys, niezależnie kiedy chcę się przerzucić na inną aplikację, czy to jest winamp czy Total Commander i tak system cały czas trzyma te programy w pamięci operacyjnej. Windows XP natomiast już po około 30 minutach pisania w Wordzie przeniósłby Total Commandera do pliku wymiany, oraz część winampa, która nie byłaby potrzebna do odtwarzania muzyki.
    Wniosek z tego płynący jest jeden - Windows XP jest systemem, który w dużo większym stopniu stronicuje, niż Windows 2000. Jak jednak można łatwo to zaobserwować algorytmy zarządzające stronicowaniem w Windows 2000 są znacznie lepsze, niż te z Windows XP. Windows 2000 stronicuje (jawnie) dopiero wtedy, gdy faktycznie potrzebna jest mu pamięć, Windows XP natomiast stronicuje już wtedy, gdy jakiś program przekroczy swój próg czasu egzystowania w pamięci bez aktywności. Przy odpowiednio dużym pliku wymiany oraz dużej ilości pamięci operacyjnej stronicowanie niejawne jest takie samo w oby systemach, jednak jawne jest dużo większe w przypadku Windowsa XP. Jeśli natomiast mamy nawet dużo pamięci, a zużywamy jej jedynie powiedzmy 20-30% oraz mamy duży plik wymiany, to Windows XP i tak z niego będzie korzystał ograniczając tym stronicowanie niejawne, Windows 2000 natomiast będzie korzystał z pamięci fizycznej dotąd dopóki mu jej wystarczy.

    Jest jeszcze jedna możliwa sytuacja: dużo pamięci, ale mały plik wymiany: Windows 2000 korzysta tak samo jakby miał duży plik wymiany, natomiast Windows XP stronicowanie jawne zmniejszy kosztem stronicowania niejawnego. Innymi słowy XP'k będzie wówczas wyrzucał z pamięci programy, które jego zdaniem są już niepotrzebne, tylko dlatego by dane, które od uruchomienia uległy zmianie pozostały w niej, gdyż nie ma na to miejsca w pagefile. Co oczywiście powoduje, że po dłuższym nie używaniu danego programu, system w momencie przywrócenia go z paska zadań sczyta go ponownie z oryginalnego źródła.

    Zalety stosowania stronicowania użytego w Windows XP.
    Podczas ładowania do pamięci dużego pliku lub programu, który teoretycznie może przekroczyć obecny obszar wolnej pamięci, Windows XP szybciej załaduje taki program, gdyż on już te dane, ma przeniesione do pliku stronicowania, natomiast Windows 2000 musi je dopiero przenieść.

    Dlaczego tak się dzieje? XP jest systemem bardziej przewidującym (co nie znaczy, że robi to dobrze) od swojego poprzednika. XP wychodzi z założenia, że w każdym momencie może nam braknąć pamięci, więc co tylko jest nam mniej potrzebne przenosi do pliku pagefile.sys. Dwutysiączka zaś wychodzi z założenia, że wyżej opisane sytuacje będą rzadkością, więc ewentualnie niepotrzebne dane przeniesie do pliku wymiany w momencie kiedy będzie potrzebny wolny obszar pamięci. Zasadniczo obydwa mają pewien czas po którym programy znajdują się w pliku wymiany, jednak Windows 2000 przy małym zużyciu pamięci powijalnie mało przenosi do pagefile, można powiedzieć, że nie przenosi w ogóle, dopiero w momencie, kiedy jest na realnie potrzebna ta pamięć, system stara się organizować wolne miejsce poprzez stronicowanie jawne oraz niejawne. Choć proszę się nie martwić, że robi to długo, system używa swpafile dopiero po zajęciu 80% (później pokażę gdzie ten parametr możemy zmieniać) i w związku z tym nigdy nie dojdzie do sytuacji, że nie mamy miejsca w pamięci na uruchomienie danego procesu, system wówczas zacznie pierwsze wykorzystywać te 20% a dopiero później przenosić dane do swapfile. Później już w tle w miarę możliwości zrobi sobie te wolne 20%.

    Który lepszy? Nie ulega wątpliwości, że znów zależy to od osobistych preferencji. Chcąc jednak przedstawić choć częściowe kryteria wyboru systemu musimy określić:
    1. W jakim stopniu (procentowo) nasza pamięć jest standardowo zajęta?
    2. Czy plik wymiany mamy na osobnym dysku, innym niż uruchamiane programy, które teoretycznie mogą przekroczyć pojemność pamięci?
    W punkcie pierwszym im ta procentowa zajętość jest większa lepszym rozwiązaniem będzie Windows XP, po prostu system będzie lepiej pilnował by nie zabrakło nam RAM'u na aktualnie uruchamiany program, jeśli ta wartość schodzi już poniżej powiedzmy 60% to Windows 2000 będzie lepiej zarządzał naszą pamięcią. Jeśli natomiast plik pagefile.sys mamy na osobnej partycji wówczas stosowanie algorytmów zawartych w Windows XP praktycznie mija się z celem, gdyż system podczas ewentualnego ładowania dużego programu, będzie mógł równocześnie zapisywać w pliku wymiany, jak wiadomo szybkość pamięci RAM jest nieporównywalnie większa niż szybkość odczytu czy zapisu dysku twardego.
    W punkcie 4 podawałem proponowaną wielkość pagefile.sys. Tyczyła się ona systemu Windows 2000. Jak się okazuje Windows XP musi mieć swapafile wielkości co najmniej ilości zamontowanej pamięci fizycznej, niestety ale nie jest zalecane zmniejszanie jego wielkości poniżej tej wartości. I tak:
    • 256 MB; komputer do Internetu, czasami do prostych gier, lub jakaś edycja pliku graficznego, oglądanie filmów - powinno nam wystarczyć około 380 MB tego pliku, jeśli zauważamy, że praktycznie nigdy nie przekraczamy zajętości fizycznej pamięci, spokojnie można ustawić na 280 MB lub nawet mniej.
    • 512 MB (lub więcej); komputer do Internetu, czasami do prostych gier, lub jakaś edycja pliku graficznego, oglądanie filmów - jeśli robimy to co w poprzednim przykładzie, w większości przypadków, ustawienie na 520 MB powinno wystarczyć.
    • 256 MB; komputer głównie do prac graficznych, edycji dźwięku, czy innych bardziej zaawansowanych prac - plik w zależności od potrzeb duży, nigdy nie mniejszy niż 380 MB, nie zaszkodzi mieć nawet 700 MB czy więcej, ale to już zależy stricte od naszych potrzeb.
    • 512 MB (lub więcej); komputer głównie do prac graficznych, edycji dźwięku, czy innych bardziej zaawansowanych prac - tutaj mamy już więcej RAM'u, choć z wielkością pagefile.sys nie powinniśmy schodzić poniżej fizycznej wielkości pamięci operacyjnej, gdyż system zawsze musi mieć miejsce gdzie zrzucić, pliki nad którymi pracujemy.
    • 256 MB; komputer głównie do gier - nie schodzimy poniżej 380 MB, chyba, że gramy powiedzmy w gry typu FarCry, to tam plik o wielkości 600 MB może być mały. Czyli w zależności od potrzeb.
    • 512 MB (lub więcej); komputer głównie do gier - podobnie jak w przypadku wielkości RAM dwa razy mniejszej, nie powinniśmy schodzić poniżej fizycznej wielkości pamięci operacyjnej.
    • 1 GB i więcej; niezależnie od zastosowań - ile RAM'u tyle swapfile, albo i więcej.
    Dla przypomnienia Windows 2003 zarządza pamięcią w praktycznie taki sam sposób jak Windows XP.


    6. Tuning obsługi pamięci wirtualnej.


    Możemy w pewien sposób wpłynąć na to, w jaki sposób oraz kiedy system będzie stronicował. Wszystkie te ustawienia są zawarte w rejestrze w kluczu:

    HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management

    I tam znajdziemy kilka interesująco wyglądających kluczy (jeśli któregokolwiek by nie było należy go utworzyć - wartość DWORD):
    • ClearPageFileAtShutdown - jeśli damy na 1 system podczas zamykania będzie czyścił nam pagefile.sys. pagefile.sys Z własnego doświadczenia polecam, choć wiem, że system zamykający się 2 minuty może być uciążliwy, lecz jeśli nie robimy tego za często polecam. Po prostu po ponownym uruchomieniu dostajemy plik, który jest idealnie "czysty", niesfragmentowany. W przypadku kiedy ustawienie damy na 0, wówczas system podczas zamykania nie będzie czyścił pliku. Głównie chodzi tutaj o kwestię ewentualnego odczytu danych przez osoby niepowołane.
    • DisablePagingExecutive - ustawienie mówiące czy system ma bardziej używać pamięci (1) czy bardziej swapa (0). Ustawiając wartość 1 zmniejszamy jego apetyt na pamięć wirtualną w czasie kiedy jej w rzeczywistości nie potrzebuje. Jak wynika z moich testów ustawienie to praktycznie nie działa na XP. XP'kowi niewiele to daje, a dwutysiączce prawie nic nie poprawia, różnice jednak są, więc i tak polecam ustawić to na 1 w systemach co najmniej 256 MB pamięci.
    • LargeSystemCache - ustawiamy na 1 choćby nie wiem co :) dzięki temu system z nieużywanego obszaru pamięci będzie robił bufor dysku (coś jak Linux), dzięki czemu częściej używane dane będziemy mieć od razu w pamięci, coś jak cache'owanie plików internetowych.
    • NonPagedPoolSize - chyba najbardziej nas interesujące ustawienie, a szczególnie osób posiadających Windowsa 2000. Tutaj wpisujemy ilość kilobajtów, po przekroczeniu, których system ma zacząć używać swapa. Standardowa wartość 0 oznacza, że system będzie używał pliku stronicowania po przekroczeniu 80% zajętości pamięci i w rzeczywistości tak będzie, pozostałe 20% praktycznie nigdy nie będzie wykorzystywane! Jak to powinno być ustawione? Osoby, które rzadko przekraczają zajętość pamięci, albo przekraczają, ale i tak mają pagefile.sys na osobnym dysku, polecam ustawić na prawie 100% zajętości pamięci (pamiętajmy wpisujemy dziesiętnie ilość pamięci w Kilobajtach).
    Osoby, które dość często przekraczają zajętość pamięci i mają swapa na tym samym dysku co system, polecam na pozostawienie tego parametru w standardowej wartości, lub nie przekraczanie 90% wartości pojemności pamięci. Znów niestety ustawienie to ma mniejszy wpływ na Windowsa XP niż na Windowsa 2000, choć i tak polecam modyfikację.

    Pamiętajmy jeszcze o jednym - nie wolno wpisywać wartości większej niż fizyczna wielkość naszej pamięci operacyjnej, wówczas po przekroczeniu takiej wielkości system się zawiesi.

    Jeszcze słowo na temat Windowsa 2003. Jak się okazuje pomimo tego, że system jest zbudowany na bazie XP (w jądrze praktycznie nie pozostało nic zmienione) jednak system jest dość elastyczny ze względu na możliwości ustawienia mu powyższych kluczy. Mają one mniej więcej taki sam wpływ jak na W2K. System po takim tuningu zachowuje się praktycznie jak dwutysiączka. Różnic dokładnych niestety podać nie jestem w stanie, gdyż moja styczność tym systemem jest dość krótkotrwała. Zarządzanie pamięcią ma lepsze, dużo lepsze niż XP, ale jednak W2K to jeszcze nie jest, ale niewiele mu do tego brakuje. Polecam.


    7. Obserwacja w menadżerze zadań pracy systemu.


    Menadżer zadań jest głównym źródłem wiedzy o pracy naszego systemu, naprawdę dużo rzeczy można się z niego dowiedzieć, a najbardziej interesującym jest zarządzanie pamięcią.


    Na załączonym screenie (zrobiłem go w momencie pisania tego artykułu) widać dość rozbudowaną ilość kolumn oferowanych przez ten program. Które nas interesują?

    CPU Time - im wartość tam zapisana jest większa, tym dany program jest aktywniejszy w systemie, warto wiedzieć, które są takie programy. Na załączonym obrazku widać, że Winami pomimo kilka razy dłuższego czasu pracy od włączenia ma porównywalne zapotrzebowanie na procesor co pracujący przez kilka godzin Word.
    Menory Usage (użycie pamięci) - podaje nam ile dany proces aktualnie zajmuje w pamięci.
    Peak Memoru usage - Szczytowe użycie pamięci, parametr przydatny, choć nie najważniejszy.
    Page faults (błędy stron) - chyba najbardziej ważny parametr ze wszystkich, jako wartość podaje liczbę błędów stron, nie są to bynajmniej błędy w sensie jak większość z was sobie to wyobraża, kolumna ta podaje nam ile razy system musiał się odwołać do pamięci wirtualnej (tyczy się to również oryginalnego pliku, gdyż dla systemu jest to niejako "plik wymiany:" tego programu), jedynymi programami, na które nie ma co patrzeć są wszelkie odtwarzacze plików mp3 bądź filmów, gdyż one cały czas doczytują. Generalna zasada jest taka: jeśli jakiś proces ma więcej niż 7-8 błędów na sekundę, mamy za mało pamięci. Wartość tą widzimy właśnie w kolumnie PF Delta czyli zmiana błędów stron.
    VM Size (wielkość pamięci wirtualnej) - kolumna informuje nas ile kilobajtów siedzi w pamięci wirtualnej, powtarzam tyczy się to również stronicowania niejawnego. TA kolumna informuje nas bezpośrednio ile dany program nie używa, a ile używa, widać to bardzo ładnie po TOTALCMD.EXE - w pamięci zajmuje 7 MB, a nie załadowane jest ponad 6 MB, ale oczywiście program cały czas pracuje (my na nim pracujemy) i wielkości te nie zmieniają się (z dokładnością do kilkunastu kilobajtów).

    Obserwując uważnie pracę naszego systemu, będziemy w stanie stwierdzić, jakiej wielkości powinien być nasz pagefile.sys oraz czy warto inwestować w większą ilość pamięci RAM.


    8. Kilka słów od autora.


    Czytając artykuł, szczególnie końcówkę, można odnieść wrażenie, że w jakiś sposób faworyzuję Windows'a 2000. Mówię stanowczo NIE! To co napisałem jest wynikiem trzyletniego używania tych systemów walki o jak najwydajniejsze działanie - zawsze miałem mało RAM'u, najpierw 64, teraz 256 MB.

    Ktoś uważny, mający już pewne pojęcie o tym winien zauważyć, że algorytmy stworzone przez firmę Microsoft nie są jednak idealne. Bardzo ładnie widać to na przykładzie XP.
    System pomimo zajętości pamięci w 50% i tak przenosi dość duże ilości danych do swapa... właśnie przenosi, czy nie mógłby ich skopiować tam? Wiem, że w tym momencie trzeba by nieco inaczej zaadresować "komórki" w swapie, ale myślę, że niebyły to wielki problem. Po prostu taki algorytm byłby wręcz idealnym rozwiązaniem. System w tle kopiuje praktycznie całą zawartość RAM'u do pagefile i w razie konieczności użycia większej ilości pamięci po prostu usuwa dawno nieużywane dane, czynność taka byłaby o wiele szybsza, niż przenoszenie w przypadku W2K, oraz mniej problematyczna z punktu widzenia nie załadowania pamięci w tak dużym stopniu w przypadku XP. Dochodzi do tak abstrakcyjnych sytuacji, że mając 2 GB RAM system i tak cache'uje dane pomimo tego, iż praktycznie nigdy nie mamy szans nawet dotrzeć do choć 70% zajętości pamięci (mówię tutaj o standardowej pracy na komputerze). System zachowuje się jakby nadal miał mało pamięci.


    9. Podsumowanie


    Wreszcie koniec :) Mój artykuł jest takim omówieniem tematu, który powinien większości z Was dobrze naświetlić problem stronicowania w systemie Windows. Pominąłem tutaj celowo omawianie poszczególnych algorytmów stronicowania (FIFO i inne), pominąłem też opis dokładny adresowania i przenoszenia stron z pamięci i do pamięci operacyjnej, gdyż uważam, że kwestie te są dla nas mało istotne z punktu widzenia przyspieszenia pracy naszego komputera, a ktoś wnikliwy, łakomy na wiedzę, jeśli będzie chciał to z pewnością poszuka dogłębniejszych informacji, które zresztą mogę mu wskazać.

    Grzebałem dość dużo w Internecie, niestety ciężko jest znaleźć coś rzeczowego, coś przystępnego, które by mówiło dość dokładnie o stronicowaniu, mam nadzieję, że ten poradnik będzie takim właśnie źródłem informacji.

    Od was oczekuję konstruktywnej dyskusji, mile widziane opinie, a najbardziej te negatywne :)

    Poleć znajomym: Udostępnij

    Redakcja nie ponosi odpowiedzialności za wypowiedzi Internautów opublikowane na stronach serwisu oraz zastrzega sobie prawo do redagowania, skracania bądź usuwania komentarzy zawierających treści zabronione przez prawo, uznawane za obraźliwie lub naruszające zasady współżycia społecznego.


    EDDY - 11 lipca 2004, 03:02

    Podobno Unreal 2 (prawdopodobne wydanie nastąpi w 2005 roku) w wysokiej rozdzielczości i detalami ustawionymi maksymalnie, potrzebować będzie ponad 2 GB RAM. Tak więc pora zacząć myśleć nad przesiadką na Athlon 64:)


    Enigma - 13 lipca 2004, 17:29

    Podobno 640kb miało wystarczyć wszystkim :P


    Davka - 14 lipca 2004, 12:48

    Dobry artykuł.

    Jedna uwaga co do tej osobnej partycji na swapa. Ja mam zrobione tak że mam dwie part. podstawowe (swap i systemowa). Partycja na swapa jest pierwsza na dysku ale to druga (systemowa) jest aktywna i dlatego instalator tam umiescil pliki systemowe.


    pIOTER - 14 lipca 2004, 15:14

    pamięć jest teraz tania, więc dlaczego nie zrobic czegoś w rodzaju HDD na DIMMach ~0.5 -1 giga specjalnie dla swapa, oczywiscie dla tych ktorzy czegos takiego potrzebuja. I tak przeciez po kazdym zaladowaniu systemu traci sie to co jest w slapie wiec ulotnosc tej pamieci wcale nie bedzie przeszkadzac. A szybkosc...


    Piotr - 14 lipca 2004, 15:39

    Bardzo ciekawy artykuł. Moje obserwacje niestety nie do końca pokrywają się z obserwacjami i zaleceniami autora.
    1. Wyłączenie pliku wymiany w w2k okazywało się w praktyce niemożliwe. Nawet przy 512MB pamięci i biurowym korzystaniu z komputera (w pracy) system wkrótce upominał się o miejsce i zakładał plik wymiany. Przeciętna zajętość pamięci na poziomie 250-350MB (chodzi klient Distributed Folding)
    2. Na drugim komputerze z winxp i 512MB pamięci o podobnym przeznaczeniu + czasem film (w domu) system od kilku miesięcy pracuje bez pliku wymiany i nigdy nie zapragnął większej ilości pamięci. Zajętość pamięci - jak wyżej.
    3. Subiektywnie wydaje mi się, że win2k znacznie częsciej grzebie po dysku, a w każdym razie w złym momencie - powodując czasem wyraźne spowolnienie komputera. Win xp, jeszcze jak miał plik wymiany, robił to dyskretniej, przyjaźniej dla użytkownika (wcześniej przygotowywał miejsce w pamięci i szybciej odpowiadał przy uruchamianiu programu lub ładowaniu dokumentu), zgodnie z podanym przez autora algorytmem.
    4. Zdecydowanie polecam winxp i pracę bez pliku wymiany - przy 512MB nie mam z tym żadnych kłopotów, a komputer jest szybki jak nigdy wcześniej. Oczywiście pod warunkiem, że nie otwiera się kilkuset megabajtowych dokumentów :-).
    5. Oczywiście w winxp działa jeszcze drugi mechanizm przyspieszający uruchamianie programów (i samych windowsów) - prefetching (wczytywanie z wyprzedzeniem), więc to także sprawia, że praca z winxp na systemie z odpowiednią ilością pamięci jest bardziej komfortowa niż na w2k.


    Mav - 15 lipca 2004, 03:05

    Eddy: A to ciekawe, bo ja w Unreala 2 grałem już kawał czasu temu i jakoś 256 MB mi wystarczyło. :)

    Artykuł bardzo fajny.


    EDDY - 15 lipca 2004, 11:54

    Miałem na myśli Unreal 3, ale gafa! :D


    Tass - 15 lipca 2004, 13:52

    No, ladnie :)
    Ciekawia mnie 2 rzeczy:
    "nie da się wyłączyć stronicowania w Windows NT" - a ustawienie na 0 to jakie? Ja tak mam.
    "stronicowanie odbywa się nie tylko w pliku pagefile.sys" - a gdzie jeszcze?


    DJ - 15 lipca 2004, 20:30

    do Tass

    ""nie da się wyłączyć stronicowania w Windows NT" - a ustawienie na 0 to jakie? Ja tak mam"
    odpowiedź jest w punkcie nr 3 jest tam opis stronicowania jawnego i niejawnego
    ustawienie pagefile.sys na zero wylancza jedynie stronicowanie jawne

    ""stronicowanie odbywa się nie tylko w pliku pagefile.sys" - a gdzie jeszcze?"
    odpowiedzialem wlasnie nieco wyżej :D


    do Davka
    kurcze faktycznie zapomnialem o tym, mój bład, dzieki

    panu Piotrowi odpowiem mysle ze dzisiaj bo neistety nie mam narazie na tyle czasu by to dokladnie wytlumaczyc, samemu tez mnie to dziwi gdyz testowalem to na dwoch konfiguracjach oczywiscie na dwoch roznych systemach W2K i XP w wersjach angielskich

    do pIOTREK
    pomysł dobry ale jak pisalem wcześniej niestety eliminuje jedynie stronicowanie jawne
    niejawnego niestety nei da się wyłączyć
    aha i pamięci wcale na dzien dzisiejszy tanie nie są :d

    Pozdrawiam


    Dana - 15 lipca 2004, 22:54

    Hej ! Super artykuł. Można prosić o podobny w systemie Linux!!!

    Pozdrawiam


    Cyborg - 15 lipca 2004, 23:29

    Artykuł bardzo dobry, ale jakoś jego logika się kończy w momencie posiadania więcej niż 512 MB ram.

    Ja mam 1GB Ram i do tego Windows XP i testowo 2003. Zauważyłem, że system najlepiej pracuje z WYŁĄCZONYM SWAP FILE. I nigdy się nie zdażyło, by systemowi brakowało pamięci, a uruchamiałem wiele jednocześnie - FarCry, Firawall, Antywirus, Thunderbird, 3xOpera, Total Commande, Excel....i wiele innych drobnych programików typu np. Abit EQ, czy Miranda.

    Jeszcze bardziej się zdziwiłem podczas przerabiania utworu muzycznego o wielkości 1447 MB, kiedy system bez zająknięcia przerabiał mi tak wielki plik.

    Inna sprawa, że parametr "Błędy Ston" przyjmuje u mnie wartości typu 282000 (a gdzie tam 7!!!) dla Winampa, ale jakie to ma znaczenie, jeśli system chodzi i tak lepiej...

    Jeśli kogoś stać na 1GB ram to polecam, bo wg mnie system dostaje ogromnego przyspieszenia i to bez "szemrania" na dysku.


    GC - 16 lipca 2004, 14:03

    ClearPageFileAtShutdown ma rolę zupełnie inną, niż opisałeś: po uruchomieniu pagefile dla systemu jest czysty, nieważne jaki śmietnik zawierał przed restartem. Dokładnie tak, jak przy "szybkim formatowaniu" nośników - np. HDD, CDRW, choć "stare" dane są wciąż na swoim miejscu, nie mają żadnego wpływu na fragmentację nowozapisywanych. Czyszczenie pliku wymiany przy zamykaniu systemu uniemożliwia późniejsze obejrzenie jego zawartości przez osoby postronne, potencjalnie może on zawierać przecież niejedną niejawną informację.


    pIOTER - 16 lipca 2004, 15:02

    do DJ: ale to nie muszą byc zaraz DDR2 533MHz - wystarczy 256, nawet zwykle SDRAM 133 - one i tak są bez porownania od jakiegokolwiek twardziela szybsze. A tego "twardziela" to wyobrazam sobie tak - kilka gniazd na pamieci w obudowie 3.5'' - jak potrzeba wiecej to sobie dokladasz. Po drugie - zawsze mozna to ustawic jako pierwszy swap - drugi moze byc juz na HDD


    DJ - 18 lipca 2004, 06:05

    W punkcie nr 3 mały update

    do Dana
    kurcze niestety nie znam sie na tyle dobrze na tym systemie, ale kto wie może kiedyś.


    do Cyborg
    "Inna sprawa, że parametr "Błędy Ston" przyjmuje u mnie wartości typu 282000 (a gdzie tam 7!!!) dla Winampa, ale jakie to ma znaczenie, jeśli system chodzi i tak lepiej..."
    chodzi o paramrt PF Delta nie o samo Page faults, zreszta, kurcze nie wiem czy o tym psiałęm czy nie, w to nie wliczamy programów które siłą rzeczy ich zasada działania polega na zczytywaniu z dysku, przecież nie zmusiły winampa żeby wczytał wszystkei mp3 do pamięci i z RAM'u je puszczał, tyczy się to aplikacji których zasadą nie jest korzystanie z dysku

    "Jeszcze bardziej się zdziwiłem podczas przerabiania utworu muzycznego o wielkości 1447 MB, kiedy system bez zająknięcia przerabiał mi tak wielki plik."
    zależy jaki był to program, gdyż jeśli plik ma taką wielkość to duża część programó probuje go załadowac w całosci do pamięci, widać ten robił to na części, jednak usiał mielić dyskiem, gdyz fizycznie nie idzie wsadzić tak wielkiego pliku do pamięci

    "Jeśli kogoś stać na 1GB ram to polecam, bo wg mnie system dostaje ogromnego przyspieszenia i to bez "szemrania" na dysku."
    to wiadome, ja osobiscie mam wyłączopnego pagefile nawet przy 256 MB, ale trzebqa się pilnować, niestety, aczkolwiek róznicę czuć

    "Artykuł bardzo dobry, ale jakoś jego logika się kończy w momencie posiadania więcej niż 512 MB ram.

    Ja mam 1GB Ram i do tego Windows XP i testowo 2003. Zauważyłem, że system najlepiej pracuje z WYŁĄCZONYM SWAP FILE. I nigdy się nie zdażyło, by systemowi brakowało pamięci, a uruchamiałem wiele jednocześnie - FarCry, Firawall, Antywirus, Thunderbird, 3xOpera, Total Commande, Excel....i wiele innych drobnych programików typu np. Abit EQ, czy Miranda."
    nie sens jest, tylko o co w tym wszystkim chodzi
    musimy sobie uswiadomić pewną rzecz:
    to co właczymy i zostanie to zmodyfikowane od czas załadowania go do pamięci musi zostac umieszcozne w pliku stronicowania, czyli wszelkie prace na plikach graficznych dźwiękowych dokumentach czy tego typu plikach,
    w przypadku kiedy nie mamy takiego pliku wymiany system tego nie wrzuca do pliku stronicowania gdyż takowego nie ma, ale on i tak będzie stronicował dane w pamięci, tyle ze w momencie kiedy nie będziemy prez dłuższy czas używac powiedzmy worda z załadowanym doń dokumentem ktory co dopiero napsialiśmy to po godzinie czasu w pamięci nie bezie worda!!! dokument będzie w pamięci, ale programu WORD już nie będzie, w momencie kiedy mamy plik stronicowania, paging odbywa się pierw na dokumencie, któy jest przenoszony do pagefile.sys a później jest z pamięci usuwany WORD, i w razie przywrócenia okna windows załaduje program z oryginalnego pliku oraz dokument z pagefile.sys. Gdy nie ma pagefile.sys windows przywroci jedynie worda, gdyz dokument będzie nadal w pamieci, choc w innym miejscu niz pierwotnie byl, gdyz wowczas plik stronicowania znajduje sie w pamieci. dlatego tez wylaczania swapa powoduje wyrzucaniez pamieci tego co teoretycznie moze nam być bardziej potrzebne, choc zalezy to tylko i wylacznie od indywidualnego przypadku. ale będą przypadki, w któych nie mając pagefile windows nam bedzie pracowal mniej efektywniej, i wcale nie zalezy to od ilosci zamontowanej pamieci, mozemy miec nawet 4 GB system i tak będzie stronicowal


    do PIOTR
    jak obiecałęm tak też odpowiadam:

    ". Wyłączenie pliku wymiany w w2k okazywało się w praktyce niemożliwe. Nawet przy 512MB pamięci i biurowym korzystaniu z komputera (w pracy) system wkrótce upominał się o miejsce i zakładał plik wymiany. Przeciętna zajętość pamięci na poziomie 250-350MB (chodzi klient Distributed Folding)"
    nie wiem, moze ten program robi jakieś problemy, niemniej teraz nawet dla testuy wyłączylem pagefile przy mojej ilośći RAM rónej 256, troche ciezko jest się zmeiścić w tych 250 MB ale coz. Pyanie jest jedno nie był to przypadkiem Widnows 2000 bez Serivece packa bądź z SP1 ? bo wraz z SP2 dostajemy nową politykę zarządzania pamięcią. Jestem w stanie udowodnić, że tak jest jak piszę, choc nie mówię ze Pan nie ma racji, czy źle obserwował.

    "2. Na drugim komputerze z winxp i 512MB pamięci o podobnym przeznaczeniu + czasem film (w domu) system od kilku miesięcy pracuje bez pliku wymiany i nigdy nie zapragnął większej ilości pamięci. Zajętość pamięci - jak wyżej."
    powtarzam pytanie ten Windows 2000 był z SP czy bez. XP bez SP to tak jak W2k SP2 plus kilka błedów, XP z SP1 to tak jak W2K SP3 plus kilka usprawnien + kilka błedów

    "3. Subiektywnie wydaje mi się, że win2k znacznie częsciej grzebie po dysku, a w każdym razie w złym momencie - powodując czasem wyraźne spowolnienie komputera. Win xp, jeszcze jak miał plik wymiany, robił to dyskretniej, przyjaźniej dla użytkownika (wcześniej przygotowywał miejsce w pamięci i szybciej odpowiadał przy uruchamianiu programu lub ładowaniu dokumentu), zgodnie z podanym przez autora algorytmem."
    Szkoda ze nie wiem czy ten W2k ma SP czy nie :)
    ponieważ generalną różnica w zarządzaniu pamięcią przez oba systemy jest to, że XP wcześniej i przy mniejszym obciążeniu pamięci wyrzuyca z pamięci co jego zdaniem nie jest potrzebne, a sam algorytm jest ten sam.
    XP jest lepszym rozwiązaniem gdy nasze stałe zapotrzebowanie na pamięć jest równe około 60-80% wielkosci fizycznej pamięci, ponieważ program, któy teoretycznei moze przekroczyć zajętość pamięci będzie sie szybciej uruchamiał, ale w momencie kiedy nasze zapotrzebowanie jest niższe W2K będzie lepiej działał, gdyż nie będzie tak często wyrzucał z pamięci danych. Nie mówie, że dla wszystkich jest lepszy W2K, ale są zastosowania w któych jest lepszy od XP, w innych nowszy jest lepszy, ot taki urok

    "5. Oczywiście w winxp działa jeszcze drugi mechanizm przyspieszający uruchamianie programów (i samych windowsów) - prefetching (wczytywanie z wyprzedzeniem), więc to także sprawia, że praca z winxp na systemie z odpowiednią ilością pamięci jest bardziej komfortowa niż na w2k."
    Mechanizm ten polega na edfragmentowaniu w tle, poprsotu system jakby bez wiedzy użytkownika prznosi czesto uruchamiane programy bliżej początku dysku, dzięki czemu szybciej się uruchamiają, jesli korzystamy z defragmentatora mamy to samo. Kolejną sprawa Widnows XP wykrywa co włanczamy zaraz po właczeniu systemu i zapamiętuje to w w momencie startu poprsotu troche takeigo programu już ładuje, ale to dopeiro wtedy keidy dysk jest wolny, wyglada to w ten sposob, ze po uruchomieniu systemu, windows troche tak mieli dysiem, nie jest to mielenie uciazliwe, ale jest. Generlanei jesli cos zawsze uruchamiamy to ladujemy to do autostartu i wtedy sie jeszcze szybciej uruchamia. kolejna rzecza jest tzw. buforowanie, któe się poprostu włancza. Więc co takiego nam daje prefetching ? Dziwi mnie to jescze o tyle, ze przeciez Widnwos XP zajmuje więcej pamięci, a co za tym idzie nawet jak mamy dużą ilość pamięci to i tak procesor musi na tych danych wykonywac operacje, im wiecej mamy zapchane tym system wolniej chodzi, pomimo tego, ze mamy jescze dużo wolnego RAM

    "4. Zdecydowanie polecam winxp i pracę bez pliku wymiany - przy 512MB nie mam z tym żadnych kłopotów, a komputer jest szybki jak nigdy wcześniej. Oczywiście pod warunkiem, że nie otwiera się kilkuset megabajtowych dokumentów :-)."
    Windows 2000 też to potrafi. Mam nadzieję, że nie odbierze tego Pan jako działo wycelowane w kierunku Windows XP. Poprostu uważam, że W2K w niczym nie jest gorszy. Przynajmniej z mojego punktu widzenia

    NIestey nie miałem jak wrzucić większego updatetu na stronę heh.pl wiec całośc jest pod tym adresem: http://www.v-lo.krakow.pl/~thn/komp/software/paging.htm

    Czekam na dalsza dyskusję

    Pozdrawiam


    dk75 - 20 lipca 2004, 22:19

    Nie wiem jak wy to robicie ale mi się nie udało wyłączyć pagefile.sys

    Oczywiście, w panelu kontrolnym jest pieknie ładnie ale na dysku C: w głównym katalogu ni stąd ni zowąd pojawia się plik pagefile.sys wielkości ok. 1140MB

    Dodam jeszcze że mam swapa na osobnej partycji, 512MB i 768MB pamięci RAM i WinXP SP1

    więc?...


    DJ - 21 lipca 2004, 01:12

    do dk75

    hmmmm dziwne bardzo na XP SP1 mozna poprsotu wogule gowylaczyc by go wogulenie bylo

    pytanie tylko jedno dajesz obie wielkosci takei same ?
    czy ta maksymalna jakas tam sobie dajesz ?


    Janek - 28 lipca 2004, 01:53

    Rzetelny artykul. Ciesze sie ze moglem sie w nim udzelic w malym procencie. Dobra robota DJ


    miniek - 23 sierpnia 2004, 00:46

    Do pIOTER -a

    W sprawie pamięci ram jako dyski twarde tzw ramdyski , kolego otóż istnieją takie dyski są one określane jako SSD Solid State Disk i są one cholernie drogie np Rocket Drive firmy
    Cenatek (4GB) kosztuje coś koło 3000 USD (www.cenatek.com) a Silicon Disk II firmy Atto , che lepiej nie będe pisać ...


    ZAP - 28 sierpnia 2004, 10:12

    Mógł by ktoś napisać jak w bezpieczny sposób przenieśc plik pagefile.sys na inny dysk ? Z góry dzieki i pozdrawiam


    Goldberg - 27 grudnia 2004, 04:35

    Hm......maszyna ma 1 GB Ram'u. WinXP SP2, gry, internet, troche grafiki, multimedia, i jak optymalnie to ustawić? Standartowo przyjmuje mi: rozmiar początkowy-1536, rozmiar maksymalny 3072. Teraz wogóle go wylączyłem....
    Pozdrawiam


    Szczurex - 14 marca 2005, 21:33

    www.kamilek.xt.pl Zapraszam[/color][color=blue]


    Sauer - 02 kwietnia 2005, 11:02

    Radzę popracować nad pisownią, gdyż występują błędy gramatyczne i językowe.


    Tommy - 27 kwietnia 2005, 22:06

    Jeśli chodzi o partycje to lepsza jest mimo wszystko Fat 16, na NTFS tworzą się pliki systemowe exclusive locked (nie widać ich w defragmentatorze windowsa, są nieprzenośne i mogą być w dowolnym klastrze na danej partycji), których prawie nie ma na Facie. Ogranicza to fragmentacje woluminu. Jeśli macie dwa systemy operacyjne to możecie zdefragmentować swapa (najlepiej jak jest na innej partycji {dysku})
    Zdefragmentowany swap w xp przyspiesza jego działanie.

    I jeszcze jedno jeśli używałby ktoś z was Orcada, Oracle i Delphi naraz to zobaczyłby że 1GB Ramu to zamało.


    Synchro - 10 czerwca 2005, 16:42

    Dobry temat, bardzo dobry artykół. Takie ustawienia ręcznie systemu o wiele lepiej wpływają na jego prace pod względem wydajności a nawet stapilności. Oczywiście sam polecam wydzielenie swap na innej partycji niż system (jak najbliżej I partycji)
    a zwłaszcza w odosobnieniu ma to bardzo wiele zalet polecam również przeniesienie temp i tmp na inne partycje ( czeba się pobawić zmiennymi środowiskowymi) a takrze temperary internet file ( TAKA MODYIKACJA MA BARDZO BUŻY WPŁYWA NA NIE FRAGMĘTOWANIE SIĘ PARTYCJI SYSTEMOWEJ).

    Sam stosuje taką personalizacje systemu od win 95 do XP. Zawsze systemik chodzi cacy :)


    123 - 21 lipca 2005, 18:47

    Mam pewne w�tpliwo�ci - dotycz� przede wszystkim "stronicowania niejawnego" - zrobi�em sobie programik alokuj�cy ok 600 MB pami�ci, odpali�em Worda i jaki� dokument. Po kilku godzinach monitorowania u�ycia pami�ci przez proces WIWORD (za pomoc� performance monitor) nic si� nie zmieni�o -> rozmiar zajmowany przez proces jak by� na pocz�tku taki zosta� na ko�cu -> czyli de facto Windows nie zwolni� nic pami�ci, czyli nie ma "stronicowania niejawnego".

    Test przeprowadzi�em na komputerze z Windowsem XP 1 GB RAM i wy��czonym plikiem stronicowania.

    Pozatym s� b��dy dotycz�ce menad�era zada�:
    1. Nie jest prawd�, �e kolumna Mem Usage okre�la ile program zajmuje w pami�ci.
    2. Nie jest prawd�, �e kolumna VM Size okre�la ile pami�ci jest "nieza�adowanej"


    Robert - 22 lipca 2005, 12:43

    Na swoim komputerze mam 1 GB RAM, trzy dyski (2 SATA i 1 ATA100) Win XP. Wykorzystuję go do realizacji nagrań muzycznych.
    Ostatnio zainstalowałem takie samplery, które używają plików kilkusetmagabajtowych!!! Tworząc jakieś aranżacje często wykorzystane jest kilka GB danych.
    Chcę usprawnić działanie systemu i utworzyć oddzielną partycję na SWAP.
    I tu pytanie - jaką wielkość w moim przypadku powinna mieć ta partycja? Jakiej wielkości ustawić plik wymiany? I czy wartość początkowa i końcowa powinny być takie same? (aby zapobiec defragmentacji? - w moim przypadku przy tak dużej ilości przetwarzanych damych defragmentacja wpływa na wydajność).
    Pozdrawiam


    LargeSystemCache=0 - 03 września 2005, 21:29

    Ustawilem sobie LargeSystemCache na 1 w rejestrze XP SP1 i tylko to.
    Po paru minutach pracy zaczęły mi sie pojawiac błędy We/Wy, a aplikacja ktora je powodowala przestawała odpowiadac. Troche uszkodzila mi sie historia mirandy i zniknęły mi prawe zakładki w total comanderze, ale wszystko naprawiłem i gdzieś tak po trzecim restarcie wróciłem do poprzednich ustawień rejestru :|


    kamil - 08 stycznia 2008, 23:53

    Gratulacje. Fajny i przydatny artykuł.
    Ja znalazłem jeszcze jeden świetny (między innymi poruszający to, co również Ty opisywałeś)

    http://www.searchengines.pl/index.php?showtopic=5989



    Autor:  










    Copyright © 2002-2024 | Prywatność | Load: 4.27 | SQL: 4 | Uptime: 89 days, 21:30 h:m | Wszelkie uwagi prosimy zgłaszać pod adresem eddy@heh.pl