Sie haben möglicherweise Systemverzögerungen, starke Swap-Nutzung oder geringe Speicherprobleme in Ihrem Linux-System festgestellt. Ein gewöhnlicher Rat ist, den Swappiness-Wert zu verringern, die Swap-Nutzung zu reduzieren. aber was ist Swappiness? Und ist es wirklich gut, es zu optimieren?

Hinweis : Auf die Swap-Partition wird nicht näher eingegangen. Sie können alles darüber in unserem Artikel lesen, was Sie über die Swap-Partition unter Linux wissen müssen.

Swappiness

Es gibt einen Wert namens Swappiness in UNIX-ähnlichen Systemen, der bestimmt, wie Seiten im Speicher gehandhabt werden. Der Standardwert für die meisten Systeme ist "60", aber er kann auf Werte zwischen 0 und 100 gesetzt werden. Wenn der Speicher knapp wird, wird der Kernel einige Datei-Caches entfernen, um mehr freien RAM für Prozesse zu haben Seiten von RAM auf Festplatte.

Ein Standardwert von 60 bedeutet, dass Swapping weniger verwendet wird, und E / A-Caches werden eher für die Neuzuweisung von RAM freigegeben. Das Ausspeichern von Caches wird als "billiger" (weniger ressourcenintensiv) angesehen, während das Auslagern von Seiten das Lesen und Schreiben von Festplatten einschließt und sie "teurer" macht. Bei einem Wert von 60 ist die Auslagerungsnutzung etwas niedriger als die Wiederverwendung des Caches. Wenn der Swappiness-Wert auf 100 erhöht wird, wird die Swapping- und File-Cache-Räumung mit gleichem Gewicht verwendet. Dies bedeutet mehr Swapping und schnellere I / O als Standard. Niedrigere Werte wie "10" bedeuten, dass Swapping viel weniger verwendet wird, und I / O-Caches können viel früher zugunsten von Prozessen geräumt werden. Dies könnte die Interaktivität erhöhen, aber auch die E / A-Geschwindigkeit beeinträchtigen.

Abnehmende Swappiness

Häufig wird der Ratschlag in Websites und Foren angezeigt, Swappiness auf etwa "10" zu reduzieren. Dies soll die Dinge beschleunigen, indem weniger Swap verwendet wird und mehr Prozesse im physischen RAM verbleiben. Diese Logik könnte etwas zu einfach sein und könnte nicht eine "one size fits all solution" sein.

In den folgenden Szenarios kann der Swappiness-Wert sinken:

  • Für Datenbanksysteme oder wenn Sie viele datenbankintensive Anwendungen verwenden : Datenbanken verarbeiten das Dateicachen im Allgemeinen besser als das Betriebssystem. Wenn Sie Swappiness reduzieren, begrenzen Sie das Datei-Caching des Betriebssystems und geben damit der Datenbank die Möglichkeit, ihre eigenen Caches zu verarbeiten.
  • Für Interaktivität : Wenn Sie viel mit mehreren Aufgaben gleichzeitig arbeiten, aber nur wenige Dateien verwalten oder keine großen Dokumente öffnen, könnte dies die Systemschonung verbessern. Weniger Prozesse werden auf die Festplatte geschrieben und da der RAM-Zugriff viel schneller ist, kann sich Ihr Computer schneller fühlen. Sie müssen auch bedenken, dass dies die E / A-Leistung reduzieren kann. Wenn Sie langsame Festplatten haben oder I / O-intensiv sind, könnte dies sogar die Leistung beeinträchtigen.
  • Für Placebo : Viele glauben, dass eine geringere Swappiness das System beschleunigen wird. Ernsthaft, wenn Sie meinen, dass Ihr System schneller ist, könnte es auch schneller wahrgenommen werden.

Beachten Sie, dass das Verringern der Swappiness zu Abstürzen und Prozessen führen kann, die vom System zufällig gelöscht werden, um Speicher freizugeben. Eine Verringerung des Swappiness ist am besten, wenn Sie genügend RAM zur Verfügung haben, um Ihr System reibungslos zu betreiben. Aber Sie sollten den Wert über "10" halten, da einige Swap-Verwendung gut ist.

Zunehmende Swappiness

