Informationen zu Linux-Kernelparametern

Ich hatte kürzlich die Gelegenheit, die Kernel-Parameter zu überprüfen, also notieren Sie sie.

Zweck der Einstellung von Kernelparametern

Vorsichtsmaßnahmen

Kernel-Parameter

Nachdem wir in den letzten Jahren verschiedene Tuning-Informationen untersucht hatten, schien es gut, Folgendes festzulegen.

Performance

Parametername
fs.file-max
kernel.threads-max
net.core.netdev_max_backlog Beschreibung Überprüfung erforderlich Obergrenze des Dateideskriptors für das gesamte System Überprüfung erforderlich Obergrenze der Anzahl der Prozesse für das gesamte System Überprüfung erforderlich Maximale Anzahl von Paketen, die der Kernel in die Warteschlange stellen kann
net.netfilter.nf_conntrack_max Bestätigung notwendig Passen Sie die maximale Anzahl gleichzeitiger Verbindungen mit netfilter an
vm.swappiness 0 Stellen Sie die Leichtigkeit von SWAP ein
* Wenn SWAP auch mit 0 ausgeführt wird, wird SWAP ausgeführt.

Sicherheit

Parametername Wert einstellen Erläuterung
kernel.sysrq 0 SysRq(System Anforderungen)Schlüssel deaktivieren
net.ipv4.conf.all.accept_source_route 0 Deaktivieren Sie das Quellrouting
net.ipv4.conf.all.rp_filter 1 rp_filter(reverse path filter)Aktivieren
net.ipv4.conf.default.rp_filter 1 rp_filter(reverse path filter)Aktivieren
net.ipv4.ip_forward 0 IP-Übertragung deaktivieren
net.ipv4.tcp_syncookies 1 tcp_Syncookies aktivieren * SYN FLOOD-Maßnahmen

TCP / IP-Optimierung

Parametername Wert einstellen Erläuterung
net.core.rmem_max Bestätigung notwendig Legen Sie die maximale Größe des TCP-Empfangspuffers fest
net.core.somaxconn Bestätigung notwendig Maximale Länge der Warteschlange zum Speichern von Verbindungsanforderungen, die von TCP-Sockets akzeptiert werden
net.core.wmem_max Bestätigung notwendig Maximale Größe des TCP-Sendepuffers
net.ipv4.ip_local_port_range Bestätigung notwendig TCP/Ändern Sie den IP-Übertragungsportbereich
net.ipv4.tcp_fin_timeout 5〜30 Timeout-Zeit für FIN-Pakete
net.ipv4.tcp_keepalive_intvl sec<75 Intervall zum Senden des TCP-Keepalive-Pakets(Sekunden)
net.ipv4.tcp_keepalive_time sec<7200 Zeit zum Senden des TCP-Keepalive-Pakets(Sekunden)
net.ipv4.tcp_keepalive_probes count<9 Häufigkeit, mit der ein Keepalive-Paket gesendet wird
net.ipv4.tcp_max_syn_backlog Bestätigung notwendig Die Anzahl der Verbindungen, die eine Verbindung halten können, die SYN pro Socket akzeptiert und keine ACK empfängt
net.ipv4.tcp_max_tw_buckets Bestätigung notwendig ZEIT, die gleichzeitig vom System gehalten wird_Maximale Anzahl von WAIT-Buchsen
net.ipv4.tcp_orphan_retries Bestätigung notwendig Anzahl der erneuten Sendevorgänge vor dem Beenden der geschlossenen TCP-Verbindung von hier aus
net.ipv4.tcp_rfc1337 1 RFC1337 einhalten
※TIME_Wenn RST im WAIT-Status empfangen wird, TIME_Schließen Sie die Steckdose, ohne auf das Ende der Wartezeit zu warten
net.ipv4.tcp_slow_start_after_idle 0 Deaktivieren Sie den langsamen Start, nachdem die Kommunikation inaktiv ist
net.ipv4.tcp_syn_retries 3 Anzahl der Wiederholungsversuche zum Senden von TCP-SYN
net.ipv4.tcp_tw_reuse 1 TIME_WAIT-Verbindung wiederverwenden

Betrachten Sie die zu optimierenden Elemente anhand des optimierten Profils.

Es gibt eine ganze Reihe von Einstellungselementen für Kernel-Parameter, und es wurde ein Tool entwickelt, das es dem Menschen einfach macht, es zu verwalten.

