Benutzer-Werkzeuge

Webseiten-Werkzeuge


linux_arbeitsspeicher

RAM-Nutzung

  • Linux benutzt freien RAM standardmäßig um
    • Daten die schon mal gelesen wurden zu cachen
      • das vermeidet das sie später noch mal von der langsameren Festplatte gelesen werden falls noch mal darauf zugegriffen wird
      • Block-Cache (Blöcke enthalten die eigentlichen Daten auf Dateisystemen)
    • Inodes und Verzeichnisinhalte zu cachen
      • das Beschleunigt das Durchsuchen und Auflisten von Verzeichnisinhalten
      • Inodes sind in der Regel verstreut auf der Festplatte, was das Auffinden der benötigten Informationen verlangsamt
      • Inode-Cache
    • Daten die auf Festplatte geschrieben werden müssen werden Zwischengespeichert
      • Anwendungen müssen nicht so lange warten bis die Daten wirklich geschrieben sind
      • Das Schreiben auf die Festplatte kann optimiert werden
        • aus vielen einzelnen verteilten Zugriffen kann ein mehr oder weniger sequentielles Schreiben werden → das reduziert das Suchen/Bewegungen des Schreiblesekopfes und dadurch kann das Schreiben schneller abgeschlossen werden
      • Write-Cache

Je nach Tool wird der Speicher den die Caches belegen mit in den belegten Speicher einberechnet (es sieht dann so aus als wäre gar kein/sehr wenig Speicher frei) oder als frei angezeigt (es sieht dann so aus als würde geswappt obwohl massenhaft RAM frei ist). Für ersteres ist top ein Beispiel, zweiteres wird vor allem bei Tools auf den Desktops so angezeigt.

Einstellungen

Swappiness

Grundsätzlich sind die Caches (siehe oben) gegenüber „normalen“ Speicherseiten (also solchen die durch Programme belegt werden nachrangig). Ist also nicht genügend freier RAM da werden die Caches reduziert. Je nach Einsatzszenario kann das zu drastischem Performance-Verlust führen, es ist also notwendig einen Mittelweg zu nehmen.

Die Einstellung definiert die Aggressivität mit der unbenutzte Speicherseiten in den Swap ausgelagert werden.
Der Sinn ist Speicher für die Caches frei zu schaufeln.
Je nach gewünschtem Verhalten (auf Desktoprechnern wird man eher vermeiden wollen das gerade nicht genutzte Seiten ausgelagert werden, auf Servern ist eventuell der Cache wichtiger) kann man Einstellen was bevorzugt werden soll, der Cache oder das Vermeiden von Auslagern von Seiten.

Auf folgenden Wegen kann die swapiness gesetzt werden:

Weg Auswirkung
sysctl vm.swappiness = <Wert>Sofort, bis Neustart von System
echo <Wert> > /proc/sys/vm/swappinessSofort, bis Neustart von System
Eintrag in /etc/sysctl.conf vm.swappiness=<Wert>Nach Neustart des Systems, Persistent



Werte:
Größere Werte bedeuten das bevorzugt wird das geswappt wird, statt den Cache zu reduzieren.
Mir ist nicht ganz klar ob beliebige Werte funktionieren/ob es gleitend ist.

Wert Bedeutung
60Standard-Einstellung
1Versuche so weit wie möglich Swapping zu vermeiden
100Versuche die Reduzierung von Cache so weit wie möglich zu vermeiden aka. swappe wenn möglich
0Scheint Kernel-Abhängig verschieden zu sein, kann u.a. dazu führen, dass der Swap gar nicht mehr genutzt wird.
Sollte vermieden werden (da die Bedeutung eventuell verschieden ist

Tools und Informationen

Wo Was
free
@mir-6 ~ $ free -m
             Gesamt     Belegt       Frei  Gemeinsam     Puffer      Cache
Speicher:      15930      15312        618       3678          0       6876
-/+ Puffer/Cache:       8435       7495
Auslagerungsspeicher:       9999       1455       8544

Zeigt in der zweiten Zeile „-/+ Puffer/Cache:“ in der ersten Spalte „Belegt“ an wie viel Arbeitsspeicher „wirklich“ belegt ist (wenn man den Cache abzieht/nur den durch Programme belegten Speicher betrachtet) und in der Spalte „Frei“ wie viel RAM „wirklich“ frei ist (wenn man den durch Cache belegten Speicher als Frei betrachtet).
In der obigen Ausgabe wären 8435 MB RAM belegt und 7495 MB RAM frei, wenn man den durch Cache benutzten RAM als frei betrachtet. Daraus ergibt sich (Belegt aus der ersten Zeile - Belegt aus der zweiten Zeile) dass 6636 MB durch Cache belegt sind.

Hinweis: Der in der Spalte angezeigte Freie RAM nach Abzug des Caches ist unpräzise, da Teile des Caches nicht freigegeben werden können.

topTop zeigt bei den RAM-Werten „used“ und „free“ immer inklusive Cache an → „Free“ ist der Speicher der tatsächlich weder durch Cache, noch durch Programme belegt ist.

Der Wert „cached Mem“ besagt allerdings wie viel MB derzeit eigentlich für Cache benutzt werden.

Hinweis: Man kann nicht einfach Cache zu Free hinzuaddieren und meinen das sei der echte zur Verfügung stehende Arbeitsspeicher, da Teile des Caches nicht freigegeben werden können.
/proc/meminfo
Wert Bedeutung
MemTotalKompletter installierter Arbeitsspeicher
MemFreeFreier Speicher → durch nichts belegt
MemAvailableWichtigste Wert Der RAM der in etwa verfügbar ist um Programmdaten zu speichern (der muss nicht frei sein, nur frei gegeben werden können). Dieser Wert ist nicht identisch mit MemFree+Cached, sondern in der Regel kleiner.
Nicht alles was im Cache ist kann frei gegeben werden, zum Beispiel sind tmpfs, ramfs, Teile des Kernels (nicht der Code, aber die Daten) im Cache-Wert mit einbegriffen.
Es handelt sich also um MemFree+Teile von Cache die freigegeben werden können
linux_arbeitsspeicher.txt · Zuletzt geändert: 2017/12/21 00:14 von root