heh.pl
Kanał informacyjny Heh.pl


Piątek 29 marca 2024 r.

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


Artykuł

Komentarzy: 5 | Autor: dj@v-lo.krakow.pl | Wyświetleń: 38822 | Data: 19 lipca 2004, 00:27

Stronicowanie w systemach Windows 2000 / XP / 2003 - część 2

Stronicowanie jednak nadal nie daje spokoju :)
Kilka dni temu dostałem dość ciekawego maila, który dał mi dużo do myślenia...

Stronicowanie jednak nadal nie daje spokoju :)
Kilka dni temu 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:

Kliknij aby powiększyć


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:
  1. 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.
  2. Powłoka (explorer.exe) - zasadniczo nie używany, ale jako składnik systemu warty obserwacji.
  3. 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.
  4. 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.
  5. Total Commander (TOTALCMD.EXE) - program ten jednak czasami używałem, ale obserwacja jego zachowania myślę, że jest warta.
  6. Macromedia Fireworks (Fireworks.exe) - w tym programie zrzucałem screeny i dzięki tej aplikacji takbardzo mi spuchła zajętość pamięci.
  7. Corel Draw 9 (coreldrw.exe) - na początku używany by zapchać pamięć, później pozostawiony w stanie "spoczynku".
  8. 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:
Kliknij aby powiększyć


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 KB18 012 KB
explorer.exe:2 376 KB3 068 KB
Internet Explorer:12 580 KB10 124 KB
Task Manager:1 852 KB672 KB
Total Commander:4 628 KB5 868 KB
Corel Draw:22 680 KB11 692 KB
WP Kontakt:12 252 KB8 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:
Kliknij aby powiększyć


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 KB17 740 KB
explorer.exe:2 264 KB3 056 KB
Internet Explorer:12 456 KB9 848 KB
Task Manager:1 960 KB672 KB
Total Commander:4 684 KB5 904 KB
Fireworks:55 128 KB43 564 KB
Corel Draw:22 748 KB11 740 KB
WP Kontakt:12 304 KB8 336 KB



Faza 3

Zapychamy pamięć w dalszym stopniu:
  • Robimy kolejne screeny i zapisujemy je za pomocą programu Macromedia Fireworks.

Zrzut ekranu nr 3:
Kliknij aby powiększyć


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 KB17 880 KB
explorer.exe:2 792 KB3 056 KB
Internet Explorer:12 456 KB9 848 KB
Task Manager:1 984 KB672 KB
Total Commander:4 684 KB5 904 KB
Fireworks:68 044 KB62 776 KB
Corel Draw:14 828 KB11 740 KB
WP Kontakt:12 304 KB8 336 KB



Faza 4

Zapychamy pamięć w dalszym stopniu:
  • Robimy kolejne screeny i zapisujemy je za pomocą programu Macromedia Fireworks.

Zrzut ekranu nr 4:
Kliknij aby powiększyć


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 KB17 880 KB
explorer.exe:2 832 KB3 020 KB
Internet Explorer:12 420 KB9 804 KB
Task Manager:2 024 KB672 KB
Total Commander:4 684 KB5 904 KB
Fireworks:76 944 KB77 988 KB
Corel Draw:13 360 KB12 132 KB
WP Kontakt:12 304 KB8 336 KB



Faza 5

Zapychamy pamięć w dalszym stopniu:
  • Robimy kolejne screeny i zapisujemy je za pomocą programu Macromedia Fireworks.

Zrzut ekranu nr 5:
Kliknij aby powiększyć


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 KB17 740 KB
explorer.exe:2 860 KB3 020 KB
Internet Explorer:7 180 KB9 804 KB
Task Manager:2 052 KB672 KB
Total Commander:2 636 KB5 904 KB
Fireworks:86 024 KB93 416 KB
Corel Draw:13 708 KB12 140 KB
WP Kontakt:7 728 KB8324 KB