Bei der Optimierung kann die Optimierung von einem Profil entsprechend dem Servertyp durchgeführt werden, und ich habe die zu optimierenden Elemente anhand dieser Einstellungswerte untersucht.

Über Profil

Profile werden entsprechend dem Servertyp wie folgt erstellt.

Da das Profil typische Kernelparameter für die Optimierung beschreibt, betrachten wir die Kernelparameter in Bezug darauf.

$ ls -l /usr/lib/tuned/
total 56
drwxr-xr-x. 2 root root  4096 Sep  9  2019 balanced
drwxr-xr-x. 2 root root  4096 Sep  9  2019 desktop
-rw-r--r--  1 root root 14413 Mar 14  2019 functions
drwxr-xr-x. 2 root root  4096 Sep  9  2019 latency-performance
drwxr-xr-x. 2 root root  4096 Sep  9  2019 network-latency
drwxr-xr-x. 2 root root  4096 Sep  9  2019 network-throughput
drwxr-xr-x. 2 root root  4096 Sep  9  2019 powersave
drwxr-xr-x. 2 root root  4096 Sep  9  2019 recommend.d
drwxr-xr-x. 2 root root  4096 Sep  9  2019 throughput-performance
drwxr-xr-x. 2 root root  4096 Sep  9  2019 virtual-guest
drwxr-xr-x. 2 root root  4096 Sep  9  2019 virtual-host

Schauen Sie sich die Vorlage für virtuelle Gäste an

Die Beschreibung "include = Durchsatzleistung" gibt an, dass die Vorlage für "Durchsatzleistung" enthalten ist.

** * Die Kommentarzeile ist ausgeblendet, da nur der eingestellte Wert angezeigt wird **

/usr/lib/tuned/virtual-guest/tuned.conf


[main]
summary=Optimize for running inside a virtual guest
include=throughput-performance

[sysctl]
vm.dirty_ratio = 30
vm.swappiness = 30

Hier ist die mitgelieferte Vorlage "Durchsatzleistung".

Sie können sehen, dass es zusätzlich zu den Kernel-Parametern CPU- und Festplatteneinstellungen enthält.

/usr/lib/tuned/throughput-performance/tuned.conf


[main]
summary=Broadly applicable tuning that provides excellent performance across a variety of common server workloads

[cpu]
governor=performance
energy_perf_bias=performance
min_perf_pct=100

[disk]
readahead=>4096

[sysctl]
kernel.sched_min_granularity_ns = 10000000
kernel.sched_wakeup_granularity_ns = 15000000
vm.dirty_ratio = 40
vm.dirty_background_ratio = 10
vm.swappiness=10

Kernel-Parametereinstellungen für Virtual-Guest

Ich habe die Kernel-Parameter eingestellt, die als Test eingestellt wurden, und versucht, die tatsächlich eingestellten Werte wie folgt aufzulisten.

Es scheint, dass wenn es den gleichen Einstellungswert wie die eingeschlossene Vorlage gibt, diese zusammengeführt wird, aber da es "vm.swappiness = 30" ist, wird es nach dem Einschließen nicht unbedingt überschrieben.

Parametername Wert einstellen Erläuterung
vm.dirty_ratio 40 Absolute maximale Menge an Systemspeicher, die mit schmutzigen Seiten gefüllt werden kann, bevor sie auf die Festplatte übertragen werden
vm.swappiness 30 Stellen Sie die Leichtigkeit von SWAP ein
kernel.sched_min_granularity_ns 10000000 Mindestplanungszeitraum für Ziele, auf denen eine einzelne Aufgabe ausgeführt wird
kernel.sched_wakeup_granularity_ns 15000000 Preemption-Granularität beim Starten einer Aufgabe
vm.dirty_background_ratio 10 Wenn der Prozentsatz der verschmutzten Seiten diesen Wert erreicht, wird pdflush in einem Hintergrund mit niedriger Priorität exportiert.

Schauen Sie sich die Vorlage für den Netzwerkdurchsatz an

Die Beschreibung "include = Durchsatzleistung" gibt an, dass die Vorlage für "Durchsatzleistung" enthalten ist.

** * Die Kommentarzeile ist ausgeblendet, da nur der eingestellte Wert angezeigt wird **

/usr/lib/tuned/network-throughput/tuned.conf


[main]
summary=Optimize for streaming network throughput, generally only necessary on older CPUs or 40G+ networks
include=throughput-performance

