On Mon, Feb 26, 2001 at 09:02:42PM +0100, Torsten Werner wrote: Hi,
Mal eine realistisches Beispiel - ein WWW-Server mit Dutzenden Serverprozessen. Dein tolles kommerzielles Unix verbietet das forken
Na super, es gleitet schon im ersten Satz in die Polemik ab. Die freien BSDs sind genausowenig betroffen wie die kommerziellen Unoxe. Ich glaube wir sollten das lieber mal bei einem Bier besprechen. Wenn ich dein Posting lese, scheint es mir so, dass für dich "Speicher verbrauchen" etwas teures ist. In gewissen Grenzen ist dem aber nicht so. Auch dein WWWserver-Beispiel ist IMO ein völlig unsinniges Argument (zumindest für deine Meinung) Zu einigen Dingen schreibe ich hier trotzdem schonmal was.
Linux dagegen startet solange es geht
eher noch länger :-)
und schiesst dann die Prozesse ab, die tatsaechlich an die Speichergrenze kommen, dies kann dann mit
Genau. Erst gebe ich (linux) dem Prozess 2 MB und wenn dieser dann so fies ist, von den 2 MByte 40 Byte auch zu nutzen, muss der Prozess damit rechnen, abgeschossen zu werden, weil gerade keine Seite mehr frei ist. Der Prozess könnte aber auch Glück haben und die 40 Byte bekommen. Leider muss dafür ein anderer Prozess dran glauben. So läuft es ab.
hoeherer Wahrscheinlichkeit auch bei Stackueberlaeufen passieren. Es ist
Im Stackfall könnte es immer den Prozess treffen, dessen Stack überläuft. Damit muss man leben wie wir festgestellt hatten.
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).
Um ersteres zu verhindern, muss es keinesfalls zu fork-OOMs kommen. Das ist kein entweder oder. (auch wenn ich den ersten Fall natürlich schlimmer finde)
Linux nutzt die Hardware einfach viel intensiver.
und Windows riecht besser. Polemik!
Nun kannst Du mal raten, warum man Linux gerade bei WWW-Servern so gerne einsetzt und dem kommerziellen Kram laengst den Rang abgelaufen hat...
Super Argument! (Ebenso sinnloses Analogon: Windows auf dem Desktop ist so wahnsinnig verbreitet, weil es technisch so genial ist) Mir gehts mehr um die Technik als ums Marketing.
Darum bitte ich auch. Insbesondere die irrsinnige Behauptung, Linux wuerde beliebige Prozesse killen, sollte doch endlich mal aufhoeren.
Diese Behauptung ist leider wahr. Lies einfach den Code. Lies vor allem erstmal den Code, wie der Speicher rausgegeben wird.
Völlig klar und unstrittig sind doch drei Dinge: 1. der Kern gibt mehr Speicher raus als da ist (siehe mein programm von kürzlich) 2. der Kern muss im Fall von OoM Prozesse killen 3. der Kern kann nicht feststellen, wer der böse ist (weil es keine bösen Prozesse gibt. Punkt!!!)
einfache Logik sagt nun:
aus 1. folgt: "es muss öfters mal zur Anwendung von 2. kommen"
daraus in Verbindung mit 3. folgt: "der Kern muss einen Prozess killen, weiss aber nicht welchen"
Diese Aussage ist identisch mit "Linux killt beliebige Prozesse". Genau das betreitest du aber. Warum?
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.
Beim Thema Instabilitaet durch wenig überzeugende Speicherverwaltung wird linux klar den kürzeren ziehen. Hast du schonmal in Kreisen ausserhalb von Linux gehört, dass sich jemand über absichtlich vom Kern abgeschossene Prozesse auf seinem Server ärgert? Nein, denn das im wesentlichen ein Linux-Feature.
nochwas: Nach deiner Theorie sollte Linux bei einer 2GB-Festplatte auch ermöglichen, daß du 5 Partitionen á 1GB darauf anlegst. Falls der belegte Platz der 5 Partitionen in der Summe die 2 GB überschreitet, löscht der Kern eine der Partitionen (natürlich die böse).
(falls du das mir der Festplatte nicht so machen würdest: Erkläre bitte den Grund für den Unterschied in der Behandlung der begrenzten Ressourcen Plattenplatz und Speicher durch das Betriebssystem.)
Reinhard