On Thu, May 20, 2010 9:12 pm, Lentes, Bernd wrote:
auf einem alten SuSE 8.0 (kernel 2.4.18, ich weiß, ist alt) habe ich folgende Fehlermeldung: May 19 20:50:45 kernel: __alloc_pages: 0-order allocation failed (gfp=0x1d2/0) May 19 20:50:49 kernel: __alloc_pages: 0-order allocation failed (gfp=0x1d2/0) May 19 20:52:59 kernel: __alloc_pages: 0-order allocation failed (gfp=0x1d2/0) May 19 20:52:59 kernel: VM: killing process sshd
Durch google fand ich heraus, daß da wohl eine Anwendung speichermäßig aus dem Ruder läuft, und so der kernel in größter Not wahllos Anwendungen abschießt. Wie kann sowas sein ? Wieso sagt das OS nicht zu der Anwendung: Nee, Du kriegst jetzt keinen Speicher mehr ! Ich weiß, daß man das mit ulimit oder in /etc/security/limits.conf einschränken kann, aber sollte ein kernel nicht out-of-the-box, ohne weitere Konfiguration, zu einer wildgewordenen Anwendung "Du hast jetzt genug !" sagen ?
Woher soll denn der Kernel wissen, welcher Prozess jetzt wildgeworden ist und z.B. ein Memory Leak hat und nicht berechtigterweise mehr Speicher allokiert haben möchte? Dem Kernel bleibt nichts anderes übrig, als "wahrscheinliche" Kandidaten zu beenden. Dafür berechnet der Kernel eine badness() pro Prozess und der Prozess mit der höchsten Punktzahl "gewinnt" und dann schlägt halt der OOM-Killer zu. siehe auch http://linux-mm.org/OOM_Killer Grüße, Christian -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org