HFTKernel 7.2.11
Réseau zero-copy renforcé, files NIC ordonnées et matériel temporel plus fiable
Base amont : Linux 7.2.11. Changements depuis Linux 7.2.10. Date de publication : 15 octobre 2026.
Propriété des tampons mlx5 AF_XDP renforcée
HFTKernel 7.2.11 renforce la réception AF_XDP zero-copy sur les adaptateurs NVIDIA mlx5.
Pour les files de réception striding, les tentatives de remplissage MPWQE conservent désormais un état explicite de propriété pour chaque tampon XSK. Si l'allocation échoue temporairement, une tentative NAPI ultérieure ne libère plus la même trame UMEM via un pointeur périmé.
Le chemin de nouvelle tentative est désormais idempotent :
- chaque tampon XSK initial est libéré une seule fois ;
- les remplissages partiels conservent leur état de propriété ;
- une allocation réussie remplace le tampon et efface le marqueur de libération ;
- les tentatives suivantes ne concernent que les tampons restant à remplacer.
Un test amont AF_XDP de 20 secondes sous pression a provoqué 1,575,262 échecs d'allocation de tampons sans descripteurs invalides, erreurs WQE ou avertissements du noyau.
L'ancienne file de réception cyclique reçoit la même protection de propriété.
Dans le test amont correspondant, un trafic UDP de 64 octets était présenté à 12 Mpps. Le chemin mis à jour a traité 356,904,225 paquets en 30 secondes, dont 571,405 événements xdp_rx_ring_full, sans erreur de propriété ou de données.
Pour HFTKernel, cela renforce l'ingestion rapide de données de marché, les gestionnaires de flux AF_XDP, les systèmes de distribution de paquets et les captures zero-copy sous pression des anneaux de réception.
Notifications TX doorbell Intel ICE ordonnées
Le pilote Intel ICE utilise à nouveau des écritures MMIO ordonnées pour publier les notifications TX doorbell des files.
Le pilote met d'abord à jour le suivi Dynamic Queue Limits en mémoire ordinaire, puis informe la NIC de la disponibilité de nouveaux descripteurs. L'écriture ordonnée garantit la visibilité globale du suivi avant que le périphérique puisse terminer le travail transmis.
Cela est particulièrement important sur ARM64, où writel_relaxed() ne fournit pas l'ordre requis entre la mémoire ordinaire et MMIO.
Le changement a été testé avec un adaptateur Intel E810-XXV sous charge réseau soutenue. Le chemin ordonné a maintenu la synchronisation entre les complétions NIC et le suivi logiciel des files.
Pour HFTKernel, cela renforce le traitement TX soutenu sur le matériel Intel compatible et préserve la cohérence entre soumission des descripteurs, exécution matérielle et suivi des complétions.
Ordre correct des complétions mlx5 ICOSQ
Le pilote mlx5 met désormais à jour la notification doorbell de la file de complétion avant de publier le compteur consommateur ICOSQ.
Un dma_wmb() maintient l'ordre des deux opérations :
- L'espace CQ est libéré pour le périphérique.
- Le compteur consommateur logiciel avance.
- Le périphérique voit la capacité de complétion actualisée avant la soumission de tâches de contrôle internes supplémentaires.
Cela préserve le cycle de vie de la file de complétion et maintient l'alignement du traitement interne des files d'envoi mlx5 entre l'hôte et la NIC.
Cycle de vie Google GVE AF_XDP plus fiable
Google Virtual Ethernet DQO reçoit un ensemble coordonné d'améliorations du cycle de vie AF_XDP zero-copy.
Les tampons XSK sont désormais libérés lorsqu'un descripteur de complétion RX signale une erreur. Les tampons transmis à la NIC sont aussi rendus lorsque les anneaux RX sont arrêtés ou réinitialisés.
L'arrêt du pool XSK utilise désormais la bonne variante de verrouillage NAPI lorsque les opérations de gestion des files détiennent déjà le verrou netdevice. La reconfiguration continue ainsi sans tenter de reprendre le même verrou.
Les changements d'arrêt de file et de pool XSK couvrent des scénarios de production observés dans Google Cloud.
Pour HFTKernel Cloud, cela facilite une installation, une reconfiguration, un redémarrage et un retrait propres d'AF_XDP sur les interfaces GVE DQO.
Estimation plus précise du délai PCIe OCP PTP
Le pilote OCP PTP utilise désormais KTIME_MAX comme borne supérieure initiale de l'estimation du délai PCIe.
Le maximum non signé précédent devenait négatif en ktime_t, empêchant les délais réellement mesurés de le remplacer. Le calcul mis à jour utilise le bon domaine temporel signé et maintient un ajustement valide de la fenêtre d'horodatage.
Cela améliore la compensation du délai PCIe des cartes de temps OCP compatibles et renforce la relation entre la fenêtre d'horodatage de l'hôte et la lecture de l'horloge matérielle.
Pour HFTKernel, cela fournit une base temporelle matérielle plus fiable pour la synchronisation PTP, la corrélation des horodatages et la mesure de latency.
État cpuset plus cohérent pendant les changements de cycle de vie CPU
HFTKernel 7.2.11 inclut plusieurs corrections cpuset pertinentes pour le placement CPU automatisé.
Lors de la mise hors ligne d'un CPU, guarantee_active_cpus() tient désormais compte de l'intervalle entre les changements du masque CPU actif et la propagation des masques cpuset effectifs mis à jour.
Le mode cgroup est évalué sous cpuset_mutex, maintenant la synchronisation de l'état hiérarchique et des mises à jour des masques.
La vérification du mode v2 utilise aussi un indicateur stable dédié au lieu de lire un pointeur racine cgroup susceptible de changer.
Ensemble, ces changements renforcent l'état cpuset lors :
- du branchement à chaud des CPU ;
- des montages et réassociations cgroup ;
- des changements de cycle de vie des services ;
- de la gestion automatisée des partitions CPU.
Pour HFTKernel, cela assure une séparation fiable des cœurs de trading, des cœurs réseau, des CPU de service et des charges de services.
Traitement borné des extractions de flux Open vSwitch
Les extractions de flux Open vSwitch via netlink maintiennent désormais les moitiés basses désactivées pendant chaque rappel d'extraction borné.
Auparavant, les réactivations locales répétées des moitiés basses pouvaient faire traiter au thread d'extraction lui-même l'accumulation de softIRQ. Sur un CPU occupé par les paquets, cette accumulation pouvait se renouveler continuellement.
Le chemin mis à jour limite le rappel aux entrées de flux placées dans la réponse netlink actuelle. Le traitement softIRQ des paquets reste dans les chemins réseau normaux au lieu d'être absorbé par le thread de contrôle d'extraction.
Pour HFTKernel Cloud et les profils réseau virtualisés, cela établit une séparation plus nette entre charge du chemin de données et diagnostic du plan de contrôle.
Création prévisible des anneaux io_uring
Les anneaux SQ, CQ et de tampons fournis ne sont plus imputés à RLIMIT_MEMLOCK, rétablissant leur sémantique de création habituelle.
Cela évite aux services ordinaires non privilégiés une limite artificielle du nombre d'anneaux liée à une mémoire déjà contrôlée par les cycles de vie io_uring et memory-cgroup.
Le cas de reproduction amont avec des anneaux de 4,096 entrées est revenu de 21 anneaux aux 64 attendus sous la limite memlock par défaut de 8 MiB.
Pour les régions mémoire composées io_uring réellement imputées, le suivi inclut désormais chaque page allouée, y compris les pages de fin dues à l'arrondi à une puissance de deux hors de la région logique demandée.
Si l'allocation composée dépasse la limite, io_uring peut recourir à une allocation en lot de taille exacte.
Cette combinaison fournit :
- une création prévisible de SQ et CQ ;
- une création prévisible des anneaux de tampons fournis ;
- un suivi précis des allocations composées épinglées ;
- une meilleure utilisation de la mémoire près des limites configurées.
Suivi correct de la mémoire verrouillée remappée
MREMAP_DONTUNMAP conserve désormais un suivi cohérent de locked_vm dans deux cas supplémentaires.
Les VMA anonymes verrouillées susceptibles de fusionner avec elles-mêmes restent séparées pour que source et destination conservent leur état de verrouillage correct.
Les remappages partiels de VMA verrouillées scindent la plage source avant le déplacement des tables de pages, alignant le suivi sur les pages restant à la source et celles représentées par la destination.
Pour HFTKernel, cela renforce le suivi du cycle de vie mémoire des applications utilisant des jeux de travail verrouillés et des remappages avancés.
Analyse AF_PACKET, Virtio, VLAN et GSO plus fiable
Les chemins réseau virtuels et sockets de paquets appliquent désormais une séquence cohérente d'analyse des en-têtes.
Les paquets GSO avec étiquette VLAN envoyés par AF_PACKET SOCK_RAW sont analysés après application des métadonnées Virtio. Cela préserve les bonnes positions des en-têtes réseau et transport et évite une analyse redondante.
Les paquets GSO associés à Virtio sont toujours analysés lorsque les métadonnées de déport de somme de contrôle ne donnent pas la position du transport. Cela garantit que :
- le protocole réseau est validé ;
- l'en-tête de transport est présent dans les données linéaires ;
- le déplacement de transport est initialisé ;
- les options IPv4 et les extensions d'en-tête IPv6 sont correctement traitées.
Les déplacements d'analyse de flux sont aussi correctement traités pour les tampons dépassant 64 KiB, notamment BIG TCP et les grandes trames AF_PACKET PACKET_VNET_HDR. Le chemin d'analyse de flux BPF reçoit la même protection.
Pour HFTKernel, cela renforce la capture et la relecture de paquets, TUN/TAP, Virtio, la classification BPF et les passerelles virtuelles.
Réception TCP zero-copy renforcée avec mémoire de périphérique
La réception TCP zero-copy reconnaît désormais les fragments net_iov sans support de page avant de demander des indications de mappage de pages.
Cela couvre la mémoire de périphérique reposant sur DMA-BUF et les types net_iov io_uring.
Les données lisibles reposant sur des pages peuvent toujours être copiées ou mappées normalement. Lorsque le fragment suivant appartient à la mémoire d'un périphérique, le noyau renvoie la bonne indication de saut au lieu de le traiter comme une page ordinaire.
Cela renforce l'interaction entre réception TCP zero-copy, mémoire de périphérique, DMA-BUF et tampons réseau io_uring.
Configuration plus sûre de XDP et de la séparation en-tête/données TCP
Les périphériques réseau reconnaissent désormais les programmes XDP à tampon unique attachés via bpf_link pour décider si la séparation en-tête/données TCP peut être activée.
Le noyau préserve ainsi la compatibilité du programme XDP attaché avec la disposition des tampons de réception NIC, que le programme soit installé par l'ancien chemin ou par l'API BPF link.
Veth actualise aussi correctement la capacité de transmission XDP du pair après un changement GRO pendant que l'interface est inactive, alignant les chemins de redirection des conteneurs et espaces de noms sur la configuration active du pair.
Mappage IOMMU direct des ressources MMIO
Les ressources MMIO portant DMA_ATTR_MMIO évitent désormais les tampons intermédiaires SWIOTLB.
MMIO ne peut pas être copié via un tampon intermédiaire. Le chemin mis à jour passe directement au mappage IOMMU IOVA, y compris pour les ressources non alignées sur une page.
Pour HFTKernel Hardware, cela renforce le mappage des ressources des périphériques et accélérateurs derrière IOMMU et retire un chemin intermédiaire incompatible de la configuration MMIO.
Protection de l'invalidation TLB AMD
HFTKernel 7.2.11 détecte AMD TLBI Erratum #1718.
Sur les processeurs concernés, une séquence INVLPGB et TLBSYNC peut ne pas invalider l'entrée TLB visée. Lorsque le microcode mis à jour n'est pas disponible, le noyau active un contournement logiciel.
Cela renforce la correction des transitions d'espace d'adressage et des invalidations TLB sur les systèmes AMD compatibles.
TX et récupération PCIe Broadcom NetXtreme-E renforcés
Le pilote Broadcom bnxt_en mappe désormais toute la longueur complétée des paquets TX courts.
Cela aligne la longueur DMA sur la taille présentée au matériel, y compris les petites trames de contrôle transmises via VLAN et macvlan sur les adaptateurs NetXtreme-E compatibles.
La récupération PCIe rétablit aussi la configuration BAR de façon cohérente pour les réinitialisations fatales et non fatales. La visibilité MMIO, le bus mastering et le décodage mémoire sont restaurés dans un ordre contrôlé après récupération.
Outils de mesure inclus
HFTKernel 7.2.11 inclut :
cpujitterPour les interruptions d'exécution CPU, les interférences de l'ordonnanceur, l'activité IRQ et softIRQ et les queues de latency.
memjitterPour l'allocation, first-touch, les jeux de travail verrouillés et le comportement sous pression mémoire.
irqjitterPour l'analyse de l'activité IRQ et softIRQ.
Ces outils relient les changements du noyau au comportement de la pile applicative complète.
Résultat HFTKernel 7.2.11
HFTKernel 7.2.11 renforce le système d'exploitation autour des applications sensibles à la latency :
- les tentatives mlx5 AF_XDP préservent la propriété UMEM sous pression des anneaux et des allocations ;
- Google GVE gère les tampons AF_XDP de manière cohérente lors des erreurs et événements du cycle de vie des files ;
- Intel ICE publie l'état de la file TX avant de notifier la NIC par doorbell ;
- mlx5 ordonne les mises à jour d'espace de complétion avec l'avancement de la file d'envoi interne ;
- les cartes OCP PTP maintiennent une compensation correcte du délai PCIe ;
- l'état cpuset reste cohérent lors des changements du cycle de vie CPU et cgroup ;
- Open vSwitch sépare l'extraction des flux d'une accumulation softIRQ non bornée ;
- les anneaux io_uring conservent une création prévisible et un suivi mémoire précis ;
- les chemins AF_PACKET, Virtio, GSO, BIG TCP, XDP et TCP zero-copy gagnent un traitement renforcé des tampons et en-têtes ;
- l'invalidation TLB AMD et le mappage MMIO IOMMU reçoivent une protection propre au matériel.
Ensemble, ces changements offrent une base plus prévisible et mesurable pour le HFT, les données de marché, les passerelles d'exécution, le réseau cloud, le traitement des paquets et les infrastructures à horodatage matériel.