Faza 6

Zapychamy pamięć w dalszym stopniu:
  • Robimy kolejne screeny i zapisujemy je za pomocą programu Macromedia Fireworks.

Zrzut ekranu nr 6:
Kliknij aby powiększyć


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 KB17 880 KB
explorer.exe:2 944 KB3 020 KB
Internet Explorer:7 180 KB9 804 KB
Task Manager:2 072 KB672 KB
Total Commander:2 636 KB5 904 KB
Fireworks:90 300 KB107 564 KB
Corel Draw:13 720 KB12 152 KB
WP Kontakt:7 736 KB8 336 KB



Faza 7

Zapychamy pamięć w dalszym stopniu:
  • Robimy kolejne screeny i zapisujemy je za pomocą programu Macromedia Fireworks.

Zrzut ekranu nr 7:
Kliknij aby powiększyć


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 KB17 880 KB
explorer.exe:2 960 KB3 020 KB
Internet Explorer:4 612 KB9 804 KB
Task Manager:2 096 KB672 KB
Total Commander:1 612 KB5 904 KB
Fireworks:89 780 KB123 224 KB
Corel Draw:12 272 KB12 152 KB
WP Kontakt:5 668 KB8 336 KB



Faza 8

Zapychamy pamięć w dalszym stopniu:
  • Robimy kolejne screeny i zapisujemy je za pomocą programu Macromedia Fireworks.

Zrzut ekranu nr 8:
Kliknij aby powiększyć


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 KB17 880 KB
explorer.exe:2 952 KB3 036 KB
Internet Explorer:848 KB9 804 KB
Task Manager:2 068 KB672 KB
Total Commander:464 KB5 904 KB
Fireworks:70 588 KB153 052 KB
Corel Draw:4 884 KB12 152 KB
WP Kontakt:2 184 KB8 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:
Kliknij aby powiększyć


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 KB17 588 KB
explorer.exe:3 164 KB3 004 KB
Internet Explorer:752 KB9 804 KB
Task Manager:1 712 KB656 KB
Total Commander:1 992 KB5 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:
Kliknij aby powiększyć


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 KB17 584 KB
explorer.exe:2 448 KB3 008 KB
Internet Explorer:9 520 KB9 700 KB
Task Manager:1 880 KB668 KB
Total Commander:3 124 KB5 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:
Kliknij aby powiększyć


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 KB17 584 KB
explorer.exe:3 492 KB3 096 KB
Internet Explorer:1 660 KB9 700 KB
Task Manager:2 048 KB668 KB
Total Commander:2 952 KB4 856 KB
Fireworks:46 996 KB48 636 KB
Corel Draw:48 344 KB114 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:
Kliknij aby powiększyć


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 KB17 580 KB
explorer.exe:3 724 KB3 008 KB
Internet Explorer:1 912 KB9 700 KB
Task Manager:2 096 KB668 KB
Total Commander:3 064 KB5 856 KB
Fireworks:59 688 KB58 580 KB
Corel Draw:Zamknięty.
WP Kontakt:Zamknięty.



Faza 13

Tutaj zastosowałem nieco inny test niż wcześniej, mianowicie uważni czytelnicy zaobserwowali, że zapychałem pamięć danymi, które zmieniły się od momentu uruchomienia ich. Tym razem postanowiłem uruchomić maksymalnie dużo aplikacji, które się, że tak powiem nie zmieniają, czyli są to wszelkiego rodzaju aplety panelu sterownia, benchmarki, czy przeglądarka internetowa, w której otwierałem kilkanaście okien z bardzo dużymi plikami.

Zrzut ekranu nr 13:
Kliknij aby powiększyć


Obserwacje:

Tabela nr 13:
Kolumna Memory Usage:159 032 KB
Kolumna VM Size:292 736 KB
Mem. Usage + VM Size:451 768 KB
Zajętość pamięci:368 136 KB


