Olewanie swapu
wrobell
wrobell w ite.pl
Czw, 30 Maj 2002, 01:59:05 CEST
On Thu, May 30, 2002 at 12:38:11AM +0200, Michal Kochanowicz wrote:
> On Thu, May 30, 2002 at 12:30:15AM +0200, wrobell wrote:
> > Normalna sprawa, że tak powiem.
> > Załóżmy, że w momencie kiedy php chce przedzielić pamięć, masz
> > 3MB wolnej pamięci. Załóżmy, też, że php chce przydzielić tej
> > pamięci 4MB. Oczywiście nie może. Kernel musi wywalić na swapa deko...
> Pamięć (fizyczna) nie musi być dostępna w momencie wywołania malloc().
> Możesz zrobić:
> char *c = (char *)malloc(1024*1024*512);
> i to zadziała momentalnie, nic się nie będzie swapować niezależnie ile
> masz RAMu. Swapować się zacznie jak zrobisz:
> while(1)
> *c++ = 0;
> > ale w tym momencie już jest zapóźno. Właśnie dlatego można ustawić
> Wcale nie. Jest 256MB RAM. 60 wolnych, Uruchamiam powyższy program. I
> wcale się nie wywala na braku RAM. W miarę potrzeb kernel wyswapowuje
> coś na dysk. Jak nie wierzysz to uruchom coś takiego:
Masz oczywiście rację, ale tak się składa, że ja też. Jednakże sytuacja,
o której mowa w tym wątku, to przypadek kiedy pamięci fizycznej zostało
_mało_. Alokacja pewnego obszaru pamięci jest czasami praktycznie
równoczesna z jej użyciem (w pewnym uproszczeniu oczywiście), a niestety
kernel jeszcze nie zdążył wyswapować...
Proponuję odpowiednie zmniejszenie/zwiększenie wartości z freepages,
zapełnienie odpowiednio pamięci i wtedy rozpoczęcie eksperymentu.
[...]
wrobell <wrobell w ite.pl>
Więcej informacji o liście dyskusyjnej pld-users-pl