proc_sys_vm(5) File Formats Manual proc_sys_vm(5) BEZEICHNUNG /proc/sys/vm/ - virtuelles Speicher-Subsystem BESCHREIBUNG /proc/sys/vm/ Dieses Verzeichnis enthalt Dateien fur die Optimierung der Speicherverwaltung und die Verwaltung der Puffer und Caches (Zwischenspeicher). /proc/sys/vm/admin_reserve_kbytes (seit Linux 3.10) Diese Datei definiert die Menge an freiem Speicher (in KiB) auf dem System, der fur Benutzer mit der Capability CAP_SYS_ADMIN reserviert werden sollte. Die Vorgabe fur diesen Wert ist der kleinere Wert aus [3% von freien Seiten, 8 MiB], ausgedruckt in kiB. Der Vorgabewert ist dazu gedacht, unter dem standardmassigen Uberbuchungs >>Rate<<-Modus (d.h. 0 in /proc/sys/vm/overcommit_memory) genug fur die Anmeldung des Systemadministrators zum Beenden eines Prozesses, falls notwendig, bereitzustellen. Systeme, die im >>Nichtmals Uberbuchen<<-Modus<< (d.h. 2 in /proc/sys/vm/overcommit_memory) laufen, sollten den Wert in dieser Datei vergrossern,um der vollen virtuelle Speichergrosse Rechnung zu tragen, die Programme zur Wiederherstellung benotigen (z.B. login(1), ssh(1) und top(1)). Andernfalls ist der Systemadministrator moglicherweise nicht in der Lage, sich anzumelden, um das System wiederherzustellen. Auf x86-64 ist beispielsweise 131072 (128 MiB reserviert) ein geeigneter Wert. Die Anderung des Wertes in dieser Datei tritt in Kraft, wann immer eine Anwendung Speicher anfordert. /proc/sys/vm/compact_memory (seit Linux 2.6.35) Wenn 1 in diese Datei geschrieben wird, werden alle Zonen zusammengefasst, so dass der freie Speicher wo moglich in durchlaufenden Blocken verfugbar ist. Der Effekt dieser Aktion kann durch Einsicht in /proc/buddyinfo gepruft werden. Nur vorhanden, falls der Kernel mit CONFIG_COMPACTION konfiguriert wurde. /proc/sys/vm/drop_caches (seit Linux 2.6.16) Das Schreiben in diese Datei veranlasst den Kernel, saubere Zwischenspeicher, Dentries und Inodes aus dem Speicher zu verwerfen, was dazu fuhrt, dass Speicher frei wird. Dies kann fur das Testen der Speicherverwaltung und der Durchfuhrung reproduzierbarer Dateisystembewertungen nutzlich sein. Da das Schreiben in diese Datei dazu fuhrt, dass die Vorteile der Zwischenspeicherung verloren gehen, kann es die Leistung des gesamten Systems vermindern. Zur Freigabe des Seitenzwischenspeichers, verwenden Sie: echo 1 > /proc/sys/vm/drop_caches Zur Freigabe der Dentries und Inodes, verwenden Sie: echo 2 > /proc/sys/vm/drop_caches Zur Freigabe des Seitenzwischenspeichers, der Dentries und Inodes, verwenden Sie: echo 3 > /proc/sys/vm/drop_caches Da das Schreiben in diese Datei unschadlich ist und geanderte (schmutzige) Objekte nicht freigegeben werden konnen, sollte der Benutzer vorher sync(8) aufrufen. /proc/sys/vm/sysctl_hugetlb_shm_group (seit Linux 2.6.7) Diese schreibbare Datei enthalt die Gruppenkennung, der es erlaubt ist, Speicher mittels grosser Seiten zu belegen. Falls ein Prozess uber eine Dateisystemgruppenkennung oder irgendeine zusatzliche Gruppenkennung, die auf diese Gruppenkennung passt, verfugt, dann kann er grosse Speicherseiten belegen, ohne die Capability CAP_IPC_LOCK zu halten; siehe memfd_create(2), mmap(2) und shmget(2). /proc/sys/vm/legacy_va_layout (seit Linux 2.6.9) Wenn ungleich Null, deaktiviert dies das neue 32-Bit-Layout fur das >>Memory Mapping<<, der Kernel wird das alte (2.4) Layout fur alle Prozesse anwenden. /proc/sys/vm/memory_failure_early_kill (seit Linux 2.6.32) Steuert, wie Prozesse beendet werden, wenn ein nicht korrigierter Speicherfehler (in der Regel ein 2-Bit-Fehler in einem Speichermodul), den der Kernel nicht bearbeiten kann, im Hintergrund durch die Hardware erkannt wird. In einigen Fallen (wenn es von der Seite noch eine gultige Kopie auf der Festplatte gibt), wird der Kernel den Fehler behandeln, ohne alle Anwendungen zu beeintrachtigen. Aber wenn es keine weitere aktuelle Kopie der Daten gibt, wird er Prozesse abbrechen, um die Verbreitung korrumpierter Daten zu unterbinden. Die Datei hat einen der folgenden Werte: 1 Bricht alle Prozesse ab, in deren Speicher die beschadigte und nicht erneut ladbare Seite gemappt ist, sobald die Beschadigung erkannt wird. Beachten Sie, dass dies nicht fur einige spezielle Seitentypen wie Kernel-intern zugewiesene Daten oder den Auslagerungszwischenspeicher unterstutzt wird, es funktioniert aber fur die Mehrheit der Anwenderseiten. 0 Die beschadigte Seite aus allen Prozesse ausmappen und einen Prozess nur toten, falls er versucht, auf die Seite zuzugreifen. Der Abbruch wird mittels eines SIGBUS-Signals erledigt, bei dem der si_code auf BUS_MCEERR_AO gesetzt wird. Prozesse konnen darauf reagieren, wenn sie wollen; siehe sigaction(2) fur weitere Einzelheiten. Diese Funktionalitat ist nur auf Architekturen/Plattformen aktiv, die uber eine ausgefeilte Handhabung von >>machine checks<< verfugen und hangt von den Fahigkeiten der Hardware ab. Anwendungen konnen die Einstellung memory_failure_early_kill individuell mit der prctl(2)-Operation PR_MCE_KILL ausser Kraft setzen. Nur vorhanden, falls der Kernel mit CONFIG_MEMORY_FAILURE konfiguriert wurde. /proc/sys/vm/memory_failure_recovery (seit Linux 2.6.32) Aktiviert die Behebung von Speicherfehlern (wenn das von der Plattform unterstutzt wird). 1 Fehlerbehebung versuchen. 0 Bei Speicherfehlern immer eine Kernel Panic auslosen. Nur vorhanden, falls der Kernel mit CONFIG_MEMORY_FAILURE konfiguriert wurde. /proc/sys/vm/oom_dump_tasks (seit Linux 2.6.25) Ermoglicht einen systemweiten Speicherauszug der Prozesse (ohne Kernel-Threads), wenn der Kernel bei Speicherknappheit Prozesse abbricht (OOM-Killer). Der Speicherauszug enthalt die folgenden Informationen fur jeden Prozess (Thread, Prozess): Thread-Kennung, reale Benutzerkennung, Thread-Gruppenkennung (Prozesskennung), Grosse des virtuellen Speichers, Grosse des Resident Set, die CPU, auf der der Prozess laufen soll, die oom_adj-Bewertung (siehe die Beschreibung von /proc/PID/oom_adj) und der Name des Befehls. Dies ist hilfreich, um festzustellen, warum der OOM-Killer aufgerufen wurde und um die ausser Kontrolle geratenen Prozesse zu identifizieren. Ist der Wert in der Datei Null, wird diese Information unterdruckt. Auf sehr grossen Systemen mit Tausenden von Prozessen wird es kaum praktikabel sein, fur alle Prozesse den Speicherstatus auszugeben. Solche Systeme sollten nicht gezwungen werden, bei OOM-Situationen Leistungseinbussen zu erleiden, wenn die Informationen nicht gewunscht werden. Ist der Wert von Null verschieden, werden diese Informationen jedesmal ausgegeben, wenn der OOM-Killer einen speicherhungrigen Prozess ins Jenseits schickt. Der Standardwert ist 0. /proc/sys/vm/oom_kill_allocating_task (seit Linux 2.6.24) Dies aktiviert oder deaktiviert das Beenden des OOM-auslosenden Prozesses bei Speicherknappheit. Ist der Wert null, wertet der OOM-Killer die gesamte Taskliste aus und wahlt heuristisch einen Prozess als Opfer aus. Normalerweise wahlt er einen speicherhungrigen, ausser Kontrolle geratenenen Task aus, dessen Tod sehr viel Speicher freigibt. Ist der Wert ungleich Null, totet der OOM-Killer den Prozess, der die Speicherknappheit ausloste. Dadurch wird eine moglicherweise aufwandige Analyse der Taskliste vermieden. Falls /proc/sys/vm/panic_on_oom von null verschieden ist, hat das Vorrang vor dem Wert in /proc/sys/vm/oom_kill_allocating_task, was auch immer darin steht. Der Standardwert ist 0. /proc/sys/vm/overcommit_kbytes (seit Linux 3.14) Diese beschreibbare Datei stellt eine Alternative zu /proc/sys/vm/overcommit_ratio zu Steuerung von CommitLimit bereit, wenn /proc/sys/vm/overcommit_memory den Wert 2 hat. Es ermoglicht die Menge der Speicheruberbuchung als absoluten Wert (in kB) statt als Prozentwert, wie dies in overcommit_ratio erfolgt, festzulegen. Dies ermoglicht granularere Steuerung des CommitLimit auf Systemen mit extrem viel Speicher. Nur entweder overcommit_kbytes oder overcommit_ratio kann einen Effekt haben. Falls overcommit_kbytes einen von Null verschiedenen Wert enthalt, dann wird dieser zur Berechnung von CommitLimit verwandt, andernfalls wird overcommit_ratio verwandt. Wird in eine der beiden Dateien geschrieben, dann wird der Wert in der anderen auf Null gesetzt. /proc/sys/vm/overcommit_memory Diese Datei legt den Abrechnungsmodus des Kernels fur virtuellen Speicher fest. Die Werte sind: 0: heuristische Uberbuchung (Standardverhalten) 1: immer uberbuchen, niemals prufen 2: immer prufen, niemals uberbuchen In Modus 0 werden Aufrufe von mmap(2) mit MAP_NORESERVE nicht uberpruft. Damit ist die Standardprufung sehr schwach und setzt den Prozess dem Risiko aus, zum Opfer des OOM-Killers zu werden. In Modus 1 gibt der Kernel immer vor, noch uber Speicher zu verfugen, bis der Speicher schliesslich wirklich erschopft ist. Ein Einsatzzweck stellt das wissenschaftliche Rechnen dar, bei denen grosse, kaum besetzte Felder eingesetzt werden. Vor Linux 2.6.0 impliziert jeder von Null verschiedene Wert den Modus 1. In Modus 2 (verfugbar seit Linux 2.6) wird der reservierbare gesamte virtuelle Adressraum (CommitLimit in /proc/meminfo) wie folgt berechnet: CommitLimit = (total_RAM - total_huge_TLB) * overcommit_ratio / 100 + total_swap wobei: o total_RAM ist der gesamte RAM des Systems o total_huge_TLB ist die fur grosse Speicherseiten beiseite gestellte Speichermenge o overcommit_ratio ist der Wert aus /proc/sys/vm/overcommit_ratio o total_swap ist die Menge des Auslagerungsbereichs Beispielsweise ergibt diese Formel auf einem System mit 16 GB an physischem RAM, 16 GB an Auslagerungsspeicher, keinen fur grosse Speicherseiten gewidmeten Bereich und einem overcommit_ratio von 50 ein CommitLimit von 24 GB. Falls der Wert in /proc/sys/vm/overcommit_kbytes von Null verschieden ist, wird CommitLimit stattdessen seit Linux 3.14 wie folgt berechnet: CommitLimit = overcommit_kbytes + total_swap Siehe auch die Beschreibung von /proc/sys/vm/admin_reserve_kbytes und /proc/sys/vm/user_reserve_kbytes. /proc/sys/vm/overcommit_ratio (seit Linux 2.6.0) Diese schreibbare Datei definiert einen Prozentwert, zu dem Speicher uberbucht werden kann. Der Vorgabewert in der Datei ist 50. Siehe die Beschreibung von /proc/sys/vm/overcommit_memory. /proc/sys/vm/panic_on_oom (seit Linux 2.6.18) Dies aktiviert oder deaktiviert eine Kernel-Panik bei Speicherknappheit. Wenn diese Datei auf den Wert 0 gesetzt wird, wird der OOM-Killer des Kernels einen ausser Kontrolle geratenen Prozess toten. Normalerweise findet er einen ausser Kontrolle geratenen Prozess und das System uberlebt. Wenn diese Datei auf den Wert 1 gesetzt ist, verfallt der Kernel in Panik, wenn Speicherknappheit eintritt. Wenn allerdings ein Prozess die Zuweisungen an bestimmte Knoten mit Speicherstrategien (mbind(2) MPOL_BIND) oder Cpusets (cpuset(7)) begrenzt und die Knoten einen Speichererschopfungs-Zustand erreichen, kann ein Prozess vom OOM-Killer getotet werden. In diesem Fall tritt keine Panik ein: Weil der Speicher anderer Knoten noch frei sein kann, muss das System noch nicht als ganzes unter Speicherknappheit leiden. Wenn diese Datei schon auf den Wert 2 gesetzt ist, wird bei Speicherknappheit immer eine Kernel-Panik ausgelost. Der Standardwert ist 0. 1 und 2 sind fur die Ausfallsicherung in Clustern bestimmt. Wahlen Sie den Wert entsprechend ihrer Strategie oder im Sinn der Ausfallsicherung. /proc/sys/vm/swappiness Der Wert in dieser Datei legt fest, wie aggressiv der Kernel Speicherseiten auslagert. Hohe Werte machen ihn aggressiver, kleinere Werte sanftmutiger. Der Standardwert ist 60. /proc/sys/vm/user_reserve_kbytes (seit Linux 3.10) Legt die Speichermenge (in kiB) fest, die fur Benutzerprozesse zu reservieren ist. Dies ist dazu gedacht, einen Benutzer vom Starten eines einzelnen, speicherfressenden Prozesses abzuhalten, so dass er sich nicht von dem Speicherfresser erholen kann (ihn beenden kann). Der Wert in dieser Datei hat nur eine Auswirkung, wenn /proc/sys/vm/overcommit_memory auf 2 gesetzt ist (>>niemals Uberbuchen<<-Modus). In diesem Fall reserviert das System eine Speichermenge, die der kleinere Wert aus [3% der aktuellen Prozessgrosse, user_reserve_kbytes] ist. Der Vorgabewert in dieser Datei ist der kleinere Wert aus [3% der freien Seiten, 128 MiB], ausgedruckt in kiB. Falls der Wert in dieser Datei auf Null gesetzt wird, darf ein Benutzer samtlichen Speicher durch einen einzelnen Prozess belegen (abzuglich der durch /proc/sys/vm/admin_reserve_kbytes reservierten Menge). Alle nachfolgenden Versuche, einen Befehl auszufuhren, fuhren dann zu >>fork: Cannot allocate memory<<. Die Anderung des Wertes in dieser Datei tritt in Kraft, wann immer eine Anwendung Speicher anfordert. /proc/sys/vm/unprivileged_userfaultfd (seit Linux 5.2) Diese (schreibbare) Datei legt einen Schalter offen, der steuert, ob nicht privilegierten Prozessen erlaubt wird, userfaultfd(2) einzusetzen. Falls diese Datei den Wert 1 enthalt, dann durfen nicht privilegierte Prozesse userfaultfd(2) verwenden. Falls diese Datei den Wert 0 enthalt, dann durfen nur Prozesse, die uber die Capability CAP_SYS_PTRACE verfugen, userfaultfd(2) einsetzen. Der Vorgabewert in dieser Datei ist 1. SIEHE AUCH proc(5), proc_sys(5) UBERSETZUNG Die deutsche Ubersetzung dieser Handbuchseite wurde von Martin Eberhard Schauer , Dr. Tobias Quathamer , Chris Leick , Erik Pfannenstein und Helge Kreutzmann erstellt. Diese Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezuglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG ubernommen. Wenn Sie Fehler in der Ubersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Ubersetzer . Linux man-pages 6.9.1 2. Mai 2024 proc_sys_vm(5)