Tabela procesów nr 13:
Proces:Mem. Usage:VM Size:
MS Word:Zamknięty.
explorer.exe:4 808 KB3 556 KB
Internet Explorer:61 312 KB180 604 KB
Task Manager:2 404 KB732 KB
Total Commander:2 904 KB5 856 KB
Fireworks:Zamknięty.
Corel Draw:Zamknięty.
WP Kontakt:Zamknięty.




Wnioski faza 1:
  1. Sprawdza się to o czym pisałem w artykule o Stronicowaniu - wszelkie dane, które się zmieniają automatycznie znajdują się w pliku pagefile.sys - widać to ewidentnie w programie coreldrw.exe gdzie licznik PF Delta wskazywał aż 23.
  2. Sumując kolumnę Mem Usage i VM Size otrzymujemy wartość równą 237 156 KB - czyli definicja podana na początku zgadzałaby się.
  3. System nie wykazuje przypadłości związanych z używaniem swapa.

Wnioski faza 2:
  1. Zgodnie z przypuszczeniami zajętość pamięci rośnie i to dość szybko.
  2. W większości przypadków aplikacje nie używane zajmują nieco mniej pamięci.
  3. Sumując Mem Usage i VM Size otrzymujemy wartość równą 339 444 KB - podobnie jak we wnioskach z fazy nr 1 - definicja podana na początku pasuje do naszych obserwacji.
  4. Zaczyna się odczuwać używanie swapa.

Wnioski faza 3:
  1. Podobnie jak wyżej zajętość pamięci rośnie, a przynajmniej wskaźnik pokazywany w pasku statusu menadżera zadań.
  2. Wskaźnik Mem Usage wzrósł bardzo nieznacznie, można powiedzieć, że w granicach błędu.
  3. Wskaźnik VM Size urósł już więcej.
  4. Programy: MS Word, explorer, IE, Menadżer zadań, Total CMD oraz WP Kontakt nie zmieniły swojego zapotrzebowania na pamięć w stopniu wartym odnotowania.
  5. Macromedia Firewoks była aplikacją, która była odpowiedzialna za wzrost zajętości pamięci. Wzrost odnotowałem zarówno w kolumnie Mem Usage jak i VM Size.
  6. Corel Draw schudnął jednak tylko w kolumnie Mem Usage.
  7. Użycie swapa już mocno czuć.

Wnioski faza 4:
  1. Mamy dalszą ciągłość wzrostu zajętości pamięci wykazywanej w pasku statusu.
  2. Po raz kolejny wskaźnik Menory usage urósł bardzo nieznacznie.
  3. Za to przyrost jest widoczny w kolumnie VM Size.
  4. Programy: MS Word, explorer, IE, Menadżer zadań, Total CMD oraz WP Kontakt nie zmieniły swojego zapotrzebowania na pamięć w stopniu wartym odnotowania.
  5. Tym razem Fireworks urósł zarówno w Mem Usage jak i VM Size.
  6. Corel Draw schudnął w Mem Usage a za to urósł w VM Size.
  7. Będziemy już chyba pomijali ten punkt w dalszych wnioskach :)

Wnioski faza 5:
  1. Mamy dalszą ciągłość wzrostu zajętości pamięci wykazywanej w pasku statusu.
  2. Po raz pierwszy wskaźnik Mem Usage spadł, nieznacząco, ale spadł.
  3. Zgodnie z oczekiwaniami VM Size urósł.
  4. Do grona aplikacji "nieruszonych" możemy teraz zaliczyć jedynie: MS Word, Explorer, Corel Draw.
  5. Za to aplikacje Total CMD, Internet Explorer oraz WP Kontakt zmieniły dość drastycznie swoje zapotrzebowanie na pamięć. Kolumna Mem Usage w ich wypadku można powiedzieć została podzielona na pół, co ciekawe VM Size w przypadku tych programów pozostało na tym samym poziomie.
  6. Fireworks tradycyjnie już puchnie tu i tu.

