Re: pagefile ale nie to

Autor: Eneuel Leszek Ciszewski <prosze_at_czytac.fontem.lucida.console>
Data: Wed 15 Feb 2006 - 22:20:27 MET
Message-ID: <dt060o$c7k$1@flis.man.torun.pl>
Content-Type: text/plain; charset="iso-8859-2"

"Irek/kajus44" dsvdv4$79d$1@nemesis.news.tpi.pl

> po przeszukaniu archiwum grupy znalazłem dużo o pliku pagefile (chociaż nie
> umiem jeszcze "poczuć" co to swap), ale wolę napisać i zapytać (bo nie
> chodzi o mój komputer)

Programista pisze program operujący na pamięci wirtualnej, czyli takiej,
której nie ma w rzeczywistości, ale która może się pojawić. Procesor
operuje na pamięci rzeczywistej, czyli takiej, która jest -- na RAMie.
(chyba, że mówimy o innych, nietypowych programach)

Zazwyczaj pamięci rzeczywistej jest znacznie mniej niż wirtualnej.

Ponieważ jednocześnie zazwyczaj mamy otwartych więcej programów,
niż potrzebujemy (więcej załadowaliśmy, niż używamy) niektóre
z tych programów zajmowałyby fizyczną pamięć niepotrzebnie.
Gdyby więc w pamięci fizycznej, rzeczywistej umieścić tylko te,
które w danym momencie są wykorzystywane -- moglibyśmy mieć
w komputerze mniej pamięci rzeczywistej, niż to wynika ze
stosownych sum ilości pamięci okupowanych przez wszystkie
programy załadowane do pamięci -- czyli przez wszystkie otwarte.

Co więcej -- czasami program żąda od systemu więcej, niż w istocie potrzebuje.

System operacyjny, wespół ze stosownym dopalaczem sprzętowym, który znajduje
się wewnątrz procesora i służy tylko temu celowi, czyli nie obciąża zasadniczego
CPU) dba o to, aby w pamięci rzeczywistej znajdowało się w danym momencie to, co
jest akurat potrzebne, czyli akurat w tym momencie obrabiane przez procesor.

 Zasadniczo procesor nie obrabia kilku programów naraz, a co najwyżej dzieli
 swój czas pomiędzy różne programy, które dość często na coś czekają -- na
 odpowiedź użytkownika, na odpowiedź dysku, na odpowiedź jakiegoś interfejsu
 itp. -- i nie mogą być obrabiane przez CPU do czasu nadejścia odpowiedzi,
 na którą czekają, czyli nie muszą okupować RAMu w trakcie tego czekania.

Reszta, czyli to, co nie jest aktualnie obrabiane, *może zostać* zrzucona do
pliku wymiany, aby stamtąd w razie potrzeby było ściągane -- być może przy
,,jednoczesnym'' zrzucaniu do pliku wymiany czegoś, co akurat nie musi
w danym momencie się w RAMie znajdować, ale co *być może* będzie później
potrzebne.

Ponieważ (wg niektórych osób) jestem pod wrażeniem
Władcy Pierścieni -- zobrazuję Ci to właśnie przez
ten pryzmat:

  Masz z jednej strony 1000 Orków, z drugiej 100 Hobbytów, czy jak im tam.
  Orki nie atakują całymi siłami, a Hobbyci są mobilni i wiedzą zawczasu,
  gdzie uderzą Orki. Gdy jakiś Ork czy OrG zaatakuje jakieś miejsce, zawczasu
  system operacyjny podeśle tam Hobbytę, który nie pozwoli Orkowi na przejście.
  W ten sposób stosunkowo niewielka, wręcz znikoma liczba Hobbytów może stawić
  skutecznie czoła stosunkowo wielkiej liczbie Orków, gdyż system wie, gdzie
  ustawić zaporę. :) W razie czego -- Ork posłusznie czeka, aż Hobbyta
  przybędzie na spotkanie. :)

