Ich war in einer Klasse, die von Ted Ts'o unterrichtet wurde, und die Art und Weise, wie er es mir erklärte, als ich dieselbe Frage stellte, war wie folgt ...
Standardmäßig reserviert der Kernel den größten Teil des Speichers zum Zwischenspeichern von Dateisystem-Metadaten. Aus diesem Grund zeigt Ihre "gebrauchte" Spalte 905 MB an. Das ist der gesamte Speicher, der "verwendet" wird, dh von Programmen und vom Cache. Die tatsächliche Menge an freiem Speicher befindet sich in der Spalte "frei" neben "- / + Puffer / Cache", dh 561 MB. Das ist die Menge, die für Programme zur Verfügung steht.
Da der Kernel nun 462 MB für den Cache verwendet, sind 118 MB vollständig verfügbar. Wenn ein Programm dem Kernel sagt: "Hey, ich brauche JETZT 50 MB Speicher!", Zieht der Kernel den Speicher aus diesem "freien" Pool. Das macht den "freien" Pool auf ungefähr 68 MB, was für den Komfort zu klein ist. Nachdem dieser Speicher belegt ist, wird die Menge des im Cache gespeicherten Materials verringert und der "freie" Pool wird wieder hochgefahren.
Aber was passiert, wenn ein Programm ein Schwein ist und sagt "Ich brauche sofort 120 MB Speicher!". Sie haben nicht so viel "freien" Speicher, so dass der Kernel ihn nicht einmal vorübergehend an das Programm weitergeben kann, sodass der Kernel in swap gräbt, gerade lange genug, um genügend freien Speicher zuzuweisen, um dem Programm das zu geben, was es benötigt. Dann werden genügend Cache-Daten freigegeben, damit der "freie" Speicher wieder auf ein komfortables Niveau zurückkehren kann.
Durch den Abrechnungsprozess werden die Daten im Swap nicht sofort aus dem Swap freigegeben, obwohl es sich um zwischengespeicherte Daten handelt. Der Swap-Speicher wird nur verwendet, wenn etwas die Metadaten (oder die zwischengespeicherten Informationen) anfordert, die in diesem kleinen Swap-Segment gespeichert sind. Es schadet also nicht, es zu verlassen.
Wenn es Sie stört, können Sie "Swapoff" und dann "Swapon" ausführen, um es loszuwerden, aber es tut nichts weh.