Wnioski faza 6:
  1. Mamy dalszą ciągłość wzrostu zajętości pamięci wykazywanej w pasku statusu.
  2. Po raz kolejny wskaźnik Menory usage urósł bardzo nieznacznie, choć i tak jest niżej niż w fazie nr 4.
  3. Zgodnie z oczekiwaniami VM Size urósł.
  4. Wnioski podsumować można jednym stwierdzeniem: Jedynie co puchnie to Fireworks, reszta pozostała bez zmian.

Wnioski faza 7:
  1. Mamy dalszą ciągłość wzrostu zajętości pamięci wykazywanej w pasku statusu.
  2. Po raz kolejny obserwujemy spadek wskazań Mem Usage, tym razem różnice widać gołym okiem.
  3. Zgodnie z oczekiwaniami VM Size urósł.
  4. Do grona aplikacji "nieruszonych" możemy teraz zaliczyć jedynie: Explorer, Corel Draw.
  5. Za to aplikacje Total CMD, Internet Explorer oraz WP Kontakt zmieniły swoje zapotrzebowanie na pamięć. Kolumna Mem Usage w ich wypadku spadła dość znacznie, choć różnice nie są tak spektakularne jak w przypadku fazy 5, co ciekawe VM Size w przypadku tych programów pozostało na tym samym poziomie.
  6. Fireworks tradycyjnie już puchnie, ale tym razem tylko w VM Size.

Wnioski faza 8:
  1. Mamy dalszą ciągłość wzrostu zajętości pamięci wykazywanej w pasku statusu.
  2. Po raz kolejny obserwujemy spadek wskazań Mem Usage, tym razem różnice są już ogromne.
  3. Zgodnie z oczekiwaniami VM Size urósł.
  4. Zajętość w kolumnie Mem Usage drastycznie spadła dla większości aplikacji, bardzo łądnie to widać gdy te dwa screeny (nr 7 i nr8) otworzymy w przeglądarce grafik i zrobimy sobie mini Slide Show - myślę, że komentarz jest zbędny.
  5. Fireworks tradycyjnie już puchnie, ale tym razem tylko w VM Size.

Wnioski faza 9:
  1. Menadżer zadań wykazał dość znaczny spadek zajętości pamięci.
  2. Po raz kolejny obserwujemy spadek wskazań Mem Usage, po raz kolejny różnice są ogromne.
  3. Podobnie się ma sprawa w przypadku VM Size.
  4. Niektóre programy nieco spuchły w kolumnie Mem Usage, niektóre po raz kolejny schudły.

Wnioski faza 10:
  1. Menadżer zadań zasadniczo nie wykazał zmian w zajętości pamięci.
  2. Obserwujemy wzrost zajętości w kolumnie Mem Usage - powód dość oczywisty, przywróciliśmy wszystkie aplikacje do pulpitu.
  3. VM Size wzrosło bardzo nieznacznie, a spowodowane jest włączeniem Excela..
  4. Niektóre programy spuchły w kolumnie Mem Usage.

Wnioski faza 11:
  1. Oczekiwany wzrost zajętości pamięci.
  2. Obserwujemy wzrost zajętości w kolumnie Mem Usage jak i VM Size.
  3. Zarówno Corel jak i Fireworks mają bardzo duży udział w zajętośći pamięci w obydwu kolumnach.
  4. Aplikacje nieużywane jak i wcześniej w podobnych przypadkach zaczynają chudnąć w kolumnie Mem Usage.

Wnioski faza 12:
  1. Oczekiwany spadek zajętości pamięci.
  2. Obserwujemy spadek zajętości w kolumnie Mem Usage jak i VM Size.
  3. Zgodnie z oczekiwaniami Fireworks spuchł, a Corel zwolnił miejsce w obydwu kolumnach.
  4. Aplikacje nieużywane jak i wcześniej w podobnych przypadkach zaczynają chudnąć w kolumnie Mem Usage.
  5. Zamknięcie Corela nie spowodowało użycia przestrzeni przez niego zajmowanej przez inne aplikacje.

