Die eigentliche Frage ist, warum laufen Sie ohne Swap? Vor allem, wenn Sie (ernsthafte) Leistungsprobleme im Zusammenhang mit fehlendem RAM sehen? Sie wissen, dass kein Swap Ihr System tatsächlich langsamer machen kann, oder?
Die offensichtliche Lösung besteht darin, etwas Auslagerungsspeicher hinzuzufügen und sich nicht von Ihrem System verarschen zu lassen. Wenn man bedenkt, wie billig Speicherplatz ist, kann ich mir keine Situationen vorstellen, in denen Sie niemals sollten Erstellen Sie ein System ohne Swap.
Um Ihre Frage zu beantworten, erinnere ich mich nicht an alle Details auf niedriger Ebene, warum Swap wichtig ist, selbst auf Systemen, auf denen Sie den Speicher nicht erschöpfen werden, aber es gab Argumente auf der Linux-Kernel-Mailingliste darüber, ob Es ist vernünftig, Systeme ohne Swap zu betreiben (und es gab nicht viele schlüssige Antworten). Der allgemeine Konsens ist normalerweise, immer Swap zu haben , und passen Sie die Swapiness nach Bedarf an.
Außerdem glaube ich, dass Sie einige wichtige Vorbehalte in Bezug auf den Linux OOM-Killer missverstehen. Zunächst einmal ist es eine sehr schlechte Idee (tm), sich darauf zu verlassen, um Ihre Probleme mit unzureichendem Speicher zu lösen. Es kann sehr wahllos sein, was es tötet, und es ist durchaus möglich, dass Sie mit einem instabilen oder sogar unbrauchbaren System zurückbleiben. Ja, es versucht, aktuelle Prozesse zu beenden, die viel Speicher verbrauchen (ein kleiner Schutz, um zu versuchen, einen außer Kontrolle geratenen Prozess abzufangen), aber es gibt keine Garantien. Ich habe gesehen, wie es ssh beendete, Xen-Prozesse beendete (auf einem virtuellen Xen-Host-Server, wodurch VMs abstürzten) und in einem Fall NFS beendete.
Was das IO angeht. . . Ich weiß nicht genau, was es verursachen würde. Vielleicht wurde ein Dateisystem oder ein festplattenbezogener Prozess beendet? Vielleicht hat ein Prozess eine Art "Cache-to-Disk"-Funktion eingebaut, wenn er nicht genug Speicher zuweisen kann?
Ein weiterer Hinweis:Wenn es sich um einen Desktop handelt, ist für Suspend to Disk ein Swap erforderlich. Wenn es sich um einen Server handelt, ist es nie, sich auf OOM zu verlassen eine gute Idee, da es die Stabilität aus, nun ja, überhaupt keinem guten Grund beeinträchtigt.
[1] Eingebettete Systeme sind ungefähr die einzige offensichtliche Ausnahme, und sie sind nicht besonders verbreitet (und wenn Sie es mit eingebetteten Systemen zu tun haben, werden Sie sich der Anforderungen bereits bewusst sein).
Ich denke, AndreasM hat es auf den Kopf getroffen (der Grund dafür, dass die Festplatte so dreckig wird). Aber wenn der Arbeitsspeicher zur Neige geht, aber nicht niedrig genug ist, um den Out-of-Memory-Killer auszuführen, werden diese Seiten aus dem Arbeitsspeicher entfernt. Sie landen also in einer Situation, in der Seiten geräumt werden – zunächst kein Problem, da die am längsten nicht verwendeten zuerst geräumt werden und Seiten, die Sie ohnehin nicht verwenden, rausgeschmissen werden. Aber dann schmeißt es diejenigen raus, die Sie sind verwenden, nur um sie später gleich wieder zurückblättern zu müssen. Thrash-Stadt.
Grundsätzlich, wenn etwas nur ein bisschen mehr RAM benötigt, würde wahrscheinlich der OOM-Killer eingreifen, aber Sie waren noch nicht dort. Wie einige gesagt haben, ist OOM Killer wahllos, es ist wirklich eher ein letzter Ausweg, um eine Kernel-Panic zu vermeiden, als etwas, das Sie im normalen Betrieb verwenden sollten. Wenn Sie ein benutzerdefiniertes Setup haben, würde ich erwägen, einen Daemon zu schreiben, um den freien Speicher zu überwachen, und ihn mit der Richtlinie Ihrer Wahl zu töten, wenn er voll ist.