Re: Memory leak?

From: Jesper Louis Andersen (none@jlouis--mongers.org.lh.bsd-dk.dk)
Date: Tue 11 Nov 2003 - 23:48:44 CET


From: "Jesper Louis Andersen" <none@jlouis--mongers.org.lh.bsd-dk.dk>
Date: Tue, 11 Nov 2003 23:48:44 +0100
To: bsd-dk@bsd-dk.dk
Subject: Re: Memory leak?

Quoting Morten Winther (mw@mwi.dk):

> Nogen der kan forklare hvad dette betyder på godt dansk?

Hukommelsen indeles i pages (sider) af en eller anden stoerrelse
afhaengig af hvilken arkitektur man nu engang sidder paa. Paa i386
er sidestoerrelsen 4096 byte. Saa det man interesserer sig for er
hvordan disse sider fordeler sig. Ud over den fysiske hukommelse har
vi ogsa et swapareal paa disken, hvor vi kan putte sider ud hvis de
ikke benyttes.

> Active: number of pages active

Hvis en side har vaeret i brug inden for et vist stykke tid, saa
siger vi at pagen er aktiv.

> Inact: number of pages inactive

Hvis en page ikke har vaeret roert i et stykke tid er den inaktiv
og derfor en god kandidat for noget vi kan swappe ud hvis det skulle
blive noedvendigt. Der er en algoritme til at finde muligvis inaktive
pages men den varierer med stor sandsynlighed fra BSD til BSD.

> Wired: number of pages wired down, including cached file data pages

Wired pages er pages der er bundet saa de ikke kan swappes ud. Det er
typisk vaesentlige dele af kernen og en lille del af procestabellen.

> Cache: number of pages used for VM-level disk caching
> Buf: number of pages used for BIO-level disk caching

Caches. Enten til VM'en eller til disksystemet (for at speede dette op).

> Free: number of pages free

Antallet af pages vi ikke har allokeret endnu.

> Total: total available swap usage
> Free: total free swap usage

Swap statistikken.

Et rigtigt godt bud paa hvorfor du kan se at der er mere memory i brug
end processerne giver udtryk for er at systemet kun vil rydde pages
konservativt, hvis der kommer pres paa den frie hukommelse. Det er jo
noget hurtigere at detektere at man allerede har den page i hukommelsen
og saa benytte den i stedet for at hente den ind fra disk hver gang
den skal bruges. Loeber man toer for hukommelse kan den nemt ryddes
af vejen og indgaa i den nye proces.

Visse systemet (BSD inkluderet mener jeg) kan endda finde paa at
swappe praeventivt hvis de tror at der pludselig kommer pres paa
hukommelsen. De swapper simpelthen dele ud, uden at slette pages fra
hukommelsen, saaledes at hvis der kommer pres paa hukommelsen, saa
har man allerede lavet det dyre swapping-arbejde og saa kan man
bare genbruge disse pages.

Det ovenstaaende er lidt frit efter min egen hukommelse og er derfor
nok behaeftet med nogle fejl. Der er visse personer paa listen med
vaesentligt mere erfaring med det her end jeg, saa de kan nok
rette mig der hvor jeg tager fejl eller ikke er praecis nok.

-- 
j. 



This archive was generated by hypermail 2b30 : Wed 15 Nov 2006 - 18:24:33 CET