Wnioski faza 13:
  1. Wzrost zajętości pamięci i to znaczny.
  2. Wzrost sumy kolumny Mem Usage jak i VM Size.
  3. Przyrost kolumn spowodowany jest głównie przeglądarką Internet Explorer.
  4. Aplikacja Rundll32.exe, która odpala większość apletów zajmuje podobne wartości w Mem Usage jak i VM Size.
  5. Niestety VM Size puchnie pomimo, tego iż włączyliśmy aplikacje, które nie zmieniły swojej zawartości od jej uruchomienia.


Wnioski ogólne


Wykres 1:
Kliknij aby powiększyć


Powyższe obserwacje dla większości z was zapewne nie były zbyt przejrzyste, nie można też było w prosty sposób zaobserwować, co się tak naprawdę dzieje. Dlatego też postaram się to w jak najbardziej jasny sposób przedstawić teraz.

Załączony wykres jest podsumowaniem wszystkich 13 faz moich testów.
Przyjrzyjmy się dokładniej relacji użycia pamięci (Memory Usage) oraz wirtualnej pamięci (VM Size). Jak widać na załączonym wykresie dopiero w fazie 4 VM Size jest większy niż Memory Usage i tak też pozostanie do samego końca. Wniosek z tego jest jeden: nie można tych dwóch wartości bezpośrednio ze sobą wiązać. Wielkość pierwszej nie ma praktycznie żadnego związku z wielkością drugiej.

Kolejną rzeczą, jaką obserwujemy to Memory Usage nigdy nie przekroczyła bariery 200 MB, jest to dość dziwne zachowanie gdyż komputer oferował 256 MB, co się dzieje z pozostałymi 60 MB?

Zajętość pamięci była zawsze większa niż wielkość VM Size. Pozostawmy na razie tą kwestię otwartą, później myślę, że uda się ją rozwiązać.

Przypomnijmy sobie dokładnie etapy naszego testu.
  • Od etapu pierwszego aż do ósmego zapychaliśmy pamięć, poprzez robienie kolejnych zrzutów ekranu.
  • W kroku 9 wyłączyliśmy dwa programy graficzne (najbardziej zajmujące pamięć) oraz komunikator internetowy (WP Kontakt).
  • W kroku 10 zamknąłem ogromny dokument Worda, choć inny, w którym pisałem pozostał, otwarłem Excela, przywróciłem wszystkie aplikacje z tła.
  • Faza 11 polegała na otwarciu po raz kolejny Corela i załadowaniu do niego kilku dużych map bitowych. Był już włączony Fireworks, który zapisał już zrzut ekranu z poprzedniej fazy.
  • W 12-tce zamknęliśmy Corela.
  • Krok 13 był inny niż wszystkie: wyłączone zostały programy graficzne, ale za to włączyłem wszystkie aplety panelu sterowania, dużą ilość aplikacji z Menu Start, które nie służyły edycji danych, tylko ich wykonywaniu, generalnie chodziło o załadowanie do pamięci dużej ilości danych, które się nie zmieniły od czasu ich załadowania. Otwarłem również bardzo duże pliki html w przeglądarce Internet Explorer.
