Wie man prüft, ob die Kernel-Überschreibung (Overcommit) in Linux aktiviert ist

LinuxLinuxBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie die Einstellung für die Überschreibung von virtueller Arbeitsspeicher (Virtual Memory Overcommit) in Linux überprüfen können. Sie verwenden den Befehl sysctl, um den Kernel-Parameter vm.overcommit_memory anzuzeigen und die verschiedenen Werte zu verstehen, die dieser Parameter annehmen kann.

Sie werden auch das /proc-Dateisystem untersuchen, insbesondere das Verzeichnis /proc/sys/vm, um zu sehen, wie Kernel-Parameter als Dateien zugänglich gemacht werden. Abschließend werden Sie die Datei /etc/sysctl.conf prüfen, um zu verstehen, wie diese Einstellungen dauerhaft konfiguriert werden können. In diesem Lab erhalten Sie praktische Erfahrungen, wie Sie Kernel-Overcommit-Einstellungen in einer Linux-Umgebung überprüfen und verstehen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/UserandGroupManagementGroup -.-> linux/env("Environment Managing") subgraph Lab Skills linux/echo -.-> lab-558796{{"Wie man prüft, ob die Kernel-Überschreibung (Overcommit) in Linux aktiviert ist"}} linux/ls -.-> lab-558796{{"Wie man prüft, ob die Kernel-Überschreibung (Overcommit) in Linux aktiviert ist"}} linux/cat -.-> lab-558796{{"Wie man prüft, ob die Kernel-Überschreibung (Overcommit) in Linux aktiviert ist"}} linux/env -.-> lab-558796{{"Wie man prüft, ob die Kernel-Überschreibung (Overcommit) in Linux aktiviert ist"}} end

Überprüfung der Überschreibung von virtueller Arbeitsspeicher (Overcommit) mit sysctl vm.overcommit

In diesem Schritt lernen Sie, wie Sie die Einstellung für die Überschreibung von virtueller Arbeitsspeicher (Virtual Memory Overcommit) in Linux mithilfe des Befehls sysctl überprüfen können.

Die Überschreibung von virtueller Arbeitsspeicher (Overcommit) ist ein Feature in Linux, das es dem System ermöglicht, Prozessen mehr Arbeitsspeicher zuzuweisen, als physisch verfügbar ist. Dies kann in einigen Fällen vorteilhaft sein, kann aber auch zu Problemen führen, wenn Prozesse tatsächlich versuchen, den gesamten zugewiesenen Arbeitsspeicher zu nutzen.

Der Befehl sysctl wird verwendet, um Kernel-Parameter zur Laufzeit anzuzeigen und zu ändern. Wir verwenden ihn, um den Wert des Parameters vm.overcommit_memory zu überprüfen.

Öffnen Sie das Terminal, wenn Sie es noch nicht getan haben. Sie können dies tun, indem Sie auf das Symbol Xfce Terminal auf der linken Seite des Desktops klicken.

Geben Sie jetzt den folgenden Befehl in das Terminal ein und drücken Sie die Eingabetaste:

sysctl vm.overcommit_memory

Dieser Befehl fordert den Kernel auf, den aktuellen Wert des Parameters vm.overcommit_memory anzuzeigen.

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

vm.overcommit_memory = 0

Der Wert 0 gibt die Standard-Heuristik für die Behandlung von Überschreibungen (Overcommit) an. Andere mögliche Werte sind 1 (immer Überschreibung zulassen) und 2 (niemals Überschreibung zulassen). Das Verständnis dieser Einstellung ist wichtig für die Systemleistung und -stabilität, insbesondere in Umgebungen mit hohem Arbeitsspeicherbedarf.

Klicken Sie auf Weiter, um mit dem nächsten Schritt fortzufahren.

Überprüfung der Einstellungen in /proc/sys/vm

In diesem Schritt werden Sie das /proc-Dateisystem untersuchen, insbesondere das Verzeichnis /proc/sys/vm, um zu sehen, wie Kernel-Parameter im Zusammenhang mit virtueller Arbeitsspeicher zugänglich gemacht werden.

