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

[Debian]:Re: X-Server getötet



"Thomas O. Kruse" <tkruse@sforce.org> writes:

> Das Problem habe ich auch. Es handlet sich dabei m.E. um einen FEHLER in der
> ach-so-effizienten Speicherverwaltung von Linux.

Das ist kein Fehler sondern eine grundsätzliche Entscheidung in Sachen
Speichermanagement.
Außer einer KI aus Berlin (nennen wir sie einmal Jost B. ;-) stören
sich allerdings nicht allzuviele Leute daran.
Wenn Du näheres wissen willst, auch Für und Wider dann such einmal
über Deja.com nach "Overcommitment" in den deutschen Linuxgruppen.
Das sollte Dich mit Treffern von Diskussionen der letzten fünf Jahre
überschütten, die sich letztendlich aber immer im Kreis drehen.
Das wurde schon bis zum Erbrechen durchgenudelt.
-> Unterm Strich ist Overcommitment für die meisten Nutzer durchaus
sinnvoll.

> Daher ein malloc (irreviel) liefert nicht, wie ich es erwarten würde, und es
> auch jedes andere richtige Betriebssyste tut (Atari TOS, AIX, eNTe) ein -1
> oder 0 zurück, sondern einen gültigen Pointer.

Das ist bei den anderen OS meist schlicht eine Frage der
Konfiguration. Allerdings ist dort meist defaultmäßig Overcommitment
abgeschaltet und die Admins schalten es dann ein, wenn sie merken, daß
sie in der Praxis gar nicht schnell genug physikalischen Speicher
nachrüsten können, wie er sonst (meist sinnlos) verblasen wird.
Ansonsten bekommt man nämlich auch ziemlich massiv ausgelegte Hardware
mit relativ wenigen Programmen ganz schnell in die Knie, wenn man Pech
hat.
Dann hat man die blöde Situation, daß man dort Programme gar nicht
erst starten kann, bzw aussteigen, während sie unter Linux auf einem
Bruchteil des vorhandenen Speichers klaglos durchlaufen.

> Ich würde es gerne abschalten, war aber zu faul, in den Sourcen zu wühlen.
> Evtl. gibt es sogar einen /proc/sys/kernel/mem-sonstwas Schalter dafür...


/proc/sys/vm/overcommit_memory

Aus /usr/share/doc/kernel-doc-2.2.14/Documentation/proc.txt.gz:
[...]
overcommit_memory
   This file contains one value. The following algorithm is used to
   decide if there's enough memory: if the value of overcommit_memory
   is positive, then there's always enough memory. This is a useful
   feature, since programs often malloc() huge amounts of memory 'just
   in case', while they only use a small part of it. Leaving this
   value at 0 will lead to the failure of such a huge malloc(), when
   in fact the system has enough memory for the program to run.

   On the other hand, enabling this feature can cause you to run out
   of memory and thrash the system to death, so large and/or important
   servers will want to set this value to 0.
[...]

Ob das mittlerweile funktioniert, weiß ich nicht. Eine Zeitlang blieb
es jedenfalls ohne jede Auswirkung.
Wenn Du nicht mindestens ein paar hundert Megabyte Speicher Reserve
drin hast, willst Du es auch nicht unbedingt abschalten und
stattdessen in Kauf nehmen, daß vielleicht alle paar Jahre einmal eine
ungünstige Situation auftritt, in der es Nachteile hat. Selbst dann
muß es noch kein Beinbruch sein, weil der Kernel bei Speichernot rein
zufällig Prozesse abknallt. Mit Pech erwischt er init  - mit Glück den
Verursacher oder irgendwas triviales.

cu,

marcus

-- 
            It is easier to fix Unix than to live with NT.
eMail: bofh@bogomips.de
------------------------------------------------
Um sich aus der Liste auszutragen schicken Sie
bitte eine E-Mail an majordomo@jfl.de die im Body
"unsubscribe debian-user-de <deine emailadresse>"
enthaelt.
Bei Problemen bitte eine Mail an: Jan.Otto@jfl.de
------------------------------------------------
Anzahl der eingetragenen Mitglieder:     758


Reply to: