HFTKernel 7.3.3
Bessere Paketreihenfolge, zuverlässigerer I/O-Fortschritt und weniger unnötiges polling
Upstream-Basis: Linux 7.3.3. Kumulative Änderungen: Linux 7.3.2 und 7.3.3 gegenüber 7.3.1. Upstream-Veröffentlichungsdatum für beide Versionen: 6. November 2026.
Geordnete Übertragung bei belasteten Queues
Der Netzwerk-Scheduler erhält die Paketreihenfolge, wenn ein Treiber NETDEV_TX_BUSY zurückgibt. Erneut eingereihte Pakete gelangen in ihrer ursprünglichen Reihenfolge an den Anfang der Liste ausstehender Pakete.
Im Upstream-TCP-Test mit vier Streams über ein veth-Paar mit einer pfifo qdisc stieg der throughput von ungefähr 40 auf 76 Gbps. Die Änderung beseitigte etwa 1.3 Millionen out-of-order segments und 15,000 bis 37,000 retransmissions pro Testintervall von 15 Sekunden.
Konsistenter VLAN hardware offload
Bei reorder_hdr=off übergeben geeignete Frames ihren VLAN tag an die Metadata für die NIC-seitige Einfügung und behalten gleichzeitig das erwartete Layout am Ausgang des VLAN-Geräts bei. Dadurch bleibt die Hardware-Einfügung von VLAN tags mit checksum offload und segmentation offload kompatibel, einschließlich der entsprechenden packet-socket- und AF_XDP copy-mode-Pfade.
NAPI busy polling mit Berücksichtigung der Deadline
io_uring begrenzt busy polling auf das verbleibende Warteintervall. Ist eine absolute Deadline bereits abgelaufen, wird das polling-Budget auf null gesetzt, sodass das Warten umgehend beendet werden kann.
Dynamisch erfasste NAPI-Einträge verfallen jetzt nach 60 Sekunden Inaktivität. Lange laufende Rings prüfen veraltete Queue-Kennungen nicht weiter und richten ihr polling damit auf aktuellen Traffic aus.
Zuverlässige Wakeups für zurückgestellte Arbeit und Fortschritt bei Completions
IORING_SETUP_DEFER_TASKRUN veröffentlicht den sleep state der wartenden Task, bevor deren wakeup credit sichtbar wird. Producers können den Consumer zuverlässig benachrichtigen, sobald neue lokale task work vorliegt. Die BPF-gesteuerte Warteschleife hält dieselbe Reihenfolge ein.
Wenn ausstehende overflow completions nicht in die completion queue passen, gibt io_uring die Kontrolle an Userspace zurück, damit die Anwendung die Queue leeren kann. Dies schafft einen expliziten Fortschrittspfad für completion queues mit unterschiedlich großen Einträgen.
Zuverlässigerer Fortschritt für real-time consumers
Die lockless task-work queue schützt die zweistufige Veröffentlichung durch den Producer mit einem kurzen Abschnitt, in dem preemption deaktiviert ist. Ein SCHED_FIFO-Consumer, der sich eine CPU mit einem Producer niedrigerer Priorität teilt, sieht eine abgeschlossene Veröffentlichung, statt den Producer mitten im Update zu unterbrechen.
Asynchrone private-futex-Waits bereiten den process-private hash vor, bevor der Waiter registriert wird. Wakeups bleiben beim anschließenden Erstellen von Threads und bei Änderungen der Hash-Konfiguration auf den aktiven Hash abgestimmt.
Weniger unnötige SQPOLL-Aktivität
SQPOLL kann schlafen, während ein Ring deaktiviert ist, auch wenn bereits submission entries vorbereitet wurden. Beim Aktivieren des Rings wird der polling-Thread geweckt. Anwendungen können ihre Startkonfiguration vorbereiten, ohne eine CPU durch wiederholte Prüfungen noch nicht freigegebener Arbeit zu belegen.
Genauer begrenzte asynchrone I/O workers
io_uring bestimmt die Zieldatei, bevor Arbeit an io-wq zugewiesen wird. Forced-async-Operationen auf regulären Dateien und Blockgeräten halten die Grenzen für bounded workers ein, einschließlich der konfigurierten Limits von IORING_REGISTER_IOWQ_MAX_WORKERS.
Buffered writes in dieselbe reguläre Datei werden durch inode-basiertes Hashing koordiniert. Dadurch konkurrieren weniger Workers um denselben inode lock. Die Identität der Datei steht fest, sobald die Anfrage in die work queue gelangt.
Zuverlässige receive buffers bei größerem Umfang
Zero-copy receive berechnet Buffer-Offsets vor dem Shiften mit 64-Bit-Arithmetik. Completion entries identifizieren den richtigen Buffer auch jenseits der ersten 4 GiB einer registrierten receive area, sodass consumption und refill aufeinander abgestimmt bleiben.
Bei incremental provided buffers und multi-buffer receive bundles wird Teilfortschritt abgeschlossen, bevor eine andere Anfrage den verbleibenden Speicher erneut verwenden kann. Anwendungen erhalten die tatsächlich übertragene Länge und setzen an dieser Grenze fort; diese MSG_WAITALL-Operationen können ein kurzes Ergebnis zurückgeben.
Korrekte clock domains bei Updates absoluter Timeouts
Updates absoluter Timeouts verwenden bei der Umrechnung des time namespace des Aufrufers in Hostzeit die Clock des bestehenden Timers. CLOCK_MONOTONIC, CLOCK_BOOTTIME und CLOCK_REALTIME behalten ihre jeweilige Semantik.
Dadurch bleiben asynchrone Deadlines für Dienste konsistent, die time namespaces und unterschiedliche clock domains für Timeouts verwenden.
Vollständigeres memory accounting
Task-to-ring metadata und personality XArrays werden memory cgroups zugerechnet. Metadata registrierter Buffer und resource nodes fließen ebenfalls in das memcg accounting ein, sodass kernelseitiger I/O-Speicher in den Budgets der Dienste erfasst wird.
Beim XArray teardown werden leere interne Knoten freigegeben, die nach erfolglosen Einfügeversuchen verbleiben. Wiederholtes Erstellen und Bereinigen von Rings gibt diese Metadata-Allokationen frei und hebt ihre Anrechnung auf.
Zuverlässigerer Lebenszyklus von HugeTLB-Seiten
Der Pfad für anonymous HugeTLB faults schließt die Zustandsupdates und das Entsperren des folio ab, bevor der page-table lock freigegeben wird. Die Initialisierung bleibt mit gleichzeitigem unmapping und page reclamation koordiniert und stärkt damit private huge-page mappings für große Anwendungsbuffer.
Abgestimmter teardown von IRQ und Timing-Geräten
Die Bereinigung von threaded IRQ behält irqaction bei, bis ausstehende exit task work abgeschlossen ist. So bleibt die Lebensdauer der Ressource auch im Pfad für einen abnormalen Thread-Austritt erhalten.
Steueroperationen für den PPS generator werden mit der Abmeldung der Quelle synchronisiert. Bereits laufende Operationen enden bei gültigem Treiberzustand; nachfolgende Operationen erhalten nach der Entfernung ENODEV. Damit erhält Timing-Service-Software eine klare Grenze im Gerätelebenszyklus.
Konsistenterer Hostzustand bei KVM
Auf Intel VMX Hosts löschen Änderungen aus Userspace, die eine vCPU ausführbar machen, bei Bedarf auch einen von der Hardware erfassten halt. Dadurch bleibt der Hardware-Ausführungszustand beim Reset und Neustart auf den virtual-machine monitor abgestimmt.
AMD SVM aktualisiert die ASID generation in beiden Kontrollblöcken für nested virtualization nach einem Wechsel der physischen CPU. Address-space identifiers bleiben beim Wechsel verschachtelter vCPUs zwischen Prozessoren aufeinander abgestimmt.
In Linux 7.3.3 hinzugefügte Verbesserungen für Xen backends
Das abschließende kumulative Update ergänzt drei Verbesserungen für Xen backend Deployments. Das Lesen von Block-backend-Statistiken wird mit dem frontend teardown synchronisiert. Network-backend-Statistiken bleiben während der Queue-Bereinigung geschützt. Die Bereinigung der multicast list erfolgt, nachdem die Sende- und Empfangsverarbeitung gestoppt wurde.
Zusammen halten diese Änderungen Monitoring, den Zustand virtueller Netzwerke und die Freigabe von Backend-Ressourcen beim Trennen und Neukonfigurieren von Geräten aufeinander abgestimmt.
Unterstützte Betriebssysteme
Der Paketkatalog von HFTKernel umfasst 24 Betriebssystemziele:
- Ubuntu 20.04 / 22.04 / 24.04 / 26.04 LTS
- Debian 11 / 12 / 13
- RHEL-kompatible Systeme, AlmaLinux, Rocky Linux 8 / 9 / 10
- CentOS Stream 9 / 10
- Fedora Linux 44
- Amazon Linux 2023, Cloud-Profil
- ALT Linux p11 / Simply Linux 11
- Astra Linux 1.8
- Arch Linux base-devel
- NixOS-kompatible Basis.
Installation mit einem Befehl
curl -fsSL https://hftkernel.com/install.sh | sudo bash
Der Installer erkennt Betriebssystem und Deployment-Profil, verifiziert das passende Paket und installiert es. Ein manueller Neustart aktiviert den installierten Kernel.
Versionsschwerpunkt
Die Übertragungsreihenfolge erhalten, asynchrone Arbeit voranbringen, unnötiges polling vermeiden und eine klare Zuständigkeit für Speicher und Geräteressourcen bewahren.