Hallo ML, 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 ? Bernd -- Bernd Lentes Systemadministration Institut für Entwicklungsgenetik HelmholtzZentrum münchen bernd.lentes@helmholtz-muenchen.de phone: +49 89 3187 1241 fax: +49 89 3187 3826 http://www.helmholtz-muenchen.de/idg Aufsichtsratsvorsitzende: MinDir'in Bärbel Brumme-Bothe Geschäftsführer: Prof. Dr. Günther Wess und Dr. Nikolaus Blum Registergericht: Amtsgericht München HRB 6466 Im Kampf um das Unerreichbare verliert alles Erreichte seinen Wert -- 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
Lentes, Bernd schrieb:
Hallo ML,
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 ?
Hi, nee, tut er nicht. Mußt Du selbst regeln ;-( Ich habe mir hier vorgestern durch reines "Anzeigenwollen" (display) einer 1,3MB-gif-Datei ein System bis an die Grenze zugeparkt. Obwohl es ein unprivilegierter User war, dauerte es Minuten, bis ich das Ding als root abschießen konnte, weil ich keinen Speicher und keine Rechenzeit bekam. Die Datei war ein bißchen speziell, Notenzeilen als Hintergrund und so, dennoch war ich recht erstaunt, Gimp hat das Bild im raw-Modus dann als 390MB groß geladen, hätte nicht gedacht, dass gif derartig komprimiert sein kann... cu jth -- 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
Hallo,
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 ?
schwierig zu erklären. So einfach ist das nicht. Ich versuchs mal irgendwie mit meinem Halbwissen zu erklären. Jeder Prozess in einem 32bit-System hat einen eigenen Adressraum von 4GB wovon er 2-2,5GB effektiv für Daten nutzen kann. Das ist völlig unabhängig wieviel Hauptspeicher und Prozesse du wirklich hast. Das Mapping von virtuelle Adressen auf die physischen Adressen deines RAMs nennt man Paging das wird durch die MMU erledigt. Wenn jetzt ein Prozess jede Menge Speicher anfordert (z.B. malloc) passiert in deinem physischen Speicher erstmal gar nichts, erst wenn der Prozess den Speicher dann auch mit Daten füllt (und das kann entweder viel Später oder nie passieren), muss dass auch in den physischen Speicher geschrieben werden. Hier liegt das Problem. Da durch die virtuellen Adressräume der Prozesse eine hoffnungslose "Überbuchung" des realen Arbeitsspeicher vorliegt, passieren solche Effekte. Und um genau deine Frage zu beantworten, warscheinlich hat das OS der Anwendung schon vor ewiger Zeit den Speicher gegeben. Gruss Patrick -- 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
participants (3)
-
Joerg Thuemmler
-
Lentes, Bernd
-
Patrick Klaus