Przyglądnijmy się ponownie wykresowi. Zaobserwować można dość ciekawe zachowanie systemu. VM Size generalnie zachowuje się zgodnie z naszymi oczekiwaniami, czyli od 1-8 rośnie, w 9 spada, w 10 zapewne z powodu Excela nieco urósł, nie zaskoczył nas też i w kolejnych krokach. Natomiast Memory Usage zachowuje się dość nietypowo, a przynajmniej inaczej niż VM Size. Do kroku nr 4 rośnie, później pomimo zapychania pamięci maleje aż do kroku nr 9 (gdzie akurat było to oczekiwane), później jego zachowanie było już, że tak to nazwę, normalne. Szczególnie jest to widoczne między krokiem 7 a 8, później w wykresach poszczególnych aplikacji będzie widać dokładnie takie samo zachowanie. Zajętość pamięci można powiedzieć, jest odzwierciedleniem VM Size z "pewnym dodatkiem", łatwo zauważyć, że jej zachowanie jest bliźniaczo podobne, trzeba tylko wziąć pewną poprawkę na wynik wielkość VM Size.

Jakie są, więc wnioski z tego? Czym w rzeczywistości są prezentowane w programie wartości? Memory Usage jest raczej pewnym, że jest to ilość danych ile "siedzi" w fizycznej pamięci operacyjnej. VM Size z definicji (o czym pisałem na początku tej części artykułu) jest ilością pamięci jaką sobie dany program alokuje, choć nie znaczy to, że to miejsce musi być zajęte. Jeśli więc przyjmiemy to za prawdę, to w takim razie, czym w rzeczywistości jest wartość podawana w pasku statusu Menadżera zadań? Gdyż widać dość wyraźnie, że wielkość tego ostatniego ma się nijak do Memory Usage.

Szukając rozwiązania tego problemu, próbowałem szukać innych definicji VM Size, czy wysuwać kolejne, inne tezy. Jednym z pomysłów (a i kilka osób mnie to zaproponowało) było stwierdzenie, że VM Size jest w rzeczywistości odbiciem pamięci RAM w pliku pagefile.sys wraz z danymi, które nie znajdują się w fizycznej pamięci, a które system zestronicował. Jednak pomysł ten dość szybko upadł, proszę popatrzeć na punkty od nr 1 do 4. Rozwinięciem tego było, stwierdzenie, że tak różnica może wynikać z wielkości jądra systemu, które nie jest stronicowane w całości. Tak się jednak składa, że jądro w systemie Windows 2000 zajmuje w całości od 30 do 40 MB a niestronicowane jest nie więcej niż 10 MB, a różnica w punkcie nr 2 wynosi aż 30 MB, nie jest to realne.

Zastanówmy się jeszcze czy zarządzanie pamięcią zarówno tą wirtualną jak i fizyczną jest właściwe. Generalnie trzeba przyznać, że system zachowuje się dość przewidywalnie i faktycznie wyrzuca z pamięci to, co nie jest aktualnie wykorzystywane, ale z pewnym opóźnieniem. I tak też powinno być. Dziwnym jednak zachowaniem jest wykorzystywanie jedynie 200 MB pojemności pamięci. Czemu nie skorzystał z jej pozostałej ilości?

Przejdźmy do wykresów poszczególnych aplikacji.

MS Word
Wykres MS Word:
Kliknij aby powiększyć


Jak widać w początkowej fazie aplikacja zajmuje tyle samo Memory Usage co i VM Size, dopiero w fazie 6 jej zajętość w Memory Usage zaczyna drastycznie spadać, aż do kroku nr 8. W kroku nr 9 aplikacja została przywrócona z paska zadań i dlatego też użycie pamięci wzrosło. Widać tutaj bardzo dobrze zarządzanie pamięcią systemu operacyjnego, ile czasu zajęło mu "stwierdzenie", że ta aplikacja nie jest przez nas używana.

explorer.exe
Wykres explorer.exe:
Kliknij aby powiększyć


Powłoka systemowa zachowuje się dość niestandardowo. VM Size praktycznie cały czas na tym samym poziomie 3 MB, dopiero na końcu, kiedy odpalałem kilkadziesiąt apletów wtedy urosła. Natomiast Memory Usage pewne wahania ma, ale generalnie stały poziom utrzymuje.

