Hallo Reinhard,
Am Samstag, dem 24. Februar 2001 um 14:07:22, schrieb Reinhard Foerster:
Das mag sein. Mir scheint auch, dass hier viele ziemlich aneinander vorbei reden und 10 verschiedene Dinge total vermischen.
Ich fand Deine Beitraege diesmal relativ gut! Aber nicht gut genug... ;-)
Mal eine realistisches Beispiel - ein WWW-Server mit Dutzenden Serverprozessen. Dein tolles kommerzielles Unix verbietet das forken beliebiger neuer Prozesse, wenn sie nur den Anschein erwecken, dass sie zuviel Speicher verbrauchen koennten. Zwar ist vielleicht noch genug Speicher da, weil 95% aller Prozesse den embedded perl-Interpreter gar nicht anfassen, aber sicher ist sicher, sie starten eben nicht. Das Problem mit dem Stackueberlauf koennen sie natuerlich auch nicht loesen. Da das Betriebssystem den vorhandenen Speicher aber nur sehr halbherzig nutzt, ist ein Stack-OOM sehr unwahrscheinlich, wie du richtig bemerkt hast, dafuer kommt es immer wieder zum fork-OOM.
Linux dagegen startet solange es geht und schiesst dann die Prozesse ab, die tatsaechlich an die Speichergrenze kommen, dies kann dann mit hoeherer Wahrscheinlichkeit auch bei Stackueberlaeufen passieren. Es ist doch gar nicht einzusehen, weswegen es schlimmer ist, dass ein Serverprozess bei Ueberlast mal vom Kernel gekillt wird (Stack- bzw. malloc-OOM), als wenn das Betriebssystem ohne echte Ueberlast keine neuen Prozesse erzeugt (fork-OOM). Linux nutzt die Hardware einfach viel intensiver. Nun kannst Du mal raten, warum man Linux gerade bei WWW-Servern so gerne einsetzt und dem kommerziellen Kram laengst den Rang abgelaufen hat...
rf11@max:~/tmp> ./a.out 300 Allokiere 300 MB: ok Allokiere zusaetzlich noch 300 MB: ok gebe ggf. alles wieder frei Allokiere 600 MB in einem Stueck: failed gebe ggf. alles wieder frei rf11@max:~/tmp>
# echo 1 > /proc/sys/vm/overcommit_memory
erlaubt auch das allozieren der 600 MB, aber ich denke, das weisst Du noch.
Torsten: Waehrend so ein gundlegendes Probleme in einem Stable-Kernel von vielen Entwicklern voellig ignoriert wird (bzw. zum Feature erklaert wird), streitet man sich auf der Kernelliste darueber, wie man noch 3% mehr Performance durch eine andere Strategie der Speicherverwaltung herausholt. Das ist mir als Nur-Nutzer sehr unverstaendlich.
Mir ist es ganz und gar nicht unverstaendlich und stimme mit den Kernelentwicklern offensichtlich ueberein.
Reinhard (bitte nur ernstgemeinte Zuschriften :-)
Darum bitte ich auch. Insbesondere die irrsinnige Behauptung, Linux wuerde beliebige Prozesse killen, sollte doch endlich mal aufhoeren. Ich moechte gern mal Real-World-Statistiken zum Thema 'Instabilitaet von Linux im Vergleich zu anderen Betriebssystemen bei gleicher Performance' sehen. Alle Einzelerfahrungen sind leider statistisch irrelevant und besagen gar nichts.
Torsten