[sysctl]
net.ipv4.tcp_rmem="4096 87380 16777216"
net.ipv4.tcp_wmem="4096 16384 16777216"
net.ipv4.udp_mem="3145728 4194304 16777216"

Die enthaltene Vorlage "Durchsatzleistung" wurde bereits im vorherigen Abschnitt beschrieben und wird weggelassen.

Kernel-Parametereinstellung für den Netzwerkdurchsatz

Ich habe die Kernel-Parameter eingestellt, die als Test eingestellt wurden, und versucht, die tatsächlich eingestellten Werte wie folgt aufzulisten.

Es scheint, dass wenn es den gleichen Einstellungswert wie die eingeschlossene Vorlage gibt, diese zusammengeführt wird, aber da es "vm.swappiness = 30" ist, wird es nach dem Einschließen nicht unbedingt überschrieben.

Parametername Wert einstellen Erläuterung
vm.dirty_ratio 40 Absolute maximale Menge an Systemspeicher, die mit schmutzigen Seiten gefüllt werden kann, bevor sie auf die Festplatte übertragen werden
vm.swappiness 30 Stellen Sie die Leichtigkeit von SWAP ein
kernel.sched_min_granularity_ns 10000000 Mindestplanungszeitraum für Ziele, auf denen eine einzelne Aufgabe ausgeführt wird
kernel.sched_wakeup_granularity_ns 15000000 Preemption-Granularität beim Starten einer Aufgabe
vm.dirty_background_ratio 10 Wenn der Prozentsatz der verschmutzten Seiten diesen Wert erreicht, wird pdflush in einem Hintergrund mit niedriger Priorität exportiert.
net.ipv4.tcp_rmem 4096 87380 16777216 Empfangspuffergröße des TCP-Sockets(min, default, max)
net.ipv4.tcp_wmem 4096 16384 16777216 Größe des TCP-Socket-Sendepuffers(min, default, max)
net.ipv4.udp_mem 3145728 4194304 16777216 UDP-Socket-Puffergröße(min, default, max)

Gibt an, ob Kernelparameter in Bezug auf das optimierte Profil festgelegt werden sollen

abschließend

Ich denke, es ist unter dem Gesichtspunkt der Sicherheitsleistung sinnvoll, die Kernelparameter für jeden Server richtig einzustellen.

In letzter Zeit nimmt die Popularität von Containertechnologien wie k8s zu, aber dennoch scheint es immer noch viele Möglichkeiten zu geben, Server zu betreiben, nicht nur in der Pre-Cloud, und ich möchte sie entsprechend einstellen.

Referenzlink

Recommended Posts

Informationen zu Linux-Kernelparametern
Über Linux
Über Linux
Über Linux
Über Linux
[Linux] Über den Export
[Linux] Über PATH
Linux (über Gruppen)
Linux (über Verzeichnispfad)
Linux Kernel Release 5.x (2/4)
Überprüfen Sie die Linux-Kernelversion
Linux Kernel Release 5.x (3/4)
Grundkenntnisse über Linux
Linux Kernel Release 5.x (4/4)
Linux Kernel Release 5.x (1/4)
Über den Prozess, den der Linux-Kernel mit x86-Mikrocode verarbeitet
Informationen zum Aufbau einer Linux-Umgebung (CentOS)
Linux (Über Dateien und Verzeichnisse)
Linux (Informationen zum Hinzufügen / Entfernen von Benutzern)
Linux Kernel Build für DE10nano
Selbst erstellter Linux-Kernel mit Clang
Informationen zu LINUX-Dateien und -Prozessen
Was ich über Linux gelernt habe
Kernel-Parameter, die häufig geändert werden
[LINUX-Kernel neu erstellen] Upgrade (4.18.0 → 5.8.8)
Linux-Kernel, sein 29-jähriger Verlaufsbericht
Probieren Sie den Linux-Kernel-Sperrmechanismus aus
Informationen zum Aufbau einer Linux-Umgebung (VMware Virtual BOX)
[Linux] [Kernelmodul] Erstellen Sie kthread im Kernelmodul
Linux
Quellanalyse von Linux (Kernel): Systemaufruf
Über Linux-Befehle Super Basic Edition
Anfänger lernten Unix (Linux) kennen.
[Linux] [C / C ++] Hinweise zum Waf-Build-System
Kompilieren des Linux-Kernels (Linux 5.x unter Ubuntu 20.04)
[Linux] [Kernelmodul] Übergeben von Parametern als Argumente beim Laden eines ladbaren Kernelmoduls