Menadżer zadań
Wykres Menadżer zadań:
Kliknij aby powiększyć


Podobnie zachowuje się Menadżer zadań (Task Manager), który ciągle utrzymuje stałą wielkość VM Size, a jedynie ze względu na ciągłą pracę notujemy wzrost Memory Usage. Tutaj obserwujemy też dowód na to, że VM Size nie można bezpośrednio wiązać z Memory Usage, jak widać VM Size jest mniejsza niż Memory Usage.

Internet Explorer
Wykres Internet Explorer:
Kliknij aby powiększyć


Trochę odmiennie zachowuje się natomiast Internet Explorer. VM Size ma generalnie na tym samym poziomie, Memory Usage praktycznie cały czas spadało.

Macromedia Fireworks
Wykres Macromedia Fireworks:
Kliknij aby powiększyć


Kolejnym obserwowanym przez nas programem jest Macromedia Fireworks, to w nim tworzyliśmy zrzuty ekranu. Program zachowuje się dość typowo, jeśli chodzi o kolumnę VM Size, jednak Memory Usage już jest mniej normalne. Program w kroku 7 zaczął już zmniejszać swoje zapotrzebowanie na pamięć fizyczną i takim sposobem dotarł do kroku nr 9. Faza 10'a wynika bezpośrednio z poczynionych w niej działaniach, nic niezwykłego.

Corel Draw 9
Wykres Corel Draw 9:
Kliknij aby powiększyć


Corela Draw nie zaskakuje nas niczym, zachowuje się dokładnie tak samo jak Macromedia Fireworks.

WP Kontakt
Wykres WP Kontakt:
Kliknij aby powiększyć


WP Kontakt zachowuje się również dość specyficznie. Już w 5 kroku system zaczął usuwać go z pamięci, by w kroku 8 zejść do 2 MB. VM Size na stałym poziomie 8 MB.

Konkludując stwierdzenie: "Tak, więc ten licznik zawiera to, co jest w pamięci RAM. Nie można rozdzielać Memory Usage i VM Size." uważam za obalone :)

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.


Pioter - 23 lipca 2004, 20:54

AMEN :)


EDDY - 24 lipca 2004, 10:03

Wow! Przeczytał!
=p


BaKarolo - 27 kwietnia 2005, 22:32

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer

Klucz "AlwaysUnloadDLL" o wartości DWORD ustawić na 1

Jeśli nie ma klucza to utworzyć.

Usuwa niepotrzebne dll z pamięci, które normalnie nie są usuwane i zaśmiecają pamięć.


hmmm - 05 września 2005, 20:06

dawno nie czytałem równie długiego i nieprzemyślanego tekstu


Ryszard - 23 stycznia 2006, 17:04


"Jakie są, więc wnioski z tego? Czym w rzeczywistości są prezentowane w programie wartości? Memory Usage jest raczej pewnym, że jest to ilość danych ile "siedzi" w fizycznej pamięci operacyjnej. VM Size z definicji (o czym pisałem na początku tej części artykułu) jest ilością pamięci jaką sobie dany program alokuje, choć nie znaczy to, że to miejsce musi być zajęte.

Witam.
Według mnie Memory Usage i VM Size po dodaniu daje nam ilość pamięci jaką sobie system i programy alokują w pamięci RAM, można to łatwo sprawdzić Menadżer zadań zakładka Wydajność i sekcja Pamięć Fizyczna, od całej ilości RAMu odejmujemy dostępną ilość RAMu i właśnie wychodzi nam suma Memory Usage +VM Size.
Z tego co ja się orientuje, pamięc virtualna i plik strony to dwie różne rzeczy.

pozdrawiam.



Autor:  










Copyright © 2002-2024 | Prywatność | Load: 1.73 | SQL: 4 | Uptime: 328 days, 5:24 h:m | Wszelkie uwagi prosimy zgłaszać pod adresem eddy@heh.pl