Das /proc-Dateisystem ist ein virtuelles Dateisystem, das Informationen über Prozesse und andere Systeminformationen bereitstellt. Es ist ein ausgezeichneter Ort, um den aktuellen Zustand des Kernels zu überprüfen. Das Verzeichnis /proc/sys innerhalb von /proc enthält Dateien, die Kernel-Parametern entsprechen, die zur Laufzeit angezeigt und manchmal auch geändert werden können.

Das Verzeichnis /proc/sys/vm enthält Dateien, die sich auf das virtuelle Arbeitsspeichersubsystem beziehen. Der vm.overcommit_memory-Parameter, den wir im vorherigen Schritt überprüft haben, hat eine entsprechende Datei in diesem Verzeichnis.

Lassen Sie uns den Befehl cat verwenden, um den Inhalt der Datei anzuzeigen, die vm.overcommit_memory repräsentiert. Der cat-Befehl wird verwendet, um den Inhalt von Dateien anzuzeigen.

Geben Sie den folgenden Befehl in Ihr Terminal ein und drücken Sie die Eingabetaste:

cat /proc/sys/vm/overcommit_memory

Dieser Befehl liest den Inhalt der overcommit_memory-Datei im Verzeichnis /proc/sys/vm und gibt ihn in Ihrem Terminal aus.

Sie sollten denselben Wert sehen, den Sie im vorherigen Schritt mit dem sysctl-Befehl gesehen haben:

0

Dies zeigt, dass sysctl im Wesentlichen aus diesen Dateien im /proc/sys-Dateisystem liest oder in sie schreibt.

Sie können auch die Dateien im Verzeichnis /proc/sys/vm auflisten, um andere Parameter im Zusammenhang mit virtueller Arbeitsspeicher zu sehen. Verwenden Sie den ls-Befehl:

ls /proc/sys/vm/

Sie werden eine Liste von Dateien sehen, von denen jede einen anderen Kernel-Parameter im Zusammenhang mit virtueller Arbeitsspeicher repräsentiert.

compact_hueristic
compact_memory
dirty_background_bytes
dirty_background_ratio
dirty_bytes
dirty_expire_centisecs
dirty_ratio
dirty_writeback_centisecs
drop_caches
extfrag_threshold
hugetlb_shm_group
laptop_mode
lowmem_reserve_ratio
min_free_bytes
min_slab_ratio
min_unmapped_ratio
mmap_min_addr
nr_hugepages
nr_hugepages_mempolicy
nr_overcommit_hugepages
numa_balancing
numa_balancing_scan_period_max_ms
numa_balancing_scan_period_min_ms
numa_balancing_scan_size_mb
numa_balancing_settle_count
numa_balancing_timeout
oom_dump_tasks
oom_kill_allocating_task
overcommit_memory
overcommit_ratio
page-cluster
panic_on_oom
percpu_pagelist_fraction
stat_interval
swappiness
user_reserve_kbytes
vfs_cache_pressure
watermark_boost_factor
watermark_scale_factor
zone_reclaim_mode

Dies gibt Ihnen einen Einblick in die vielen einstellbaren Parameter, die im virtuellen Arbeitsspeichersubsystem des Linux-Kernels verfügbar sind.

Klicken Sie auf Weiter, um fortzufahren.

Überprüfung der Konfiguration mit cat /etc/sysctl.conf

In diesem Schritt lernen Sie die Datei /etc/sysctl.conf kennen, die dazu dient, Kernel-Parameter dauerhaft über Neustarts hinweg zu konfigurieren.

Obwohl Sie Kernel-Parameter zur Laufzeit mithilfe des sysctl-Befehls oder durch Schreiben in Dateien in /proc/sys ändern können, sind diese Änderungen normalerweise temporär und gehen beim Neustart des Systems verloren. Um Kernel-Parameter dauerhaft zu ändern, fügen Sie sie normalerweise der Datei /etc/sysctl.conf oder Dateien im Verzeichnis /etc/sysctl.d/ hinzu.

Beim Booten des Systems werden die Einstellungen aus /etc/sysctl.conf gelesen und angewendet.

Lassen Sie uns erneut den cat-Befehl verwenden, um den Inhalt der Datei /etc/sysctl.conf anzuzeigen.

