Linux: Speichermanagement tunen - Swappiness ändern
Das Linux Speichersystem ist ein hochkomplexes Gebilde dass sich aber trotzdem mit ganz simplen Problemen herumschlagen muss.
Eins davon ist: Was mach das System wenn der Arbeitsspeicher voll ist?
Dem System stehen meist zwei Lösungen zur Verfügung um Platz zu schaffen:
- Es löscht alte Cache Daten aus dem Arbeitsspeicher
- Es verschiebt wenig genutzte Teile des Arbeitsspeichers in die Swap-Partition auf der Festplatte.
Wie sich Linux entscheidet lässt sich ab Kernel Version 2.6 beeinflussen. Es gibt dazu einen Wert namens 'swappiness', dieser kann Werte zwischen 0 und 100 annehmen. Standard ist meist 60.
Was hat dieser Wert zu bedeuten?
Mit diesem Wert kann man beeinflussen für welche Lösung sich Linux entscheidet. Ein Wert in Richtung 0 wird Linux anweisen möglichst alten Cache zu löschen und die Swap-Partition nicht zu benutzten.
In die andere Richtung zur 100 hin sollte das Auslagern auf Festplatte bevorzugt werden.
Wie kann ich den Wert ändern?
Die aktuelle swappines anzeigen:
60
Neue swappiness setzten:
Achtung! damit die Einstellung auch nach Reboots bestand hat schreibt man folgendes in die /etc/sysctl.conf
Wo ist der Unterschied?
Der Unterschied liegt ganz klar in der Geschwindigkeit.
Während der Arbeitsspeicher mit einer enormen Geschwindigkeit angesprochen werden kann muss erst mechanisch auf die Festplatte zugegriffen werden. Je nach Einsatzgebiet des Rechners kann das teils fatale Folgen haben.
Beispiele:
- Linux Desktoprechner
Dieser Rechner muss meist keine Höchstleistungen vollbringen, sondern effektiv arbeiten. Dass heisst auch dass bei vielen Programmen viel Arbeitsspeicher gebraucht wird. Ob dann die langsamere Swap-Partition zum auslagern genutzt wird spielt da keine große Rolle und kann bei vielen verstreuten Programmdateien auch Vorteile haben.
- Linux Datenbankserver
Ein dedizierter Datenbankserver macht genau dass wonach sich sein Name anhört, arbeiten, arbeiten, arbeiten. Jede Datenbankabfrage sollte immer möglichst schnell beantwortet werden. Arbeitsspeicher ist kostbar und sollte nicht unnütz verschwendet werden. Wenn die Festplatten des Server, welche eh schon stark frequentiert sind, auch noch mit auslagern von Arbeitsspeicher gequält werden, kann das fatal sein. In diesem Fall spricht man von 'swappen' - und wenn ein Server damit anfängt, dann sollte man Ihm getrost mehr RAM schenken und/oder alles unnütze aus diesem löschen.
Fazit:
Der Desktoprechner sollte eher in Richtung >50 tendieren und der Server <50.
Je nach Anwendungszweck kann das aber variieren.
No related posts.
[...] [...]
[...] [...]
[...] [...]
Wunderbare Erklärung. Warum auch immer ich mir die Pfade nicht merken kann :-)
Ich kann mir die Pfade meist auch nicht merken, darum schreib ichs mir hier auch auf :)
[...] ich Google an und fand in dem Blog JuliusBeckmann.de einen nicht mehr ganz frischen Artikel “Linux: Speichermanagement tunen, Swappiness ändern“. Dort wird ein wenig erklärt, wie das Speichermanagement funktioniert und wie man da [...]
Hallo, was Du da schreibst ist falsch.
Beim den Desktop Rechner, bestehen die meisten Programme, welche wirklich Speicher entnehmen, meistens aus Webbrowser und anderen Produktivitätstools.
D.h, wenn mehr als 1/2 Speicher verwendet werden (browser caches usw), wird der Rest ausgelagert.
Das führt in der Realität zur massiven Verzogerungen beim aktiv aufgerufenen Programmen.
Dies sollte unter jedem Umstand vermieden werden.
Beim Server dagegen, SOLLTEN die nicht verwendeten VMs ausgelagert werden, da die keine Verwendung finden. D.h. es wird mehr Speicher freigestellt für Diskcache. Dies hat die Folge, das solcher Server bei aktivlaufenden VMs schnelleren Diskzugriff hat.
Also, es ist umgekehrt. Bei Desktop ist Swappiness auf 10 zu setzen. Bei Server auf 60.
Hi, je nach Anwendungsfall und gewünschtem Zielverhalten kann es auch genau anders herum sein.
Es ging mir allgemein darum kurz zu erläutern und passende Beispiele zu bringen, die dem Thema Beachtung bringen könnten.
Danke für deinen Hinweis.
[...] [...]