[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Wel of geen swap? (was Re: Anonimiseren webapp)



Jan Claeys wrote:
Op zaterdag 12-09-2009 om 12:32 uur [tijdzone +0200], schreef Eric
Meijer:
Ik heb een programma dat tamelijk random door een grote dataset
heenloopt.  Als je dan 6GB ram hebt en 2GB swap, en het programma gaat
6.5GB echt /gebruiken/, dan is het wel helemaal over met de snelheid.
CPU gebruik duikelt dan van 100% naar 2% of zoiets, het wacht
voortdurend op de harde schijf.  Swap werkt alleen voor geheugen dat
langere tijd niet wordt gebruikt.

Logisch, maar dat betekent waarschijnlijk dat het programma dat je
gebruikt slecht geschreven is voor deze situatie; als je meer data nodig
hebt dan er in je RAM past (of als je kan vermoeden dat dat soms zo is),
gebruik je best 'mmap' of zo.

In dit geval is het gewoon jammer als de data niet past, dan moet ik de berekening verkleinen. Er is nu eenmaal een verschil in snelheid tussen ram en disk van verschillende ordes van grootte, mmap kan dat ook niet magisch oplossen.
Verder heb ik de ervaring gehad dat dit programma direct crashte op
het moment dat het meer geheugen probeerde te gebruiken dan ik ram
had.  Ik was enigszins verbaasd dat er geen swap werd gebruikt en
ontdekte dat sinds mijn laatste hard disk upgrade twee maanden
daarvoor er geen swap in het systeem geconfigureerd was.  Tot dan toe
geen probleem dus.

Programma's die crashen ipv een foutmelding geven als het geheugen op is
is ook een bug natuurlijk, al is het vaak moeilijk dat te voorkomen.  ;)

Standaard is (was?) het gedrag van malloc onder linux zo dat er nooit een foutmelding gegeven wordt als er niet genoeg ramgeheugen beschikbaar is, omdat het pas op het allerlaatste moment echt gealloceerd wordt. Het idee hierachter is dat veel programma's wel geheugen alloceren, maar het lang niet allemaal gebruiken. Als het dan toch misgaat stopt het programma zonder een spoor achter te laten, wat inderdaad erg lastig is (vooral als het pas gebeurt na 14 uur rekenen).

Eric

--


Reply to: