[linux] Re: pmap

Cecil Westerhof CecilWesterhof op xs4all.nl
Do Jun 29 20:19:13 CEST 2006


Op do, 29-06-2006 te 19:01 +0200, schreef Roeland Th. Jansen:
> On Wed, Jun 28, 2006 at 09:25:06PM +0200, Daniel C. von Asmuth wrote:
> > Wat ik gehoord heb, is dat de heap wordt beheerd door de C library,
> > die stukjes uitdeelt aan funkties die malloc() aanroepen totdat de 
> > applicatie ze retourneert door free() aan te roepen. Als er veel malloc()
> > wordt aangeroepen dan raakt de heap natuurlijk op, maar de library doet
> > dan een sbrk() system call om het besturingssysteem om meer memory te 
> > vragen. De heap zal echter gefragmenteerd raken door onvoorspelbare free() 
> > aanroepen, zodat de heap nooit krimpt. Utilities als 'ps' geven ruwweg
> > aan hoeveel geheugen aan een proces is toegewezen.  Uiteraard kan een 
> > moderne kernel een stuk geheugen aan meerdere programma's tegelijk
> > toewijzen (bijv. voor shared libraries).
> 
> tenzij het de laatste jaren veranderd is, werkt het idd zo. in de pe1chl
> sourcecode van ka9q's NOS zie je dat ook terugkomen. Daar had je ook het
> probleem dat sommige compilers niet meer dan 64k heap konden maken.
> altijd leuk voor een vroege of late dood van het network OS.
> 
> De vraag blijft trouwens nog steeds -- waarom maakt de klant zich druk
> om deze getallen. komen er allocation problemen ? memory op ? swapt het
> systeem zich dood ? (komt ook vaak door de idioot grote swapspaces die
> sommigen nog steeds maken)
> 
> Kortom, is het wel allemaal zo ernstig cecil.. ?

Zo goed als zeker niet. Waarschijnlijk is er geen memory leak. Als dat
er wel was, dan zou er wel een probleem zijn. Het programma draait 24/7
op een server en dan is 7 MB per dag toch iets te veel. (In principe is
dan natuurlijk iedere memory leak niet acceptabel.) Maar heel
waarschijnlijk (we hebben namenlijk nog steeds geen bevredigende
feedback gehad, ze blijven schermen met top/ps) is er geen memory leak.

Het gebeuren met pmap is niet ernstig, maar ik wil gewoon weten wat er
aan de hand is. Zeker het gedrag op hun systeem vind ik bizar. Er wordt
wat gealloceerd. Geheugen gebruik neemt toe. Het gealloceerde wordt
vrijgegeven. Geheugen gebruik neemt af, maar is wel groter als het was.
(Kan ik me ook nog wat bij voorstellen: vanwege efficientie worden
dingen niet in het geheel verwijderd.) Maar als er dan weer dezelfde
hoeveelheid geheugen wordt gealloceerd, veranderd het geheugen gebruik
niet. Dat komt vreemd op mij over. Vandaar dat ik graag wil weten wat er
gebeurd. ;-} Gewoon bevrediging van mijn nieuwsgierigheid.

Voor het geval het van belang is: de applicatie gebruikt geen
malloc/free, maar new/delete.

-- 
Cecil Westerhof <CecilWesterhof op xs4all.nl>



More information about the Linux mailing list