Geben Sie den folgenden Befehl in Ihr Terminal ein und drücken Sie die Eingabetaste:

cat /etc/sysctl.conf

Dadurch wird der Inhalt der Haupt-Sysctl-Konfigurationsdatei angezeigt.

Sie sehen möglicherweise Zeilen, die mit # beginnen. Dies sind Kommentare, die ignoriert werden. Andere Zeilen haben das Format parameter = value, ähnlich wie bei der Ausgabe des sysctl-Befehls.

#
## /etc/sysctl.conf - Konfigurationsdatei für die Einstellung von Systemvariablen
## Siehe /etc/sysctl.d/ .conf-Dateien für andere Systemvariablen
#

#kernel.domainname = example.com

## Entfernen Sie die folgenden Kommentare, um niedrigstufige Nachrichten auf der Konsole zu unterdrücken
#kernel.printk = 3 4 1 3

##############################################################3
## Funktionen, die früher in netbase zu finden waren
#

## Entfernen Sie die Kommentare der nächsten beiden Zeilen, um den Schutz vor Spoofing-Angriffen zu aktivieren
#net.ipv4.conf.default.rp_filter=1
#net.ipv4.conf.all.rp_filter=1

## Entfernen Sie die Kommentare der nächsten Zeile, um TCP/IP SYN-Cookies zu aktivieren
#net.ipv4.tcp_syncookies=1

## Entfernen Sie die Kommentare der nächsten Zeile, um die Paketweiterleitung für IPv4 zu aktivieren
#net.ipv4.ip_forward=1

## Entfernen Sie die Kommentare der nächsten Zeile, um die Paketweiterleitung für IPv6 zu aktivieren
#net.ipv6.conf.all.forwarding=1

##############################################################3
## Entfernen Sie "nobody" aus dem Kernel
#

#kernel.yama.ptrace_scope = 1

##############################################################3
## Magische Systemanforderungstaste
#

#kernel.sysrq = 176

##############################################################3
## Dynamischer geteilter Speicher (Dynamic Shared Memory):
#

#kernel.shmmax = 4294967295
#kernel.shmall = 268435456

##############################################################3
## Andere Einstellungen
#

#fs.file-max = 100000

#vm.swappiness = 60
#vm.vfs_cache_pressure = 50

#kernel.nmi_watchdog = 0

Beachten Sie, dass der vm.overcommit_memory-Parameter in dieser Datei möglicherweise nicht explizit festgelegt ist. Wenn ein Parameter in /etc/sysctl.conf oder /etc/sysctl.d/ nicht festgelegt ist, verwendet der Kernel seinen Standardwert. Der Wert, den Sie mit dem sysctl-Befehl und in /proc/sys/vm/overcommit_memory gesehen haben, ist der derzeit aktive Wert, der entweder der Standardwert oder durch eine andere Konfigurationsdatei oder ein Skript beim Booten festgelegt wurde.

Das Verständnis von /etc/sysctl.conf ist für die dauerhafte Systemoptimierung von entscheidender Bedeutung.

Klicken Sie auf Weiter, um dieses Lab abzuschließen.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie die Einstellung für die Überschreibung von virtueller Arbeitsspeicher (virtual memory overcommit) in Linux überprüfen. Sie haben den Befehl sysctl vm.overcommit_memory verwendet, um den aktuellen Wert dieses Kernel-Parameters anzuzeigen. Dabei haben Sie gelernt, dass ein Wert von 0 die Standard-Heuristik-Behandlung bedeutet, 1 immer die Überschreibung von Arbeitsspeicher (overcommit) und 2 niemals die Überschreibung von Arbeitsspeicher.

Sie haben auch das /proc-Dateisystem untersucht, insbesondere das Verzeichnis /proc/sys/vm, um zu sehen, wie Kernel-Parameter wie vm.overcommit_memory als Dateien in diesem virtuellen Dateisystem zugänglich gemacht werden. Dies bietet eine alternative Möglichkeit, den aktuellen Zustand des Kernels in Bezug auf die Einstellungen für virtuellen Arbeitsspeicher zu überprüfen.