Zunehmende Swappiness kann den allgemeinen Vorteil der Beschleunigung von I / O haben. Obwohl nicht oft empfohlen, könnte eine zunehmende Swappiness nützlich sein, wenn:

  • Sie führen einige I / O-intensive Vorgänge aus, und Sie haben langsame, alte HDDs . Zum Beispiel: Die Durchführung von Backups oder Batch-Editing-Images kann I / O-intensiv sein (Eine bemerkenswerte Ausnahme sind Datenbanken, die natürlich I / O-intensiv sind, aber von einem niedrigeren Swappiness-Wert profitieren könnten, wie oben gezeigt).
  • Sie haben wenig Speicher, haben aber relativ schnelle Festplatten. In diesem unwahrscheinlichen Szenario könnte ein höherer Swappiness-Wert zu einer effizienteren Speicherverwaltung beitragen (eine zu hohe Einstellung kann jedoch die Leistung beeinträchtigen).

Wie man Swappiness verwaltet

Zuerst sollten Sie überlegen, ob Sie diesen Wert überhaupt berühren müssen. Treten Leistungsprobleme auf? Und noch wichtiger: Haben Sie schon andere Systemeinstellungen probiert? Wenn nicht, ist es wahrscheinlich am besten, woanders zuerst nachzusehen. Wenn Sie jedoch ein bestimmtes Szenario im Auge haben, möchten Sie vielleicht fortfahren.

Als nächstes, wie schwer ist Ihre Swap-Nutzung? Sie können es mit einem beliebigen Leistungsüberwachungstool Ihrer Wahl oder mit dem Befehl free herausfinden. free -m gibt Ihnen eine Momentaufnahme der Speicherbelegung in Megabyte. Für eine kontinuierliche Überwachung möchten Sie möglicherweise die Überwachung verwenden watch.

 watch -n 1 frei -m 

Dadurch wird jede Sekunde der Befehl free -m ausgeführt und die Ausgabe wird gedruckt, bis Sie "Strg + C" drücken.

Wie Sie oben sehen, wird nur sehr wenig Austausch von dem System verwendet, auf dem dieser Artikel geschrieben ist.

Jetzt, wenn Sie Swapping erleben, könnten Sie interessiert sein, wie viel davon aktiv ist. Der Befehl vmstat gibt Ihnen alles, was Sie über die Nutzung des virtuellen Speichers Ihres Systems wissen müssen (Swap und physischer RAM).

 vmstat 1 

Sie müssen die swap Spalte überprüfen, wobei si für "Swap-In" steht, so "Swap-Out" bedeutet. Wenn die Anzahl hoch ist, bedeutet dies viel Swapping-Aktivität, was auf geringe Speicherprobleme hinweist. Wenn Sie die Verwendung von Swap durch free aber wenig aktives Swapping sehen, könnte es sein, dass Swappiness optimiert wird.

Es ist auch eine gute Idee, andere Leistungsbenchmarks wie Festplatten-I / O, Lastdurchschnittswerte usw. festzulegen. Wenn Sie also Ihre neuen Swappiness-Werte testen, haben Sie etwas Vergleichbares.

Um einen anderen Swappiness-Wert zu testen, können Sie ihn vorübergehend mit dem Befehl sysctl festlegen. Dies erfordert keinen Neustart und der Effekt ist sofort wirksam. In der Tat wird der Neustart den Standardwert wiederherstellen, so dass Sie ziemlich sicher zu experimentieren sind:

 sudo sysctl vm.swappiness = 10 

Natürlich können Sie einen beliebigen Wert anstelle von "10" (zwischen "0" und "100") eingeben.

Sobald Sie Ihren bevorzugten Wert gefunden haben, können Sie die Systemkonfiguration dauerhaft ändern, indem Sie "/etc/sysctl.conf" bearbeiten.

 sudo nano /etc/sysctl.conf 

und die Zeilen hinzufügen

 #Set Swappiness-Wert vm.swappiness = 10 

Bis zum Ende dieser Datei, natürlich mit dem Wert, den Sie noch einmal festgelegt haben.

Fazit

Es wird oft empfohlen, Swappiness auf "10" zu reduzieren, aber die tatsächliche Verwendung der Technik könnte ein bisschen komplizierter sein. Indem Sie Benchmarks festlegen, Ihr System kennen, wissen, wie Sie es verwenden und was Sie davon benötigen, können Sie die Swap-Nutzung optimieren und eine gewisse Leistung (entweder Interaktivität oder I / O) erreichen.