HFTKernel 7.2.11
Robustere Zero-Copy-Netzwerke, geordnete NIC-Warteschlangen und zuverlässigere Zeithardware
Upstream-Basis: Linux 7.2.11. Änderungen seit Linux 7.2.10. Veröffentlichungsdatum: 15. Oktober 2026.
Robustere mlx5-AF_XDP-Pufferzuständigkeit
HFTKernel 7.2.11 stärkt die AF_XDP-Zero-Copy-Empfangsverarbeitung auf NVIDIA-mlx5-Adaptern.
Bei Striding-Empfangswarteschlangen bewahren MPWQE-Refill-Wiederholungen jetzt den expliziten Eigentumszustand jedes XSK-Puffers. Scheitert eine Allokation vorübergehend, gibt ein späterer NAPI-Wiederholungsversuch denselben UMEM-Frame nicht mehr über einen veralteten Zeiger frei.
Der Wiederholungspfad ist jetzt idempotent:
- jeder ursprüngliche XSK-Puffer wird einmal freigegeben;
- teilweise abgeschlossene Refills behalten ihren Eigentumszustand;
- erfolgreiche Allokation ersetzt den Puffer und löscht die Freigabemarkierung;
- weitere Wiederholungen bearbeiten nur Puffer, die noch ersetzt werden müssen.
Ein 20-sekündiger Upstream-AF_XDP-Lasttest durchlief 1,575,262 Pufferallokationsfehler ohne ungültige Deskriptoren, WQE-Fehler oder Kernel-Warnungen.
Die ältere zyklische Empfangswarteschlange erhält denselben Eigentumsschutz.
Im entsprechenden Upstream-Test wurde UDP-Verkehr mit 64-Byte-Paketen bei 12 Mpps angeboten. Der aktualisierte Pfad verarbeitete in 30 Sekunden 356,904,225 Pakete einschließlich 571,405 xdp_rx_ring_full-Ereignissen ohne Eigentums- oder Datenfehler.
Für HFTKernel stärkt dies hochfrequente Marktdatenaufnahme, AF_XDP-Feed-Handler, Paketverteilungssysteme und Zero-Copy-Erfassungsaufgaben unter Empfangsringdruck.
Geordnete Intel-ICE-TX-Doorbells
Der Intel-ICE-Treiber verwendet beim Veröffentlichen von TX-Warteschlangen-Doorbells wieder geordnete MMIO-Schreibzugriffe.
Der Treiber aktualisiert zuerst die Dynamic-Queue-Limits-Buchführung im normalen Speicher und meldet der NIC dann neue verfügbare Deskriptoren. Der geordnete Schreibzugriff stellt sicher, dass die Warteschlangenbuchführung global sichtbar ist, bevor das Gerät die übertragene Arbeit abschließen kann.
Dies ist besonders auf ARM64 wichtig, wo writel_relaxed() nicht die erforderliche Reihenfolge zwischen normalem Speicher und MMIO gewährleistet.
Die Änderung wurde mit einem Intel-E810-XXV-Adapter unter anhaltender Netzwerklast getestet. Der geordnete Pfad hielt NIC-Abschluss und Software-Warteschlangenbuchführung synchron.
Für HFTKernel stärkt dies anhaltende TX-Verarbeitung auf kompatibler Intel-Hardware und erhält eine konsistente Beziehung zwischen Deskriptoreinreichung, Hardwareausführung und Abschlussbuchführung.
Korrekte mlx5-ICOSQ-Abschlussreihenfolge
Der mlx5-Treiber aktualisiert jetzt die Doorbell der Abschlusswarteschlange, bevor er den ICOSQ-Verbraucherzähler veröffentlicht.
Ein dma_wmb() hält die beiden Operationen in der richtigen Reihenfolge:
- CQ-Platz wird für das Gerät freigegeben.
- Der Software-Verbraucherzähler schreitet voran.
- Das Gerät sieht die aktualisierte Abschlusskapazität, bevor weitere interne Steuerungsarbeit eingereicht wird.
Dies erhält den Lebenszyklus der Abschlusswarteschlange und hält die interne mlx5-Sendewarteschlangenverarbeitung zwischen Host und NIC abgestimmt.
Zuverlässigerer Google-GVE-AF_XDP-Lebenszyklus
Google Virtual Ethernet DQO erhält eine koordinierte Reihe von Verbesserungen für den AF_XDP-Zero-Copy-Lebenszyklus.
XSK-Puffer werden jetzt freigegeben, wenn ein RX-Abschlussdeskriptor einen Fehler meldet. An die NIC übergebene Puffer werden auch beim Stoppen oder Zurücksetzen von RX-Ringen zurückgegeben.
Das Herunterfahren des XSK-Pools verwendet jetzt die richtige NAPI-Locking-Variante, wenn Warteschlangenverwaltungsoperationen bereits den netdevice-Lock halten. Dadurch läuft die Warteschlangenneukonfiguration weiter, ohne denselben Lock zweimal anzufordern.
Die Änderungen am Warteschlangenstopp und XSK-Pool decken Produktionsszenarien ab, die in Google-Cloud-Umgebungen beobachtet wurden.
Für HFTKernel Cloud unterstützt dies saubere AF_XDP-Einrichtung, Neukonfiguration, Neustart und Abbau auf GVE-DQO-Schnittstellen.
Genauere PCIe-Verzögerungsschätzung in OCP PTP
Der OCP-PTP-Treiber verwendet jetzt KTIME_MAX als anfängliche Obergrenze für die PCIe-Verzögerungsschätzung.
Das bisherige vorzeichenlose Maximum wurde bei Darstellung als ktime_t negativ, sodass reale gemessene Verzögerungen es nicht ersetzen konnten. Die aktualisierte Berechnung verwendet den korrekten vorzeichenbehafteten Zeitbereich und erhält eine gültige Zeitstempelfensterkorrektur.
Dies verbessert den PCIe-Pfadverzögerungsausgleich für unterstützte OCP-Zeitkarten und stärkt die Beziehung zwischen dem Host-Zeitstempelfenster und dem Hardware-Uhr-Lesezugriff.
Für HFTKernel bietet dies eine sauberere Zeithardware-Basis für PTP-Synchronisierung, Zeitstempelkorrelation und latency-Messung.
Konsistenterer cpuset-Zustand bei CPU-Lebenszyklusänderungen
HFTKernel 7.2.11 enthält mehrere cpuset-Korrekturen für automatisierte CPU-Platzierung.
Beim Offlineschalten von CPUs berücksichtigt guarantee_active_cpus() jetzt das Intervall zwischen Änderungen der aktiven CPU-Maske und der Weitergabe aktualisierter effektiver cpuset-Masken.
Der Cgroup-Modus wird unter cpuset_mutex ausgewertet, wodurch Hierarchiezustand und Maskenaktualisierungen synchron bleiben.
Die v2-Modusprüfung verwendet außerdem ein eigenes stabiles Flag, statt einen möglicherweise wechselnden cgroup-root-Zeiger zu lesen.
Zusammen stärken diese Änderungen den cpuset-Zustand bei:
- CPU-Hotplug;
- Cgroup-Mount- und Rebind-Operationen;
- Dienstlebenszyklusänderungen;
- automatisierter CPU-Partitionsverwaltung.
Für HFTKernel unterstützt dies eine zuverlässige Trennung von Handelskernen, Netzwerkkernen, Housekeeping-CPUs und Dienstlasten.
Begrenzte Open-vSwitch-Flow-Dump-Verarbeitung
Open-vSwitch-Netlink-Flow-Dumps halten Bottom Halves jetzt während jedes begrenzten Dump-Callbacks deaktiviert.
Zuvor konnten wiederholte lokale Bottom-Half-Aktivierungen dazu führen, dass der Dump-Thread selbst den ausstehenden softIRQ-Rückstand abarbeitete. Auf einer stark ausgelasteten Paketverarbeitungs-CPU konnte dieser Rückstand ständig nachgefüllt werden.
Der aktualisierte Pfad begrenzt den Callback auf die Flow-Einträge in der aktuellen Netlink-Antwort. Paket-softIRQ-Verarbeitung bleibt in den normalen Netzwerkausführungspfaden, statt vom Flow-Dump-Steuerungsthread übernommen zu werden.
Für HFTKernel Cloud und virtualisierte Netzwerkprofile schafft dies eine klarere Grenze zwischen Datenpfadlast und diagnostischen Steuerungsoperationen.
Vorhersehbare io_uring-Ringeinrichtung
SQ-, CQ- und Provided-Buffer-Ringe werden nicht mehr auf RLIMIT_MEMLOCK angerechnet; ihre etablierte Einrichtungssemantik wird wiederhergestellt.
Dies verhindert, dass gewöhnliche unprivilegierte Dienste durch Speicher, der bereits über den io_uring- und Memory-Cgroup-Lebenszyklus kontrolliert wird, eine künstliche Ringanzahlgrenze erhalten.
Der Upstream-Reproducer mit Ringen zu 4,096 Einträgen erreichte unter dem standardmäßigen 8 MiB-memlock-Limit wieder die erwarteten 64 statt 21 Ringe.
Bei zusammengesetzten io_uring-Speicherbereichen, die tatsächlich angerechnet werden, umfasst die Buchführung jetzt jede allokierte Seite, einschließlich der Zweierpotenz-Restseiten außerhalb des angeforderten logischen Bereichs.
Würde die zusammengesetzte Allokation das Limit überschreiten, kann io_uring auf eine Bulk-Allokation exakter Größe zurückfallen.
Diese Kombination bietet:
- vorhersehbare SQ- und CQ-Erstellung;
- vorhersehbare Erstellung von Provided-Buffer-Ringen;
- genaue Buchführung für fixierte zusammengesetzte Allokationen;
- bessere Speichernutzung nahe konfigurierten Grenzen.
Korrekte Buchführung für gesperrten neu abgebildeten Speicher
MREMAP_DONTUNMAP erhält jetzt in zwei weiteren Fällen konsistente locked_vm-Buchführung.
Sich selbst zusammenführende gesperrte anonyme VMAs bleiben getrennt, damit Quelle und Ziel ihren korrekten Sperrzustand behalten.
Teilweise Remaps gesperrter VMAs teilen den Quellbereich vor dem Verschieben der Seitentabellen auf. So bleibt die Buchführung mit den an der Quelle verbleibenden und den vom Ziel repräsentierten Seiten abgestimmt.
Für HFTKernel stärkt dies die Speicherlebenszyklusbuchführung von Anwendungen, die gesperrte Arbeitsmengen mit fortgeschrittenen Remapping-Operationen kombinieren.
Zuverlässigeres Parsing von AF_PACKET, Virtio, VLAN und GSO
Virtuelle Netzwerk- und Paketsocket-Pfade verwenden jetzt eine einheitliche Sequenz zur Header-Analyse.
Mit VLAN markierte GSO-Pakete, die über AF_PACKET SOCK_RAW gesendet werden, werden nach Anwendung der Virtio-Metadaten analysiert. Dies erhält korrekte Positionen der Netzwerk- und Transport-Header und vermeidet doppelte Analyse.
Virtio-gestützte GSO-Pakete werden immer einer Flow-Analyse unterzogen, wenn Checksum-Offload-Metadaten keine Transportposition liefern. Dies stellt sicher, dass:
- das Netzwerkprotokoll validiert wird;
- der Transport-Header in linearen Daten vorhanden ist;
- der Transport-Offset initialisiert wird;
- IPv4-Optionen und IPv6-Erweiterungs-Header korrekt behandelt werden.
Flow-Analyse-Offsets werden auch für Paketpuffer über 64 KiB korrekt behandelt, einschließlich BIG TCP und großer AF_PACKET-PACKET_VNET_HDR-Frames. Der BPF-Flow-Dissector-Pfad erhält denselben Schutz.
Für HFTKernel stärkt dies Paketerfassung, Replay, TUN/TAP, Virtio, BPF-Klassifikation und virtuelle Gateways.
Robusterer TCP-Zero-Copy-Empfang mit Gerätespeicher
TCP-Zero-Copy-Empfang erkennt jetzt nicht seitengestützte net_iov-Fragmente, bevor er Seitenabbildungshinweise anfordert.
Dies umfasst sowohl DMA-BUF-gestützten Gerätespeicher als auch io_uring-net_iov-Typen.
Lesbare seitengestützte Daten können weiterhin normal kopiert oder abgebildet werden. Gehört das nächste Fragment zum Gerätespeicher, gibt der Kernel den richtigen Überspringhinweis zurück, statt es wie eine gewöhnliche Seite zu behandeln.
Dies stärkt das Zusammenspiel von TCP-Zero-Copy-Empfang, Gerätespeicher, DMA-BUF und io_uring-gestützten Netzwerkpuffern.
Sicherere XDP- und TCP-Header-Daten-Trennung
Netzwerkgeräte erkennen jetzt über bpf_link angehängte Single-Buffer-XDP-Programme bei der Entscheidung, ob TCP-Header-Daten-Trennung aktiviert werden kann.
Der Kernel erhält damit die Kompatibilität zwischen angehängtem XDP-Programm und NIC-Empfangspufferlayout, unabhängig davon, ob das Programm über den alten Pfad oder die BPF-Link-API installiert wurde.
Veth aktualisiert außerdem die XDP-Sendefähigkeit des Peers korrekt nach GRO-Konfigurationsänderungen bei deaktivierter Schnittstelle. Dadurch bleiben Container- und Namespace-Redirect-Pfade mit der aktiven Peer-Konfiguration abgestimmt.
Direkte IOMMU-Abbildung für MMIO-Ressourcen
MMIO-Ressourcen mit DMA_ATTR_MMIO umgehen jetzt SWIOTLB-Bounce-Verarbeitung.
MMIO kann nicht über einen Bounce-Puffer kopiert werden. Der aktualisierte Pfad geht direkt zur IOMMU-IOVA-Abbildung über, auch bei nicht seitenausgerichteten Ressourcen.
Für HFTKernel Hardware stärkt dies die Abbildung von Geräte- und Beschleunigerressourcen hinter einer IOMMU und entfernt einen inkompatiblen Zwischenpfad aus der MMIO-Einrichtung.
Schutz für AMD-TLB-Invalidierung
HFTKernel 7.2.11 erkennt AMD TLBI Erratum #1718.
Auf betroffenen Prozessoren kann eine Sequenz aus INVLPGB und TLBSYNC den vorgesehenen TLB-Eintrag nicht invalidieren. Wenn kein aktualisierter Microcode verfügbar ist, aktiviert der Kernel einen Software-Workaround.
Dies stärkt die Korrektheit von Adressraumwechseln und TLB-Invalidierungen auf unterstützten AMD-Systemen.
Robustere Broadcom-NetXtreme-E-TX- und PCIe-Wiederherstellung
Der Broadcom-Treiber bnxt_en bildet jetzt die vollständige aufgefüllte Länge kurzer TX-Pakete ab.
Dies hält die DMA-Länge mit der an die Hardware übergebenen Paketgröße abgestimmt, einschließlich kleiner Steuerframes über VLAN- und macvlan-Schnittstellen auf unterstützten NetXtreme-E-Adaptern.
Die PCIe-Wiederherstellung stellt außerdem die BAR-Konfiguration sowohl bei fatalen als auch nicht fatalen Reset-Pfaden konsistent wieder her. Geräte-MMIO-Sichtbarkeit, Bus Mastering und Speicherdekodierung werden nach der Wiederherstellung in kontrollierter Reihenfolge erneut eingerichtet.
Enthaltene Messwerkzeuge
HFTKernel 7.2.11 enthält:
cpujitterFür CPU-Ausführungslücken, Scheduler-Störungen, IRQ- und softIRQ-Aktivität sowie latency-Ausläufer.
memjitterFür Allokation, first-touch, gesperrte Arbeitsmengen und Verhalten unter Speicherdruck.
irqjitterZur Analyse von IRQ- und softIRQ-Aktivität.
Diese Werkzeuge verbinden Änderungen auf Kernel-Ebene mit dem Verhalten des gesamten Anwendungsstacks.
Ergebnis von HFTKernel 7.2.11
HFTKernel 7.2.11 stärkt das Betriebssystem rund um latency-empfindliche Anwendungen:
- mlx5-AF_XDP-Wiederholungen erhalten UMEM-Eigentumszustände unter Ring- und Allokationsdruck;
- Google GVE verwaltet AF_XDP-Puffer bei Fehler- und Warteschlangenlebenszyklusereignissen konsistent;
- Intel ICE veröffentlicht den TX-Warteschlangenzustand vor dem Auslösen der NIC-Doorbell;
- mlx5 hält Aktualisierungen des Abschlussraums mit dem Fortschritt interner Sendewarteschlangen geordnet;
- OCP-PTP-Karten erhalten korrekten PCIe-Verzögerungsausgleich;
- cpuset-Zustand bleibt bei CPU- und Cgroup-Lebenszyklusänderungen konsistent;
- Open vSwitch trennt Flow-Dump-Arbeit von einem unbegrenzten softIRQ-Rückstand;
- io_uring-Ringe behalten vorhersehbare Einrichtung und genaue Speicherbuchführung;
- AF_PACKET-, Virtio-, GSO-, BIG-TCP-, XDP- und TCP-Zero-Copy-Pfade erhalten robustere Puffer- und Header-Behandlung;
- AMD-TLB-Invalidierung und IOMMU-MMIO-Abbildung erhalten hardwarespezifischen Schutz.
Zusammen bieten diese Änderungen eine vorhersehbarere und messbarere Grundlage für HFT, Marktdaten, Ausführungsgateways, Cloud-Netzwerke, Paketverarbeitung und Infrastruktur mit Hardware-Zeitstempeln.