Ich dachte, die ganze Essenz von Swap besteht darin, als temporäres Sicherheitsnetz zu fungieren, wenn der Arbeitsspeicher voll ist, aber meine Swap-Partition wird ständig verwendet, obwohl ich manchmal bis zu 3 GB freien Arbeitsspeicher habe. Ist das normal?
kernel
swap
memory-usage
Mysterio
quelle
quelle
free -m
,top -b 1
Antworten:
Sie können versuchen, Ihren "swappiness" -Wert zu ändern:
Aus den Ubuntu Swap FAQ :
Sie können auch Folgendes überprüfen: https://askubuntu.com/a/103916/54187
quelle
sudo sysctl --load=/etc/sysctl.conf
nach der Bearbeitung die Datei aus, um die Änderungen zu übernehmenIhre Frage hat einige unterschiedliche Aspekte.
Erstens, was ist Ihre Definition von "frei". Es ist eigentlich nicht so einfach, wie es in Linux (oder einem modernen Betriebssystem) klingt.
Wie Linux RAM benutzt (sehr vereinfacht)
Jede Anwendung kann einen Teil Ihres Speichers verwenden. Linux verwendet den gesamten ansonsten nicht belegten Speicher (mit Ausnahme der letzten MB) als "Cache". Dies schließt den Seiten-Cache, Inode-Caches usw. ein. Sowohl das Schreiben auf die Festplatte als auch das Lesen von der Festplatte kann durch den Cache immens beschleunigt werden.
Im Idealfall haben Sie genug Speicher für alle Ihre Anwendungen, und Sie haben noch einige hundert MB für den Cache übrig. In dieser Situation ist kein Auslagerungsvorgang erforderlich, solange Ihre Anwendungen nicht zu einer höheren Speichernutzung führen und das System nicht darum bemüht ist, genügend Speicherplatz für den Cache zu erhalten.
Sobald Anwendungen mehr RAM beanspruchen, wird lediglich ein Teil des vom Cache belegten Speicherplatzes belegt und der Cache verkleinert. Das Aufheben der Cache-Zuweisung ist billig und so einfach, dass es einfach in Echtzeit erfolgt - alles, was sich im Cache befindet, ist entweder nur eine zweite Kopie von etwas, das sich bereits auf der Festplatte befindet, und kann daher sofort freigegeben werden, oder es ist etwas, das wir tun würden musste ohnehin innerhalb der nächsten sekunden auf festplatte spülen .
Dies ist keine Linux-spezifische Situation - alle modernen Betriebssysteme arbeiten auf diese Weise. Die verschiedenen Betriebssysteme melden den freien Arbeitsspeicher möglicherweise nur unterschiedlich: Einige enthalten den Cache als Teil dessen, was sie als "frei" betrachten, andere möglicherweise nicht.
Wenn Sie über freien Arbeitsspeicher sprechen, ist es viel sinnvoller, den Cache einzuschließen, da er praktisch kostenlos ist - er ist verfügbar, wenn eine Anwendung dies anfordert. Unter Linux
free
meldet der Befehl dies in beide Richtungen - die erste Zeile enthält den Cache in der verwendeten RAM-Spalte und die zweite Zeile enthält den Cache (und die Puffer) in der freien Spalte.Wie Linux Swap benutzt (noch einfacher)
Wenn Sie genug Speicher verbraucht haben, um einen reibungslosen Cache zu gewährleisten, wird Linux möglicherweise einen Teil des nicht verwendeten Anwendungsspeichers aus dem RAM neu zuweisen, um ihn auszutauschen.
Es tut dies nicht nach einem bestimmten Cut-Off. Es ist nicht so, dass Sie einen bestimmten Prozentsatz der Zuweisung erreichen, wenn Linux mit dem Tauschen beginnt. Es hat einen ziemlich "Fuzzy" -Algorithmus. Es werden viele Dinge berücksichtigt, die am besten mit "wie viel Druck für die Speicherzuweisung besteht" beschrieben werden können. Wenn viel "Druck" besteht, neuen Speicher zuzuweisen, erhöht dies die Wahrscheinlichkeit, dass einige ausgetauscht werden, um mehr Platz zu schaffen. Wenn es weniger "Druck" gibt, werden diese Chancen verringert.
Ihr System verfügt über eine "Swappiness" -Einstellung, mit der Sie die Berechnung dieses "Drucks" optimieren können. Es wird normalerweise nicht empfohlen, dies überhaupt zu ändern, und ich würde nicht empfehlen, dass Sie es ändern. Das Austauschen ist insgesamt eine sehr gute Sache - obwohl es einige Randfälle gibt, in denen es die Leistung beeinträchtigt, ist es bei Betrachtung der Gesamtsystemleistung ein Nettovorteil für eine breite Palette von Aufgaben. Wenn Sie die Austauschbarkeit verringern, lässt sich der Cache-Speicher etwas stärker verkleinern, als dies sonst der Fall wäre, auch wenn dies möglicherweise wirklich nützlich ist. Es liegt an Ihnen, ob dies ein Kompromiss für das Problem ist, das Sie mit dem Tauschen haben. Sie sollten nur wissen, was Sie tun, das ist alles.
Es gibt eine bekannte Situation, in der Swap die wahrgenommene Leistung eines Desktopsystems wirklich beeinträchtigt. So können Anwendungen schnell wieder auf Benutzereingaben reagieren, nachdem sie längere Zeit nicht verwendet wurden und Hintergrundprozesse wie z über Nacht sichern) ausführen. Dies ist eine sehr sichtbare Trägheit, die jedoch nicht ausreicht, um das Ausschalten von Swap zu rechtfertigen, und die in jedem Betriebssystem nur sehr schwer zu verhindern ist. Schalten Sie Swap aus und diese anfängliche Trägheit nach dem Backup / Virus-Scan tritt möglicherweise nicht auf, aber das System läuft möglicherweise den ganzen Tag über etwas langsamer. Dies ist auch keine auf Linux beschränkte Situation.
Bei der Auswahl, was auf die Festplatte ausgelagert werden soll, versucht das System, Speicher auszuwählen, der nicht tatsächlich verwendet wird - in den gelesen oder aus dem geschrieben wird. Es hat einen ziemlich einfachen Algorithmus für die Berechnung, der die meiste Zeit gut wählt.
Wenn Sie ein System mit sehr viel RAM haben (zum Zeitpunkt des Schreibens sind 8 GB eine große Menge für eine typische Linux-Distribution), werden Sie sehr selten in eine Situation geraten, in der Swap überhaupt benötigt wird. Sie können sogar versuchen, Swap auszuschalten. Ich empfehle das nie, aber nur, weil Sie nie wissen, wann mehr RAM Sie vor einem Absturz einer Anwendung bewahren kann. Aber wenn Sie wissen, dass Sie es nicht brauchen werden, können Sie es tun.
Aber wie kann ein Tausch mein System beschleunigen? Tauscht nicht langsam?
Das Übertragen von Daten vom RAM zum Swap ist ein langsamer Vorgang, der jedoch nur ausgeführt wird, wenn der Kernel ziemlich sicher ist, dass der Gesamtnutzen dies überwiegt. Wenn Ihr Anwendungsspeicher beispielsweise so weit angestiegen ist, dass Sie fast keinen Cache mehr haben und Ihre E / A-Vorgänge aus diesem Grund sehr ineffizient sind, können Sie Ihr System erheblich beschleunigen, indem Sie sogar etwas Speicher freigeben nach dem anfänglichen Aufwand für den Austausch von Daten, um sie freizugeben.
Es ist auch ein letzter Ausweg, wenn Ihre Anwendungen tatsächlich mehr Speicher anfordern , als Sie tatsächlich haben. In diesem Fall ist ein Austausch erforderlich, um zu verhindern, dass nicht genügend Arbeitsspeicher zur Verfügung steht, was häufig dazu führt, dass eine Anwendung abstürzt oder gewaltsam beendet werden muss.
Das Auslagern ist nur dann möglich , wenn die Leistung Ihres Systems schlecht ist, da es zu Zeiten kommt, in denen nicht genügend RAM zur Verfügung steht, was das System verlangsamt (oder instabil macht), auch wenn Sie kein Auslagerungsverfahren hatten. Um die Sache zu vereinfachen, kommt es zu einem Austausch, weil Ihr System nicht mehr so schnell läuft, wie es ist.
Wann werden die Daten nach dem Austausch wieder ausgegeben?
Das Übertragen von Daten aus dem Swap ist (zumindest für herkömmliche Festplatten) genauso zeitaufwendig wie das Einspielen. Verständlicherweise wird Ihr Kernel ebenso wenig bereit sein, Daten aus dem Swap zu entfernen, insbesondere wenn sie nicht tatsächlich verwendet werden (dh aus dem Swap gelesen oder in diesen geschrieben werden). Wenn Sie Daten in Swap haben und diese nicht verwendet werden, ist es eigentlich eine gute Sache, dass sie in Swap bleiben, da mehr Speicher für andere Dinge übrig bleibt, die verwendet werden, was möglicherweise Ihr System beschleunigt.
quelle
free -m
.Das Einstellen des Swappiness-Werts funktioniert nicht in jeder Situation. Wenn es bei Ihnen funktioniert, großartig. Wenn nicht, habe ich ein Skript geschrieben, um den Swap regelmäßig zu löschen, indem ich ihn aus- und wieder einschalte.
Das Umschalten von Swap ist ein bisschen riskant, wenn Sie nicht aufpassen. Wenn Sie nicht über genügend freien Arbeitsspeicher verfügen, um alles im Arbeitsspeicher und alles im Auslagerungsmodus zu speichern, reagiert Ihr System nicht mehr, wenn Sie versuchen, den Auslagerungsmodus zu deaktivieren. Mein Skript überprüft zuerst, ob genügend freier Arbeitsspeicher vorhanden ist (was ein wenig Zeit in Anspruch nimmt, da die tatsächliche Menge an freiem Arbeitsspeicher von der Menge abweicht, die als frei gemeldet wird
free
), und schaltet dann nur den Swap-Modus um, wenn dies der Fall ist. Wenn Sie jedoch etwas weniger RAM haben, starten Sie keinen weiteren wichtigen Prozess, während das Skript ausgeführt wird. Hier ist es:Sie müssen dieses Skript als root ausführen (z
sudo
. B. mit ). Dieses Skript lässt Ihr System nicht mehr reagieren. Wenn der Arbeitsspeicher nicht ausreicht, kann der Swap nicht umgeschaltet werden. Ich benutze dieses Skript seit fast fünf Jahren ohne Probleme.quelle
In der Regel bleibt Swap auf heutigen Systemen ungenutzt. Nach meiner Erfahrung werden die Prozesse, die lange Zeit ohne intensive Operationen ablaufen, vom Linux auf Swap verlagert.
Dadurch werden einige betroffene Programme langsam ausgeführt.
Wenn Sie viel RAM frei haben, können Sie den Swap durch Ausführen des Befehls ausschalten:
swapoff -av
(Sie benötigensudo
Rechte dafür.)Wenn Sie den Swap nicht mögen, können Sie ihn mit dem symmetrischen Befehl einschalten:
swapon -av
( erneutsudo
erforderlich).quelle
Sobald Swap für ein Programm verwendet wurde, bleibt es in der Regel für die Laufzeit des Programms zugeordnet. Viele Programme haben Code (und Daten), der selten verwendet wird. Sobald der Speicher ausgelagert ist, ist es unwahrscheinlich, dass er ausgelagert wird.
Eine Möglichkeit, diese Seiten in den Speicher zu zwingen, besteht darin, das Auslagerungsgerät auszuschalten. Wenn Sie zwei haben, können Sie einen ausschalten, den wieder einschalten und dann den zweiten ausschalten. Wenn der Austausch wirklich benötigt wird, wird er zwischen den Geräten verschoben. Sie können das Auslagerungsgerät (oder die Datei) einfach ausschalten, aber wenn Sie wirklich Auslagerungsspeicher benötigen, können drastische Dinge passieren.
Neben den normalen Dingen im Speicher verwendet tempfs Swap Space und wird wie der Rest des Speichers ausgelagert. Wenn Sie etwas ausführen, für das viel temporärer Datenträger erforderlich ist, werden möglicherweise Seiten ausgetauscht. Einmal erstellte temporäre Dateien können nach ein paar Minuten nicht mehr verwendet werden und sind gute Kandidaten, um auf das Auslagerungsgerät verschoben zu werden.
Zur Not können Sie eine Datei als Swap-Gerät verwenden. Dies ist nützlich, wenn Sie vorübergehend zusätzlichen Auslagerungsspeicher benötigen.
quelle
Ich habe das Skript von Scott Severance so bearbeitet , dass es mit den neueren Versionen von free übereinstimmt, die bereits ein gesamtes verfügbares Speicherfeld enthalten.
quelle