/proc/sys/vm
Inhaltsverzeichnis
/proc/sys/vm/buffermem
Steuert die Menge an Speicher der als Puffer-Speicher (buffer memory) genutzt wird.
- Charakteristik
- Dynamisch änderbar: Ja
- Wertebereich: 0 bis 100
- Position 1: Minimaler Pufferspeicher in Prozent des Systemspeichers
- Position 2: Größe des Pufferspeichers, die das System versucht bei zubehalten, wenn der Systemspeicher aufgrund von fehlenden freien Speichers verkleinert wird
- Position 3: Maximaler Pufferspeicher in Prozent des Systemspeichers
/proc/sys/vm/dirty_*
/proc/sys/vm/dirty_background_bytes
Menge des gesamten verfügbaren Speicher (MemFree + Cached - Mapped) in dem Schreiboperationen zwischengespeichert werden können, ehe sie von einem Flusher-Prozess des Kernels im Hintergrund auf Platte zurück geschrieben werden.
dirty_background_bytes ist das Gegenstück zu dirty_background_ratio. Nur eine von beiden Einstellungen kann aktiv sein. Das Setzen des einen Wertes setzt den anderen Wert automatisch auf 0.
- Charakteristik
- Dynamisch änderbar: Ja
- Wertebereich: ab 0
Änderungen setzen dirty_background_ratio auf 0
/proc/sys/vm/dirty_background_ratio
Prozentsatz des gesamten verfügbaren Speichers (MemFree + Cached - Mapped) in dem Schreiboperationen zwischengespeichert werden können, ehe sie von einem Flusher-Prozeß des Kernels im Hintergrund auf Platte zurück geschrieben werden.
- Charakteristik
- Dynamisch änderbar: Ja
- Wertebereich: 0 bis 100
Änderungen setzen dirty_background_bytes auf 0
/proc/sys/vm/dirty_bytes
Menge des gesamten verfügbaren Speicher (MemFree + Cached - Mapped) in dem Schreiboperationen zwischengespeichert werden kann, ehe die Prozesse gezwungen werden den Puffer in der ihnen zugeteilten Zeit auf Platte zu schreiben.
Wenn dies passiert, werden alle Prozesse mit Write-Operationen angehalten und nicht bloß der Prozess, der den Puffer füllte. Dieses Verhalten kann unfair sein, den ein Prozeß kann den gesamten IO des Systems blockieren.
dirty_bytes ist das Gegenstück zu dirty_ratio. Nur eine von beiden Einstellungen kann aktiv sein. Das Setzen des einen Wertes setzt den anderen Wert automatisch auf 0.
- Charakteristik
- Dynamisch änderbar: Ja
- Wertebereich: ab 0
Änderungen setzen dirty_ratio auf 0
/proc/sys/vm/dirty_ratio
Prozentsatz des gesamten verfügbaren Speicher (MemFree + Cached - Mapped) in dem Schreiboperationen zwischengespeichert werden kann, ehe die Prozesse gezwungen werden den Puffer in der ihnen zugeteilten Zeit auf Platte zu schreiben.
Wenn dies passiert, werden alle Prozesse mit Write-Operationen angehalten und nicht bloß der Prozess, der den Puffer füllte. Dieses Verhalten kann unfair sein, den ein Prozess kann den gesamten IO des Systems blockieren.
dirty_bytes ist das Gegenstück zu dirty_ratio. Nur eine von beiden Einstellungen kann aktiv sein. Das Setzen des einen Wertes setzt den anderen Wert automatisch auf 0.
- Charakteristik
- Dynamisch änderbar: Ja
- Wertebereich: ab 0
Änderungen setzen dirty_bytes auf 0
/proc/sys/vm/dirty_expire_centisecs
Das Alter der Daten in hundertstel Sekunden, ab dem die Daten beim nächsten Lauf des Flusher-Prozess auf die Platte geschrieben werden.
- Charakteristik
- Dynamisch änderbar: Ja
- Wertebereich: größer 0
/proc/sys/vm/dirty_writeback_centisecs
Der Flusher-Prozess weckt regelmäßig auf um alte Daten zurückzuschreiben. Mit dieser Einstellung lässt sich der Aufweckintervall in hundertstel Sekunden angeben.
Der Wert 0 deaktiviert das periodische Zurückschreiben der Daten.
- Charakteristik
- Dynamisch änderbar: Ja
- Wertebereich: ab 0
Weiterführende Informationen
- vm.dirty_ratio and vm.dirty_background_ratio
http://www.sysxperts.com/home/announce/vmdirtyratioandvmdirtybackgroundratio ([attachment:dirty_ratio_and_dirty_background_ratio.pdf als PDF])
- The Linux Page Cache and pdflush - Theory of Operation and Tuning for Write-Heavy Loads
http://www.westnet.com/~gsmith/content/linux-pdflush.htm ([attachment:The_Linux_Page_Cache_and_pdflush.pdf als PDF])
- Linux-Kernel-Dokumentation
linux/Documentation/sysctl/vm.txt
/proc/sys/vm/drop_caches
Über drop_caches wird der Kernel angewiesen nicht mehr benötigte Teile des Caches zu verwerfen und so Hauptspeicher freizugeben. Dieser Aufruf ist nicht-zerstörend d.h. als "dirty" markierte Objekte werden nicht verworfen. Mit dem Aufruf von sync können "schmutzige" Objekte vorher noch geschrieben werden.
Auf Systemen mit hoher IO-Last und Speicherauslastung können Deadlock-Situationen auftreten. Ein Aufruf auf derartigen Systemen ist nicht empfohlen.
- Charakteristik
- Dynamisch änderbar: Ja
- Kernelversion: seit 2.6.16
- Wertebereich: 1 bis 3
- 1: Pagecache freigeben
- 2: Dentries und Inodes freigeben
- 3: Pagecache, Dentries und Inodes freigeben
Beispiel: Cache leeren
# free total used free shared buffers cached Mem: 7886768 1070272 6816496 0 209072 664028 -/+ buffers/cache: 197172 7689596 Swap: 7815612 0 7815612 # echo 3 > /proc/sys/vm/drop_caches # free total used free shared buffers cached Mem: 7886768 203632 7683136 0 220 39460 -/+ buffers/cache: 163952 7722816 Swap: 7815612 0 7815612
/proc/sys/vm/max_map_count
Dieser Eintrag enthält die maximale Anzahl von Virtual Memory Areas (VMAs) eines Prozesses. VMAs entstehen bei der Bereitstellung von Speicher via malloc, mmap und mprotect sowie wenn Shared Libraries geladen werden.
Die meisten Anwendungen benötigen weniger als 1000 VMAs. Gewisse Programme im speziellen Malloc-Debugger benötigen sehr viele VMAs.
- Charakteristik
- Dynamisch änderbar: Ja
- Standard: 65536
/proc/sys/vm/overcommit_memory
Über die Dateien overcommit_memory und overcommit_ratio lässt sich das Überbuchen des Speichers steuern.
- Charakteristik
- Dynamisch änderbar: Ja
- Wertebereich: 0 bis 2
- Standard: 0
0: Heuristisches Verfahren um sinnvolle Anforderungen zu zulassen und übermäßige Anforderungen abzulehnen. Dies kann dazu führen, dass mehr Speicher ausgereicht wird, als vorhanden ist.
- 1: Überbuchen ist immer zulässig
2: Überbuchungen im Rahmen des mit overcommit_ratio festgelegten Speichers immer zulassen
- Weiterführende Informationen
linux/Documentation/filesystems/proc.txt
linux/Documentation/sysctl/vm.txt
linux/Documentation/vm/overcommit-accounting
Performance Tuning Guide - https://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html-single/Performance_Tuning_Guide/index.html
/proc/sys/vm/overcommit_ratio
Mit overcommit_ratio lässt sich die Gesamtsumme des allokierbaren Speichers festlegen.
Memory Allocation Limit = Swap Space + physischer Speicher * (overcommit_ratio / 100)
Beispiel: Kein Überbuchen des Speichers
# head /proc/sys/vm/overcommit* ==> /proc/sys/vm/overcommit_memory <== 2 ==> /proc/sys/vm/overcommit_ratio <== 50 # free -k total used free shared buffers cached Mem: 2958856 242384 2716472 0 37472 166100 -/+ buffers/cache: 38812 2920044 Swap: 1953116 0 1953116 # echo "2958856 * 0.5 + 1953116" | bc 3432544.0 # grep CommitLimit /proc/meminfo CommitLimit: 3432544 kB
Der manuell errechnete Wert von 343254 kB stimmt mit dem Commit-Limit des Kernels über ein.
- Charakteristik
- Dynamisch änderbar: Ja
- Wertebereich: größer 0
/proc/sys/vm/pagecache
Arbeitet analog /proc/sys/vm/buffermem für memory mapping und generisches Cachen von Dateien.
- Charakteristik
- Dynamisch änderbar: Ja
- Wertebereich: größer 0
/proc/sys/vm/panic_on_oom
Steuert, ob eine Kernel Panic ausgelöst wird, wenn kein Speicher mehr verfügbar ist.
- Charakteristik
- Dynamisch änderbar: Ja
- Wertebereich: 0 oder 1
- 0: keine Kernel Panic, wenn kein Speicher mehr verfügbar ist
- 1: Kernel Panic, wenn kein Speicher mehr verfügbar ist
/proc/sys/vm/swappiness
Die 2.6er-Kernelreihe beinhaltet die Möglichkeit zu beeinflussen, inwieweit Linux es vorzieht Prozesse und Daten auf die Festplatte auszulagern (Swapping), anstatt die Caches zu verkleinern, wenn der freie Speicher zur Neige geht.
Wenn eine Anwendung Speicher benötigt, der Speicher jedoch bereits vollkommen belegt ist, hat der Kernel zwei Möglichkeiten um Speicher freizuschaufeln und der Anwendung zur Verfügung zu stellen. Entweder kann Linux den "Disk Cache" im Speicher verkleinern, indem es vorrangig die ältesten Daten löscht, oder es kann weniger benutzte Teile von Programmen (Speicherseiten) auf die Swappartition auf der Festplatte auslagern. Es ist durchaus nicht einfach vorauszusagen, welche der beiden Methoden im Einzelfall die effizientere ist. Der Kernel fällt die Entscheidung, indem er anhand vorhergegangener Aktivitäten versucht die zu erwartende Effektivität der beiden Herangehensweisen grob abzuschätzen.
Die Swappiness kann Werte zwischen 0 und 100 annehmen um das Verhältnis zwischen dem Auslagern von Anwendungen und der Verkleinerung des Caches zu verändern. Bei 100 wird der Kernel stets bevorzugt nach inaktiven Anwendungen Ausschau halten und diese auslagern. Ein Wert von 0 ergibt etwas in der Nähe des ursprünglichen Verhaltens, wobei Anwendungen die Speicher benötigten den Cache bis zu einem sehr kleinen Anteil am Gesamtspeicher schrumpfen konnten. Für Laptops, bei denen die Festplatte wünschenswerterweise in den Schlafmodus übergehen sollte, ist folglich ein Wert von 20 oder weniger empfehlenswert.
- Charakteristik
- Dynamisch änderbar: Ja
- Wertebereich: 0 - 100
- Standard: 60
Weiterführende Informationen
- Linux Speichermanagement
Deutsche Übersetzung von http://gentoo-wiki.info/FAQ_Linux_Memory_Management