Ihre 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.
free -m
,top -b 1