Re: Po co windows uzywa tyle swap'a?

Autor: Radosław Sokół <rsokol_at_magsoft.com.pl>
Data: Sun 11 Sep 2005 - 11:55:05 MET DST
Message-ID: <2005091109550600@grush.one.pl>
Content-Type: text/plain; charset=ISO-8859-2; format=flowed

Mariusz Kruk wrote:
>> A skąd system ma wiedzieć, czy tej pamięci używasz intensywnie,
>> czy też raz coś zapisałeś i teraz tylko trzymasz to jako
>> bufor na później.
>
> Ze statystyki użycia stron?

Ale co rozumiesz przez to? *Żaden* system operacyjny nie
zbiera informacji o tym, jak często program odwołuje się
do konkretnych stron pamięci, bo jest to w sposób sensowny
wydajnościowo po prostu NIEREALIZOWALNE.

Badane jest tylko przywracanie stron pamięci ze swapa do
pamięci fizycznej, bo to się da zmierzyć, ale wymaga to
oczywiście wcześniejszego wyswapowania stron "w ciemno"
przy założeniu, że jednak nie są używane.

Systemy operacyjne różnią się tylko strategią wyswapowy-
wania. Linux na przykład ma regulowalny poziom wyswapowy-
wania, w jednym skrajnym położeniu zajmuje całą pamięć
fizyczną i dopiero zaczyna swapować (co znacząco spowalnia
operacje dyskowe, bo nie ma miejsca na cache), a w drugim
zachowuje się jak Windows, czyli ogranicza aplikacje do
pewnego zestawu roboczego i nie pozwala im zajmować o
wiele więcej pamięci fizycznej. Windows nie ma regulacji
i automatycznie ogranicza zestawy robocze aplikacji
drugoplanowych o ile jest zapotrzebowanie na pamięć
ze strony aplikacji pierwszoplanowej.

> Czad. Czyli nie dość, żę muszę się martwić o alokację pamięci, to
> jeszcze muszę się martwić o to, żeby system wiedział czy rzeczywiście
> wiedziałem co robię alokując ją.

Oczywiście. Chyba sobie nie zdajesz sprawy ile aplikacji
alokuje pamięć, raz coś do niej zapisuje po czym przez wiele
godzin jej nie używa. Windows stara się trzymać w pamięci
tylko te strony, które są regularnie używane, resztę jak
najszybciej wywalając do swapa by było miejsce na duży
cache dysku przyspieszający operacje dyskowe (o ile apli-
kacje nie mają spieprzonej obsługi dysku i nie spowalniają
tych operacji).

> IMHO durny model i tyle. Zamiast kierować się rzeczywistym użyciem
> pamięci, jak rozumiem, zarządca pamięci w Windows kieruje się "planem"

Rzeczywiste użycie pamięci jest często bezsensowne.

> Co rozumiesz przez "koszmarny"? Programista ma wyręczać system
> operacyjny?

Nie. Ma go wspomagać w osiągnięciu optymalnej wydajności.
Zbyt często jednak programiści działają *przeciwko* systemowi.

>> Nie. Minimalny rozmiar zestawu roboczego. Też do ustawienia
>> przez aplikację dowolnie.
>
> "Możesz podkręcić jasność wypowiedzi?"

Poczytaj o zestawie roboczym, to powyższa wypowiedź
stanie się jasna.

>> Poczytaj sobie o pojęciu
>> zestawu roboczego oraz o regułach, według których Windows NT
>> wymusza trzymanie się zajętości pamięci zgodnie z zestawem
>> roboczym.
>
> Można prosić o jakiś dobry link?

Na SysInternals jest cała seria artykułów dotyczących dzia-
łania systemu obsługi pamięci wirtualnej w Windows NT.

-- 
|""""""""""""""""""""""""""""""""""""""""""""""""""""""""""|
| Radosław Sokół  |  http://www.grush.one.pl/              |
|                 |  ftp://ftp.grush.one.pl/               |
\................... Microsoft MVP ......................../
Received on Sun Sep 11 12:00:22 2005

To archiwum zostało wygenerowane przez hypermail 2.1.8 : Sun 11 Sep 2005 - 12:42:02 MET DST