Alle TCP/IP-Tuning-Parameter befinden sich im Verzeichnis /proc/sys/net/. Hier sind beispielsweise einige der wichtigsten Tuning-Parameter, gefolgt von ihrer Bedeutung:
1. /proc/sys/net/core/rmem_max – Maximaler TCP-Datenempfangspuffer
2. /proc/sys/net/core/wmem_max – Maximaler TCP-Datensendepuffer
3. /proc/sys/net/ipv4/tcp_timestamps – Der Zeitstempel wird dem TCP-Header um 12 Bytes hinzugefügt (siehe RFC 1323).
4. /proc/sys/net/ipv4/tcp_sack – selektive Reaktion
5. /proc/sys/net/ipv4/tcp_window_scaling – Unterstützt größere TCP-Fenster. Wenn das maximale TCP-Fenster 65535 (64 KB) überschreitet, muss dieser Wert auf 1 gesetzt werden
6. rmem_default – Standardgröße des Empfangsfensters
7. rmem_max – die maximale Größe des Empfangsfensters
8. wmem_default – Standardgröße des Sendefensters
9. wmem_max – die maximale Größe des Sendefensters
Alle Inhalte im Verzeichnis /proc sind temporär, sodass alle Änderungen nach einem Neustart des Systems verloren gehen.
Es wird empfohlen, die TCP/IP-Parameter beim Systemstart automatisch zu ändern:
Fügen Sie den folgenden Code zur Datei /etc/rc.local hinzu und speichern Sie die Datei. Die folgenden TCP/IP-Parameter werden beim Neustart des Systems automatisch geändert:
echo 256960 > /proc/sys/net/core/rmem_default
echo 256960 > /proc/sys/net/core/rmem_max
echo 256960 > /proc/sys/net/core/wmem_default
echo 256960 > /proc/sys/net/core/wmem_max
echo 0 > /proc/sys/net/ipv4/tcp_timestamps
echo 1 > /proc/sys/net/ipv4/tcp_sack
echo 1 > /proc/sys/net/ipv4/tcp_window_scaling
TCP/IP-Parameter sind selbsterklärend, die TCP-Fenstergröße ist auf 256960 eingestellt, TCP-Zeitstempel sind deaktiviert (Hinzufügen von 12 Bytes zu jedem Paket-Header abbrechen), größere TCP-Fenster und selektive TCP-Antworten werden unterstützt.
Die oben genannten Werte werden basierend auf der Internetverbindung und der maximalen Bandbreite/Latenzrate festgelegt.
Hinweis: Die Werte im obigen Beispiel können in der Praxis verwendet werden, sie umfassen jedoch nur einen Teil der Parameter.
Eine andere Methode: Verwenden Sie /etc/sysctl.conf, um die Parameter auf die Werte zu konfigurieren, die Sie beim Systemstart festgelegt haben:
net.core.rmem_default = 256960
net.core.rmem_max = 256960
net.core.wmem_default = 256960
net.core.wmem_max = 256960
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_sack =1
net.ipv4.tcp_window_scaling = 1
-------------------------------------------------- ---------------
/proc/sys/fs/super-max
Diese Datei gibt die maximale Anzahl von Superblock-Handlern an. Jedes gemountete Dateisystem erfordert die Verwendung eines Superblocks. Wenn also eine große Anzahl von Dateisystemen gemountet wird, kann der Superblock-Handler erschöpft sein.
Standardeinstellung: 256
/proc/sys/fs/super-nr
Diese Datei zeigt die aktuelle Anzahl der zugewiesenen Superblöcke. Diese Datei ist schreibgeschützt und dient nur zur Anzeige von Informationen.
/proc/sys/kernel
/proc/sys/kernel/acct
Diese Datei verfügt über drei konfigurierbare Werte, die steuern, wann die Prozessabrechnung beginnt, basierend auf der Menge an freiem Speicherplatz (ausgedrückt als Prozentsatz) im Dateisystem, das das Protokoll enthält:
Wenn der freie Speicherplatz unter diesen Prozentwert fällt, beenden Sie die Prozessabrechnung
Wenn der freie Speicherplatz höher als dieser Prozentwert ist, starten Sie die Prozessabrechnung
Wie oft (in Sekunden) werden die beiden oben genannten Werte überprüft?
Um einen Wert in dieser Datei zu ändern, sollte eine durch Leerzeichen getrennte Zahlenfolge zurückgegeben werden.
Standardeinstellung: 2 4 30
Diese Werte bewirken, dass die Abrechnung gestoppt wird, wenn weniger als 2 % freier Speicherplatz auf dem Dateisystem vorhanden ist, das das Journal enthält, und die Abrechnung erneut gestartet wird, wenn 4 % oder mehr freier Speicherplatz vorhanden sind. Die Kontrollen erfolgen alle 30 Sekunden.
/proc/sys/kernel/ctrl-alt-del
Diese Datei verfügt über einen Binärwert, der steuert, wie das System reagiert, wenn es die Tastenkombination Strg+Alt+Entf empfängt. Diese beiden Werte stellen dar:
Ein Wert von Null (0) bedeutet, dass Strg+Alt+Entf erfasst und an das Init-Programm gesendet wird. Dadurch kann das System ordnungsgemäß heruntergefahren und neu gestartet werden, so als ob Sie den Befehl zum Herunterfahren eingegeben hätten.
Ein Wert von eins (1) bedeutet, dass Strg+Alt+Entf nicht erfasst wird und ein nicht sauberes Herunterfahren durchgeführt wird, als ob der Strom direkt ausgeschaltet würde.
Standardeinstellung: 0
/proc/sys/kernel/domainname
Mit dieser Datei können Sie den Netzwerkdomänennamen konfigurieren. Es gibt keinen Standardwert. Der Domänenname wurde möglicherweise festgelegt.
/proc/sys/kernel/hostname
Mit dieser Datei können Sie Netzwerk-Hostnamen konfigurieren. Es gibt keinen Standardwert. Der Hostname wurde möglicherweise festgelegt oder nicht.
/proc/ss/kernel/msgmax
Diese Datei gibt die maximale Länge von Nachrichten an, die von einem Prozess an einen anderen gesendet werden. Die Nachrichtenübermittlung zwischen Prozessen erfolgt im Speicher des Kernels und wird nicht auf die Festplatte ausgelagert. Wenn Sie also diesen Wert erhöhen, erhöht sich auch die vom Betriebssystem verwendete Speichermenge.
Standardeinstellung: 8192
/proc/sys/kernel/msgmnb
Diese Datei gibt die maximale Anzahl von Bytes in einer Nachrichtenwarteschlange an.
Standardeinstellung: 16384
/proc/sys/kernel/msgmni
Diese Datei gibt die maximale Anzahl von Message Queuing-IDs an.
Standardeinstellung: 16
/proc/sys/kernel/panic
Diese Datei gibt an, wie lange (in Sekunden) der Kernel wartet, bevor er neu startet, wenn eine „Kernel-Panik“ auftritt. Eine Einstellung von null (0) Sekunden verhindert einen Neustart im Falle einer Kernel-Panik.
Standardeinstellung: 0
/proc/sys/kernel/printk
Diese Datei verfügt über vier numerische Werte, die basierend auf ihrer Wichtigkeit definieren, wohin die Protokollierungsnachricht gesendet wird. Weitere Informationen zu den verschiedenen Protokollebenen finden Sie auf der Manpage syslog(2). Die vier Werte dieser Datei sind:
Konsolenprotokollebene: Nachrichten mit einer höheren Priorität als diesem Wert werden auf der Konsole gedruckt
Standardstufe für die Nachrichtenprotokollierung: Nachrichten ohne Priorität werden mit dieser Priorität gedruckt
Minimale Konsolenprotokollstufe: Der Mindestwert, auf den die Konsolenprotokollstufe eingestellt werden kann (höchste Priorität)
Standard-Konsolenprotokollebene: Der Standardwert für die Konsolenprotokollebene
Standardeinstellung: 6 4 1 7
/proc/sys/kernel/shmall
Diese Datei ist die Gesamtmenge des gemeinsam genutzten Speichers (in Bytes), die zu einem bestimmten Zeitpunkt auf dem System verfügbar ist.
Standardeinstellung: 2097152
/proc/sys/kernel/shmax
Diese Datei gibt die maximale Größe (in Bytes) der vom Kernel zugelassenen Shared-Memory-Segmente an.
Standardeinstellung: 33554432
/proc/sys/kernel/shmmni
Diese Datei stellt die maximale Anzahl gemeinsam genutzter Speichersegmente dar, die für das gesamte System verwendet werden.
Standardeinstellung: 4096
/proc/sys/kernel/sysrq
Wenn der in dieser Datei angegebene Wert ungleich Null ist, wird der System Request Key aktiviert.
Standardeinstellung: 0
/proc/sys/kernel/threads-max
Diese Datei gibt die maximale Anzahl von Threads an, die der Kernel verwenden kann.
Standardeinstellung: 2048
/proc/sys/net
/proc/sys/net/core/message_burst
Die Zeit (in 1/10 Sekunden), die zum Schreiben einer neuen Warnmeldung benötigt wird; andere während dieser Zeit empfangene Warnmeldungen werden verworfen. Dies wird verwendet, um Denial-of-Service-Angriffe zu verhindern, die von jemandem genutzt werden, der versucht, Ihr System mit Nachrichten zu „überfluten“.
Standardeinstellung: 50 (5 Sekunden)
/proc/sys/net/core/message_cost
Diese Datei enthält den Kostenwert, der jeder Warnmeldung zugeordnet ist. Je größer der Wert, desto wahrscheinlicher ist es, dass die Warnmeldung ignoriert wird.
Standardeinstellung: 5
/proc/sys/net/core/netdev_max_backlog
Diese Datei gibt die maximale Anzahl von Paketen an, die in die Warteschlange gestellt werden dürfen, wenn die Schnittstelle Pakete schneller empfängt, als der Kernel sie verarbeiten kann.
Standardeinstellung: 300
/proc/sys/net/core/optmem_max
Diese Datei gibt die maximal zulässige Puffergröße für jeden Socket an.
/proc/sys/net/core/rmem_default
Diese Datei gibt den Standardwert für die Puffergröße des Empfangssockets in Bytes an.
/proc/sys/net/core/rmem_max
Diese Datei gibt die maximale Größe des Empfangs-Socket-Puffers in Bytes an.
/proc/sys/net/core/wmem_default
Diese Datei gibt den Standardwert für die Größe des Sende-Socket-Puffers in Bytes an.
/proc/sys/net/core/wmem_max
Diese Datei gibt die maximale Größe des Sende-Socket-Puffers in Bytes an.
/proc/sys/net/ipv4
Alle IPv4- und IPv6-Parameter sind in der Dokumentation zum Kernel-Quellcode dokumentiert. Siehe die Datei /usr/src/linux/Documentation/networking/ip-sysctl.txt.
/proc/sys/net/ipv6
Identisch mit IPv4.
/proc/sys/vm
/proc/sys/vm/buffermem
Diese Datei steuert die Menge des gesamten Systemspeichers, der als Pufferspeicher verwendet wird (ausgedrückt als Prozentsatz). Es verfügt über drei Werte, die durch Schreiben einer durch Leerzeichen getrennten Zahlenfolge in die Datei festgelegt werden.
Mindestprozentsatz des für Puffer verwendeten Speichers
Wenn eine Situation eintritt, in der nicht mehr viel Systemspeicher übrig ist und der Systemspeicher reduziert wird, versucht das System, die Menge an Pufferspeicher beizubehalten.
Maximaler Prozentsatz des für Puffer verwendeten Speichers
Standardeinstellung: 2 10 60
/proc/sys/vm/freepages
Diese Datei steuert, wie das System auf verschiedene Ebenen des verfügbaren Speichers reagiert. Es verfügt über drei Werte, die durch Schreiben einer durch Leerzeichen getrennten Zahlenfolge in die Datei festgelegt werden.
Der Kernel darf nur dann etwas Speicher zuweisen, wenn die Anzahl der verfügbaren Seiten im System eine Mindestgrenze erreicht.
Wenn die Anzahl der freien Seiten im System unter diese Grenze fällt, leitet der Kernel den Austausch auf aggressivere Weise ein, um Speicher freizugeben und die Systemleistung aufrechtzuerhalten.
Der Kernel wird versuchen, diese Menge an Systemspeicher verfügbar zu halten. Werte darunter ermöglichen den Kernel-Austausch.
Standardeinstellung: 512 768 1024
/proc/sys/vm/kswapd
Diese Datei steuert, wie der Kernel Speicher austauschen darf. Es verfügt über drei Werte, die durch Schreiben einer durch Leerzeichen getrennten Zahlenfolge in die Datei festgelegt werden:
Die maximale Anzahl an Seiten, die der Kernel gleichzeitig versucht, freizugeben. Wenn Sie die Bandbreite beim Speicheraustausch erhöhen möchten, müssen Sie diesen Wert erhöhen.
Die Mindestanzahl, wie oft der Kernel versucht, eine Seite pro Austausch freizugeben.
Die Anzahl der Seiten, die der Kernel in einem Swap schreibt. Dies hat den größten Einfluss auf die Systemleistung. Je größer dieser Wert ist, desto mehr Daten werden ausgetauscht und desto weniger Zeit wird für Festplattensuchen aufgewendet. Ein zu großer Wert kann sich jedoch negativ auf die Systemleistung auswirken, indem die Anforderungswarteschlange „überflutet“ wird.
Standardeinstellung: 512 32 8
/proc/sys/vm/pagecache
Diese Datei erledigt die gleiche Aufgabe wie /proc/sys/vm/buffermem, ist jedoch eine Speicherzuordnung der Datei und ein allgemeiner Cache.
Machen Sie die Kernel-Einstellungen dauerhaft
Hier wird ein praktisches Dienstprogramm zum Ändern aller Kernel-Parameter im Verzeichnis /proc/sys bereitgestellt. Es ermöglicht Ihnen, den laufenden Kernel zu ändern (ähnlich den oben verwendeten Echo- und Umleitungsmethoden), verfügt aber auch über eine Konfigurationsdatei, die beim Systemstart ausgeführt wird. Dadurch können Sie Änderungen am laufenden Kernel vornehmen und diese Änderungen zur Konfigurationsdatei hinzufügen, sodass sie auch nach Systemneustarts bestehen bleiben.
Dieses Dienstprogramm heißt sysctl und ist in der Manpage für sysctl(8) vollständig dokumentiert. Die Konfigurationsdatei von sysctl ist /etc/sysctl.conf und kann unter sysctl.conf (8) bearbeitet und aufgezeichnet werden. sysctl behandelt Dateien unter /proc/sys als einzelne Variablen, die geändert werden können. Daher stellt die Datei /proc/sys/fs/file-max unter /proc/sys als Beispiel die maximal zulässige Anzahl von Dateihandles im System dar. Diese Datei wird als fs.file-max dargestellt.
Dieses Beispiel enthüllt einige wunderbare Dinge über die Sysctl-Notation. Da sysctl nur Variablen im Verzeichnis /proc/sys ändern kann und die Leute immer denken, dass sich Variablen in diesem Verzeichnis befinden, wird dieser Teil des Variablennamens (/proc/sys) weggelassen. Eine weitere zu beachtende Änderung ist die Ersetzung des Verzeichnistrennzeichens (Schrägstrich /) durch den englischen Punkt (Punkt).
Es gibt zwei einfache Regeln zum Konvertieren von Dateien in /proc/sys in Variablen in sysctl:
Entfernen Sie den vorderen Teil /proc/sys.
Wandeln Sie Schrägstriche in Dateinamen in Punkte um.
Mit diesen beiden Regeln können Sie jeden Dateinamen in /proc/sys in einen beliebigen Variablennamen in sysctl konvertieren. Die allgemeine Konvertierung von Datei in Variable ist:
/proc/sys/dir/file --> dir.file
dir1.dir2.file -> /proc/sys/dir1/dir2/file
Mit dem Befehl sysctl -a können Sie alle veränderbaren Variablen und deren aktuelle Einstellungen anzeigen.
Variablen können auch mit sysctl geändert werden, was genau das Gleiche bewirkt wie die oben verwendete echo-Methode. Seine Darstellung ist:
sysctl -w dir.file="Wert"
Am Beispiel von „file-max“ können Sie den Wert mit einer der beiden folgenden Methoden auf 16384 ändern.