Innymi słowy mówiąc -- w SWAPie powinno być to, co należy do pamięci wirtualnej,
a do RAMu w razie czego powinno być wrzucane [?tylko?] to, co będzie za chwilę
używane. W ten sposób stosunkowo mała ilość RAMu sprosta stosunkowo dużym potrzebom.
W razie czego dochodzi do szybkiego zrzucania fragmentów/stron RAMu do pliku wymiany
i wrzucanie w to miejsce (do RAMu) innych fragmentów ze SWAPu. Wspomaganie sprzętowe
sprawia, że procesor trafia tam gdzie trzeba, choć ten sam fragment programu raz
okupuje tę fizyczną część RAMu, a innym razem inną część -- inny fizycznie adres
RAMu, choć przecież kod programu w międzyczasie nie uległ zmianie.

  Czyli nie ma przyporządkowania typu: ten Ork zawsze do tego Hobbyty;
  Hobbyci są uniwersalni.

  Jeśli Orków jest mniej niż Hobbytów -- można po prostu ustawić zaporę bezmyślnie,
  gdyż i tak Orki nie przejdą, :) ale jest to marnotrastwo owych Hobbytów, czyli RAMu.

  Z innej strony: Zanim Ork zaatakuje jakieś miejsce, system musi postawić tam Hobbytę,
  być może zabierając go z miejsca, gdzie za chwilę będzie ów Hobbyta znowu potrzebny.
  Traci się więc czas na owo SWAPowanie, ale w normalnym używaniu czas ten jest bardzo
  krótki.

Z powyższego wynika, że dobrze jest mieć więcej SWAPu niż RAMu,
nawet wówczas gdy tego RAMu mamy bardzo dużo -- aby umieścić
w pliku wymiany całą kopię tego, co akurat teraz powinno być
w RAMie oraz to, co być może będzie potrzebne za chwilę.

Oczywiście system operacyjny jest tak napisany, aby ruszyć
w razie czego i bez SWAPu w ogóle, o ile znajdzie dość
miejsca w samym RAMie.

Innymi słowy -- SWAP nie jest pamięcią wirtualną, ale czymś, co pozwala
na istnienie takowej pamięci i może mieć różną wielkość -- w zależności
od indywidualnych potrzeb systemu, czyli Twoich potrzeb. :) W szczególności
może go nie być wcale, ale raczej nie jest to zalecane.

W wielu przypadkach, gdy brakuje SWAPu i RAMu -- program na własną rękę
zakłada swój SWAP -- bardzo niewydolny, bo powolny, gdyż obrabiany bez
dopalaczy, na nieprzystosowanych, zwykłych plikach.

> najpierw opis:
> windows NT4.0 SP6, multikernel (2 procesory), w tej chwili pagefile ma 317
> MB
> i na systemie w zakładce "wydajność" -> zmień mam:
> rozmiar początkowy: 317 MB
> maksymalny rozmiar: 317 MB - domyślam się że obie wartości to akurat to, ile
> w danej chwili pagefile ma
> chcę to zmienić
> mam jeszcze:
> zalecane: 267 MB
> aktualnie przydzielone: 317
>
> i pytanie - jeśli zmienię obie wartości (początkową i maksymalną) na np. 200
> albo zalecane 267, to czego mogę się spodziewać po ponownym uruchomieniu?
> boję się, że nie odpalę kompa czy też komputer wybuchnie ;-) - a jest to
> komputer firmowy

Nie wybuchnie. Pod WXP w razie potrzeby utworzy
się niezadeklarowany SWAP na dysku systemowym.

> jeszcze jedna rzecz - nie ma zainstalowanej defragmentacji dysku ani nie
> działa skandisk - czy może tak być specjalnie - czy to ze względu na dwa
> procesory czy na winNT? czytałem, że czasem defragmentacja bardziej szkodzi
> niż pomaga, tylko nie pamiętam właśnie w którym windowsie

Nie szkodzi, ale zabiera czas. :)

--
   .`'.-.         ._.                               .-.
   .'O`-'     ., ; o.'    leszekc@@alpha.net.pl    '.O_'
   `-:`-'.'.  '`\.'`.'    ~'~'~'~'~'~'~'~'~'~'~    o.`.,
  o'\:/.d`|'.;. p \ ;'. . ;,,. ; . ,.. ; ;, .;. . .;\|/....
Received on Wed Feb 15 22:25:06 2006

To archiwum zostało wygenerowane przez hypermail 2.1.8 : Wed 15 Feb 2006 - 22:42:03 MET