Günther Zisham wrote:
[...] könnte es sein, dass der Kernel selbst nicht weiß, wer wirklich den Speicher verbraucht und einfach jene Prozesse schießt, von denen er glaubt, dass sie den meisten Speicher verbrauchen?
Der oomkiller basiert auf eine Heuristik. Jedem Prozess wird ein Wert zugeordnet ("badness"), der auf folgenden Kriterien beruht: a) der beanspruchte virtuelle Speicher sowie der virtuelle Speicher von Child-Prozessen, b) der Task-Prioritaet, c) der gesamten Laufzeit des Prozesses, d) ob es sich bei dem Prozess um einen Superuser-Prozess handelt (das verringert natuerlich den Wert von "badness"), und e) ob es sich bei dem Prozess um eine direkte Hardware-I/O handelt. Gewisse Prozesse wie swapper oder init sind generell tabu. Der Prozess mit dem hoechsten "badness" Wert gewinnt und wird durch den oomkiller beendet. Im Prinzip bedeutet die Heuristik, dass hpts. kurz laufende Prozesse, die viel Speicher beanspruchen, gekillt werden. Die Heuristik ist sicherlich nicht perfekt, aber sie erlaubt in kurzer Zeit zu entscheiden, was passieren soll. Was sagt denn $> /sbin/sysctl -a 2>/dev/null | grep overcommit bei Dir? Fuer den oomkiller ist, wie oben angedeutet, hpts. der gesamte von einem Prozess (und dessen Child-Prozessen) beanspruchte virtuelle Speicher interessant, entsprechend solltest Du Deine Prozessliste danach sortieren. Alle halbe Stunde zu loggen halte ich fuer nicht ausreichend. Wenn ein Prozess Amok laeuft, kann das innerhalb sehr kurzer Zeit passieren. Ein Problem der Hardware-Kernel Kombination ist auch nicht auszuschliessen. Cheers, Th. -- 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