In den Quellcode der Linux-Kernel, auf dessen Grundlage die Version 6.15 entsteht, wurde ein Satz von Ănderungen mit Optimierungen aufgenommen, die in bestimmten Situationen die Leistung von Netzwerkoperationen erheblich steigern.
- Die Optimierung von GRO (Generic Receive Offload), die mehrere kleine Pakete zu einem groĂen zusammenfĂŒhrt, wird nun aktiviert, wenn die Paketverarbeitung auf eine andere CPU (zur Lastenverteilung) umgeschaltet wird, wĂ€hrend das XDP (eXpress Data Path)-Subsystem verwendet wird, das die Verarbeitung von Paketen auf der Ebene des Netzwerktreibers vor der Ăbergabe an den Netzwerkstack ermöglicht. Der Leistungsgewinn bei der Verarbeitung von TCP-Strömen durch die Anwendung der Optimierung kann bis zu doppelt so hoch sein.
- Unter starker Last wurde die Leistung der Funktion connect() durch den Austausch der Spin-Locks gegen den Synchronisierungsmechanismus RCU (Read-Copy-Update) bei der Suche nach VerbindungsinformationseintrĂ€gen (Quellen- und Zieladressen und Ports) verdoppelt. IP-Adressen ZusĂ€tzlich wurde eine Hash-Optimierung durchgefĂŒhrt, die zu einem weiteren Leistungszuwachs von 229 % fĂŒhrte.
- Die Implementierung von MPTCP (Multipath TCP), einer Erweiterung des TCP-Protokolls zur gleichzeitigen Paketzustellung ĂŒber mehrere Routen durch verschiedene Netzwerkschnittstellen, die an unterschiedliche IP-Adressen gebunden sind, wurde beschleunigt. MPTCP im Einzelstrombetrieb wurde um 29 % beschleunigt.
- In netfilter wurde die DurchfĂŒhrung von Routen-Suchoperationen in der FIB (Forwarding Information Base) bei vorhandenen Sockets eingestellt. Dank dieser Optimierung ist die Leistung um 20 % gestiegen.
- Die UDP-Leistung unter Flutbedingungen (flood) wurde um 10 % erhöht, indem unnötige Operationen mit der Struktur sk_tsflags beim Empfang von Paketen ausgeschlossen wurden.
DarĂŒber hinaus wurde im speziell entwickelten Linux-Kernel 6.15 eine Ănderung fĂŒr den exFAT-Dateisystemtreiber implementiert, die die Dateilöschoperationen beschleunigt. Zuvor sendete der exFAT-Treiber fĂŒr jeden freigegebenen Cluster einer zu löschenden Datei separate 'discard'-Anfragen an die SpeichergerĂ€te. Die optimierte Version gruppiert die Anfragen, was dazu fĂŒhrte, dass die Löschzeit einer Testdatei mit einer GröĂe von 80 GB von 286 Sekunden auf 1,6 Sekunden verkĂŒrzt wurde.
Quelle: opennet.ru
