← Back to team overview

sslug-teknik team mailing list archive

Re: Not enough memory - BANG!

 

On Tue, Oct 15, 2002 at 12:39:09AM +0200, Lars Lerager Hansen wrote:
> > > Hvad er der foregået når en server er gået ned med beskeden: "Not
> > > enough memory - killing pid 6312" skrevet til konsollen? Det var
> > > intet at se i loggen.
> >
> > Du kører flere (eller: større) processer end din hukommelse (fysisk +
> > virtuel) berettiger til. Problemet løses ved at tilføje mere swap.
> 
> Jamen Linux burde da ikke fejle så grusomt? Burde systemet ikke lukke ned
> for processer der løber løbsk på den måde? Eller har de frit spil så længe
> man ikke har sat en hård grænse vha. ulimit?
Formentlig er maskinen også igang med at forsøge at slå en process
ihjel, for at få mere RAM.

Desværre er det langt fra trivielt at slå den korrekte process ihjel, af
flere grunde.

For det første kører Linux med det der kaldes for "overcommit". Dvs. man
lover mere hukommelse væk, end man egentlig har i maskinen. Grunden til
det er at hvis processen så ikke bruger den RAM den har bedt om (som de
fleste gør), så har man jo så meget mere RAM fri i maskinen. Der findes
(fandtes?) nogle patches i AC-kernerne så man kunne slå overcommit fra.

Derudover er der mange ting der skal tages højde for. F.eks. kunne man
argumentere for at det korrekte valg ville være den process der bruger
mest hukommelse... Men det går ikke hvis maskinen f.eks. kører store
beregninger som tager dage at blive færdige med... I det tilfælde vil
man helst have at den slår en af de andre processer ihjel.

Der er foregået ret meget arbejde på OOM-killeren omkring 2.4.9-10
stykker (tror jeg det var), for at få den til at opføre sig ordentligt.
Desværre syntes jeg ikke at det er faldet alt for heldigt ud. Jeg har
ofte set en maskine stå og skrive "Killing PID xxx - httpd" ud i
konsollen, med det resultat at næste gang apache kommer til, laver den
en ny process (fordi den kan se at den anden gik ned), og så vælger
OOM-killeren den nye process næste gang, og så er vi nået lige vidt ;-)

Jeg håber at ovenstående bare giver en smule mening, og måske også
forklarer hvorfor det ikke nødvendigvis er så simpelt som man lige
skulle tro :-)

-- 
/-----------------------------------------------------\
| Klaus S. Madsen      | "Failure is not an option... |
| ICQ: 45400164        |  It comes bundled with your  |
| www.hjernemadsen.org |  Microsoft products!"        |
\-----------------------------------------------------/


Follow ups

References