Stronicowanie Windows NT (Windows 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.
- Wstępne uwagi.
- Czym właściwie jest plik pagefile.sys? NTFS vs. FAT.
- Dwa sposoby stronicowania. Ogólne zasady.
- wielkość pliku pagefile.sys oraz jego położenie.
- Windows: 2000 vs. XP vs. 2003.
- Tuning obsługi pamięci wirtualnej.
- Obserwacja w menadżerze zadań pracy systemu.
- Kilka słów od autora.
- Podsumowanie.
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łaściwie 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:
- umiejscowienie pliku wymiany na partycji systemowej
- 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 2Zalety: 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 2Musimy 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ć:
- W jakim stopniu (procentowo) nasza pamięć jest standardowo zajęta?
- 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_MACHINE\ SYSTEM\ CurrentControlSet\ Control\ Session Manager\ Memory 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 i bezpieczny. 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 – domyślnie system może przenosić do pliku wymiany część jądra systemu i sterowników. Druga część nie może zostać przeniesiona. Zmieniając wartość na 1 zmusimy system, aby całe jądro i sterowniki znalazły się pamięci operacyjnej na stałe, co gwarantuje maksymalną wydajność. Komplikuje to jednak zadanie menadżerowi pamięci i może powodować pewne kłopoty, dlatego posiadacze mniejszej ilości pamięci [do 384 MB] powinni się dwa razy zastanowić zanim dokonają przeróbki. [punkt poprawiony przez mkk270 na podstawie wskazówek autora]
- 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.
Memory 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 dany program sobie zaalokował. Jest to obszar, który nie może być wykorzystywany przez inne aplikacje.
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.
UPDATE
Stronicowanie jednak nadal nie daje spokoju 🙂
Wczoraj dostałem dość ciekawego maila, który dał mi dużo do myślenia. Publikować oczywiście nie będę, ale zacytuję fragment wypowiedzi nadawcy dotyczący definicji VM Size – kolumny w menadżerze zadań:
„A definicja brzmi:
Private Bytes is the current number of bytes this process has allocated that cannot be shared with other processes.”
Tak wiec ten licznik zawiera to co jest w pamieci RAM. Nie mozna rozdzielać „Mem usage” i „VM Size”. Po przetłumaczeniu na język polski mamy:
VM Size jest to ilość wyrażona w bajtach, którą dany proces sobie alokuje i ten obszar nie jest dostępny dla innych procesów.
Zabrałem się więc za testy.
System Windows 2000 SP3 był już włączony 38 godzin. Byłem po kilku wizytach w Internecie, więc w tym czasie miałem uruchomione różne aplikacje, m. in.:
- wpkontakt
- putty
- Internet explorer
W czasie normalnej pracy na komputerze, czyli powiedzmy pisanie czegoś w Wordzie czy praca przy stronie internetowej oprócz samego systemu są włączone takie oto aplikacje:
- Winamp
- Total Commander
- MS Word
- Agent MS (Pomocnik)
- Internet Explorer
- Notatnik
- Menadżer zadań
Zajętość w czasie takiej pracy oscyluje w granicach 120 MB do 150 MB, mowa tutaj oczywiście o liczbie, jaką pokazuje Menadżer zadań w pasku statusu.
Wyjaśnię pierwsze pewną terminologię, która będzie używana w czasie tego artykułu:
To co jest na zrzucie ekranu oznaczone jako nr 1 to jest kolumna nazywana Mem Usage. Poszczególne wartości tam podane mówią nam ile dana aplikacja zajmuje w pamięci operacyjnej.
Nr 2 to jest kolumna VM Size – czyli to co właśnie będziemy próbowali określić.
Nr 3 to jest tzw. zajętość pamięci, choć niestety mylnie oznaczana przez sam Menadżer zadań jako Mem Usage, gdyż kolumna oznaczona nr 1 ma taką samą nazwę a bynajmniej te dwie wartości nie są takie same.
Dla przypomnienia mój komputer oferuje 256 MB pamięci a ustawienia w rejestrze są następujące:
- DisablePagingExecutive – 1
- IoPageLockLimit – 32768
- LargeSystemCache – 1
- NonPagedPoolSize – 256 000
- PagingFiles – H:\pagefile.sys 1085 1085
Obserwowane procesy:
- MS Word (WINWORD.EXE) – edytowane trzy dokumenty, z czego jeden bardzo obszerny, liczył sobie około 150 stron i chyba przez to w tak znacznym stopniu wykorzystywał procesor, który swoją drogą wolny nie jest – Athlon 2200 MHz. Program działał zawsze w tle.
- Powłoka (explorer.exe) – zasadniczo nie używany, ale jako składnik systemu warty obserwacji.
- Internet Explorer (IEXPLORE.EXE) – program będący po części składnikiem systemu, przypuszczam, że pewnie sobie roboty dokładam, a wam czytania, ale zobaczymy co z tego wyjdzie.
- Task Manager (taskmgr.exe) – jako jedyny obserwowany program działający cały czas i cały czas używany oraz, również jako jedyny, działał na priorytecie wyższym niż reszta procesów.
- Total Commander (TOTALCMD.EXE) – program ten jednak czasami używałem, ale obserwacja jego zachowania myślę, że jest warta.
- Macromedia Fireworks (Fireworks.exe) – w tym programie zrzucałem screeny i dzięki tej aplikacji takbardzo mi spuchła zajętość pamięci.
- Corel Draw 9 (coreldrw.exe) – na początku używany by zapchać pamięć, później pozostawiony w stanie „spoczynku”.
- WP Kontakt (wpkontakt.exe) – programu ani razu nie przywracałem ze stanu minimalizacji, ale jako aplikacja pamięciożerna jest godna obserwacji.
Faza 1
Zaczynamy zapychać pamięć:
- uruchamiamy Corel Draw i zaczynamy coś malować, byleby tylko zwiększyć zajętość pamięci
- uruchamiamy przeglądarkę ACDSee w wersji 4 – program pozostawia jakby agenta egzystującego w pamięci, dzięki czemu nawet po wyjściu (jak się okazuje nie oznacza to zamknięcia aplikacji) z programu w momencie otwierania obrazka, takowy ładuje się błyskawicznie.
- Sandra – program diagnostyczny, zainteresowanie tym programem skończyło się na jego odpaleniu.
- Excel – sytuacja wygląda podobnie jak w przypadku Sandry
- 3DMark03 – analogicznie jak wyżej
- WPKontakt – to samo co wyżej.
Zrzut ekranu nr 1:
Zrzut ekranu przedstawiony na obrazku nr 1 zrobiłem poprzez ustawienie „Zawsze na wierzchu” dla menadżera zadań i jednocześnie w tym momencie robiłem pętle w Corelu.
Obserwacje:
Tabela nr 1:
Kolumna Memory Usage: | 126 440 KB |
Kolumna VM Size: | 110 716 KB |
Mem. Usage + VM Size: | 237 156 KB |
Zajętość pamięci: | 184 312 KB |
Tabela procesów nr 1:
Proces: | Mem. Usage: | VM Size: |
MS Word: | 17 900 KB | 18 012 KB |
explorer.exe: | 2 376 KB | 3 068 KB |
Internet Explorer: | 12 580 KB | 10 124 KB |
Task Manager: | 1 852 KB | 672 KB |
Total Commander: | 4 628 KB | 5 868 KB |
Corel Draw: | 22 680 KB | 11 692 KB |
WP Kontakt: | 12 252 KB | 8 324 KB |
Faza 2
Zapychamy pamięć dalej:
- Uruchamiamy Macromedia Firewoks robimy screena z fazy pierwszej.
- Uruchamiamy Kalkulator systemowy w celu przeliczania zajętości pamięci.
Zrzut ekranu nr 2:
Zrzut ekranu Menadżera zadań, a co za tym idzie obrazujący dokładnie sytuację zaraz po eksportowaniu obrazu fazy pierwszej.
Obserwacje:
Tabela nr 2:
Kolumna Memory Usage: | 185 112 KB |
Kolumna VM Size: | 154 332 KB |
Mem. Usage + VM Size: | 339 444 KB |
Zajętość pamięci: | 232 376 KB |
Tabela procesów nr 2:
Proces: | Mem. Usage: | VM Size: |
MS Word: | 17 636 KB | 17 740 KB |
explorer.exe: | 2 264 KB | 3 056 KB |
Internet Explorer: | 12 456 KB | 9 848 KB |
Task Manager: | 1 960 KB | 672 KB |
Total Commander: | 4 684 KB | 5 904 KB |
Fireworks: | 55 128 KB | 43 564 KB |
Corel Draw: | 22 748 KB | 11 740 KB |
WP Kontakt: | 12 304 KB | 8 336 KB |
Faza 3
Zapychamy pamięć w dalszym stopniu:
- Robimy kolejne screeny i zapisujemy je za pomocą programu Macromedia Fireworks.
Zrzut ekranu nr 3:
Obserwacje:
Tabela nr 3:
Kolumna Memory Usage: | 186 136 KB |
Kolumna VM Size: | 173 692 KB |
Mem. Usage + VM Size: | 359 828 KB |
Zajętość pamięci: | 251 828 KB |
Tabela procesów nr 3:
Proces: | Mem. Usage: | VM Size: |
MS Word: | 17 768 KB | 17 880 KB |
explorer.exe: | 2 792 KB | 3 056 KB |
Internet Explorer: | 12 456 KB | 9 848 KB |
Task Manager: | 1 984 KB | 672 KB |
Total Commander: | 4 684 KB | 5 904 KB |
Fireworks: | 68 044 KB | 62 776 KB |
Corel Draw: | 14 828 KB | 11 740 KB |
WP Kontakt: | 12 304 KB | 8 336 KB |
Faza 4
Zapychamy pamięć w dalszym stopniu:
- Robimy kolejne screeny i zapisujemy je za pomocą programu Macromedia Fireworks.
Zrzut ekranu nr 4:
Obserwacje:
Tabela nr 4:
Kolumna Memory Usage: | 190 620 KB |
Kolumna VM Size: | 189 200 KB |
Mem. Usage + VM Size: | 379 820 KB |
Zajętość pamięci: | 267 448 KB |
Tabela procesów nr 4:
Proces: | Mem. Usage: | VM Size: |
MS Word: | 17 768 KB | 17 880 KB |
explorer.exe: | 2 832 KB | 3 020 KB |
Internet Explorer: | 12 420 KB | 9 804 KB |
Task Manager: | 2 024 KB | 672 KB |
Total Commander: | 4 684 KB | 5 904 KB |
Fireworks: | 76 944 KB | 77 988 KB |
Corel Draw: | 13 360 KB | 12 132 KB |
WP Kontakt: | 12 304 KB | 8 336 KB |
Faza 5
Zapychamy pamięć w dalszym stopniu:
- Robimy kolejne screeny i zapisujemy je za pomocą programu Macromedia Fireworks.
Zrzut ekranu nr 5:
Obserwacje:
Tabela nr 5:
Kolumna Memory Usage: | 178 980 KB |
Kolumna VM Size: | 204 420 KB |
Mem. Usage + VM Size: | 383 400 KB |
Zajętość pamięci: | 282 624 KB |
Tabela procesów nr 5:
Proces: | Mem. Usage: | VM Size: |
MS Word: | 17 636 KB | 17 740 KB |
explorer.exe: | 2 860 KB | 3 020 KB |
Internet Explorer: | 7 180 KB | 9 804 KB |
Task Manager: | 2 052 KB | 672 KB |
Total Commander: | 2 636 KB | 5 904 KB |
Fireworks: | 86 024 KB | 93 416 KB |
Corel Draw: | 13 708 KB | 12 140 KB |
WP Kontakt: | 7 728 KB | 8324 KB |
Faza 6
Zapychamy pamięć w dalszym stopniu:
- Robimy kolejne screeny i zapisujemy je za pomocą programu Macromedia Fireworks.
Zrzut ekranu nr 6:
Obserwacje:
Tabela nr 6:
Kolumna Memory Usage: | 183 528 KB |
Kolumna VM Size: | 218 744 KB |
Mem. Usage + VM Size: | 402 272 KB |
Zajętość pamięci: | 297 068 KB |
Tabela procesów nr 6:
Proces: | Mem. Usage: | VM Size: |
MS Word: | 17 768 KB | 17 880 KB |
explorer.exe: | 2 944 KB | 3 020 KB |
Internet Explorer: | 7 180 KB | 9 804 KB |
Task Manager: | 2 072 KB | 672 KB |
Total Commander: | 2 636 KB | 5 904 KB |
Fireworks: | 90 300 KB | 107 564 KB |
Corel Draw: | 13 720 KB | 12 152 KB |
WP Kontakt: | 7 736 KB | 8 336 KB |
Faza 7
Zapychamy pamięć w dalszym stopniu:
- Robimy kolejne screeny i zapisujemy je za pomocą programu Macromedia Fireworks.
Zrzut ekranu nr 7:
Obserwacje:
Tabela nr 7:
Kolumna Memory Usage: | 162 724 KB |
Kolumna VM Size: | 234 304 KB |
Mem. Usage + VM Size: | 397 028 KB |
Zajętość pamięci: | 312 740 KB |
Tabela procesów nr 7:
Proces: | Mem. Usage: | VM Size: |
MS Word: | 10 992 KB | 17 880 KB |
explorer.exe: | 2 960 KB | 3 020 KB |
Internet Explorer: | 4 612 KB | 9 804 KB |
Task Manager: | 2 096 KB | 672 KB |
Total Commander: | 1 612 KB | 5 904 KB |
Fireworks: | 89 780 KB | 123 224 KB |
Corel Draw: | 12 272 KB | 12 152 KB |
WP Kontakt: | 5 668 KB | 8 336 KB |
Faza 8
Zapychamy pamięć w dalszym stopniu:
- Robimy kolejne screeny i zapisujemy je za pomocą programu Macromedia Fireworks.
Zrzut ekranu nr 8:
Obserwacje:
Tabela nr 8:
Kolumna Memory Usage: | 100 960 KB |
Kolumna VM Size: | 264 148 KB |
Mem. Usage + VM Size: | 365 108 KB |
Zajętość pamięci: | 343 008 KB |
Tabela procesów nr 8:
Proces: | Mem. Usage: | VM Size: |
MS Word: | 2 780 KB | 17 880 KB |
explorer.exe: | 2 952 KB | 3 036 KB |
Internet Explorer: | 848 KB | 9 804 KB |
Task Manager: | 2 068 KB | 672 KB |
Total Commander: | 464 KB | 5 904 KB |
Fireworks: | 70 588 KB | 153 052 KB |
Corel Draw: | 4 884 KB | 12 152 KB |
WP Kontakt: | 2 184 KB | 8 336 KB |
Faza 9
Wyłączyliśmy aplikacje, które nam miały pozapychać pamięć.
- Robimy kolejne screeny i zapisujemy je za pomocą programu Macromedia Fireworks, ale program został otwarty dopiero po zrobieniu zrzutu ekranu.
- Przy zamykaniu Corela i Fireworksa niestety ale Word wskoczył na pierwszy plan i też konieczne było użycie Total Commandera.
Zrzut ekranu nr 9:
Obserwacje:
Tabela nr 9:
Kolumna Memory Usage: | 25 472 KB |
Kolumna VM Size: | 74 448 KB |
Mem. Usage + VM Size: | 99 920 KB |
Zajętość pamięci: | 149 096 KB |
Tabela procesów nr 9:
Proces: | Mem. Usage: | VM Size: |
MS Word: | 6 720 KB | 17 588 KB |
explorer.exe: | 3 164 KB | 3 004 KB |
Internet Explorer: | 752 KB | 9 804 KB |
Task Manager: | 1 712 KB | 656 KB |
Total Commander: | 1 992 KB | 5 888 KB |
Fireworks: | Zamknięty. | |
Corel Draw: | Zamknięty. | |
WP Kontakt: | Zamknięty. |
Faza 10
Włączyłem Excela, zamknąłem dokument Worda, który generował tak duże obciążenie procesora, poprzywracałem wszelkie aplikacje schowane w pasku zadań.
- Robimy kolejne screeny i zapisujemy je za pomocą programu Macromedia Fireworks, ale program został otwarty dopiero po zrobieniu zrzutu ekranu.
Zrzut ekranu nr 10:
Obserwacje:
Tabela nr 10:
Kolumna Memory Usage: | 65 592 KB |
Kolumna VM Size: | 80 836 KB |
Mem. Usage + VM Size: | 146 428 KB |
Zajętość pamięci: | 146 864 KB |
Tabela procesów nr 10:
Proces: | Mem. Usage: | VM Size: |
MS Word: | 7 696 KB | 17 584 KB |
explorer.exe: | 2 448 KB | 3 008 KB |
Internet Explorer: | 9 520 KB | 9 700 KB |
Task Manager: | 1 880 KB | 668 KB |
Total Commander: | 3 124 KB | 5 856 KB |
Fireworks: | Zamknięty. | |
Corel Draw: | Zamknięty. | |
WP Kontakt: | Zamknięty. |
Faza 11
Kolejny krok polegał na ponownym włączeniu Corela i otworzeniu w nim kilku dużych map bitowych, otwarty też już jest Fireworks, który eksportował dwa zrzuty ekranu.
Co ciekawe otwarcie tych aplikacji wymagało długiego mielenia dysku, system jakby zapomniał, że co dopiero je miał otwarte, jednak odpalenie takiego samego programu po pół minuty praktycznie nie powoduje odczytu dysku.
Zrzut ekranu nr 11:
Obserwacje:
Tabela nr 11:
Kolumna Memory Usage: | 127 252 KB |
Kolumna VM Size: | 242 260 KB |
Mem. Usage + VM Size: | 369 512 KB |
Zajętość pamięci: | 313 320 KB |
Tabela procesów nr 11:
Proces: | Mem. Usage: | VM Size: |
MS Word: | 2 268 KB | 17 584 KB |
explorer.exe: | 3 492 KB | 3 096 KB |
Internet Explorer: | 1 660 KB | 9 700 KB |
Task Manager: | 2 048 KB | 668 KB |
Total Commander: | 2 952 KB | 4 856 KB |
Fireworks: | 46 996 KB | 48 636 KB |
Corel Draw: | 48 344 KB | 114 824 KB |
WP Kontakt: | Zamknięty. |
Faza 12
Jedyną tutaj zmianą jest zamknięcie Corela. Obserwujemy, co się dzieje, jak system zarządza pamięcią.
Zrzut ekranu nr 12:
Obserwacje:
Tabela nr 12:
Kolumna Memory Usage: | 93 828 KB |
Kolumna VM Size: | 137 332 KB |
Mem. Usage + VM Size: | 231 160 KB |
Zajętość pamięci: | 206 924 KB |
Tabela procesów nr 12:
Proces: | Mem. Usage: | VM Size: |
MS Word: | 2 844 KB | 17 580 KB |
explorer.exe: | 3 724 KB | 3 008 KB |
Internet Explorer: | 1 912 KB | 9 700 KB |
Task Manager: | 2 096 KB | 668 KB |
Total Commander: | 3 064 KB | 5 856 KB |
Fireworks: | 59 688 KB | 58 580 KB |
Corel Draw: | Zamknięty. | |
WP Kontakt: | Zamknięty. |
Świetny artykuł, dziękuję bardzo!
Ciągle ulepszam swojego Windows XP i po mimo upływu lat nadal okazuje się, że odkrywam w nim kolejne możliwości jego optymalizacji.