Re: Optymalizacja WindowsXP pod katem 4GB RAMu

Autor: Radosław Sokół <Radoslaw.Sokol_at_polsl.pl>
Data: Tue 30 Jan 2007 - 12:57:06 MET
Message-ID: <epnbqj$i8v$1@polsl.pl>
Content-Type: text/plain; charset=ISO-8859-2; format=flowed

Tomasz Chmielewski napisał(a):
>> Po drugie, proces bez problemu może mieć w takim przypadku
>> dostęp do wielu gigabajtów pamięci. Nie dwóch, nie trzech,
>> ale nawet czterech czy więcej. Windows to zapewnia od dawna.
>
> Np. Windows XP obsluguje max. 4 GB.

Nie, w takim przypadku nawet więcej. Przypominam -- chodzi o
dostęp do przestrzeni wirtualnej :)

Wystarczy wmapować w pamięć plik odpowiednio duży. Na raz
będzie widoczne tylko okno np. 1 GiB, ale tak ogólnie biorąc
proces będzie miał dostęp do np. 12 GiB pamięci wirtualnej.
Oczywiście ile się da będzie buforowane w pamięci fizycznej.

Ba, można zamapować pamięć anonimową i mieć to samo, ale bez
pliku, a obsługiwane przez swap. Nie próbowałem, ale chyba
nawet na 32-bitowym XP można wtedy mieć dostęp do kilku
gigabajtów przestrzeni wirtualnej. Oczywiście ograniczeniem
buforowanego obszaru w obu przypadkach jest 4 GiB obsługiwanej
pamięci fizycznej oraz 2-3 GiB obsługiwanej per-proces
przestrzeni adresowej.

> I jak aplikacja ma miec dostep do wiecej niz 4 GB, to jednak jest to
> troche problematyczne, bo trzeba sie jednak bawic AWE. Podobne sztuczki
> trzeba robic pod innymi systemami.

AWE to trzecia droga, aczkolwiek mało wykorzystywana.
W pewnym sensie AWE przypomina HIGHMEM z Linuksa, jednak
ze znacznie większym narzutem czasowym.

> "Ba, to np. Linux, ze względu na przyjętą strategię obsługi
> pamięci, ma kłopoty z obsługiwaniem ponad 2 GiB RAMu w
> trybie 32-bitowym i jest to mocno, mocno, mocno odradzane".

"Ma kłopoty" == wymaga kompilacji jądra z odpowiednimi
parametrami, a to dlatego, że dostęp do pamięci większej
niż jakieś 930 MiB wymaga dodatkowego kroku pośredniego
w kodzie, wpływającego na wydajność. Ok, może nie jest
to kłopot jako taki, ale na pewno coś, o czym trzeba
pamiętać, bo jak skompilujesz bez HIGHMEMa, to masz
niecały gigabajt RAMu do dyspozycji, a jak skompilujesz
z HIGHMEMem to masz spowolnienie nawet jak masz mniej
pamięci niż ten gigabajt.

"Mocno, mocno, mocno odradzane" == bo w źródłach nt.
HIGHMEMa są cytowane wypowiedzi programistów (w tym
chyba nawet developerów jądra, ale głowy nie dam, czy-
tałem dawno) w których radzi się, by dużo pamięci
fizycznej ładować tylko do maszyn 64-bitowych, gdzie
przestrzeni wirtualnej jest wystarczająco dużo.

I nie jest tak, że nie wiem, co piszę. Używam codziennie
tak systemów NT, jak i Linuksowych. O obu czytam wiele,
w tym materiały raczej dla programistów trybu jądra.
Regularnie czytam tak tę grupę dyskusyjną o NT, jak i -
znacznie bardziej specjalistyczną - listę dyskusyjną
linux-kernel (lkml). Moim celem nie jest wykazanie wyższości
jednego rozwiązania nad drugim, lecz po prostu poważnych
różnic między architekturami NT i Linuksa.

-- 
|""""""""""""""""""""""""""""""""""""""""""""""""""""""""""|
| Radosław Sokół  |  http://www.grush.one.pl/              |
|                 |  Administrator, Politechnika Śląska    |
\................... Microsoft MVP ......................../
Received on Tue Jan 30 13:00:09 2007

To archiwum zostało wygenerowane przez hypermail 2.1.8 : Tue 30 Jan 2007 - 13:42:04 MET