HFTKernel 7.2.11
Rete zero-copy più robusta, code NIC ordinate e hardware temporale più affidabile
Base upstream: Linux 7.2.11. Modifiche da Linux 7.2.10. Data di rilascio: 15 ottobre 2026.
Proprietà dei buffer mlx5 AF_XDP più solida
HFTKernel 7.2.11 rafforza l'elaborazione della ricezione zero-copy AF_XDP sugli adattatori NVIDIA mlx5.
Per le code di ricezione striding, i nuovi tentativi di refill MPWQE preservano ora lo stato esplicito di proprietà di ogni buffer XSK. Se l'allocazione fallisce temporaneamente, un successivo tentativo NAPI non rilascia più lo stesso frame UMEM attraverso un puntatore obsoleto.
Il percorso di ripetizione è ora idempotente:
- ogni buffer XSK originale viene rilasciato una sola volta;
- i refill parzialmente completati mantengono il proprio stato di proprietà;
- un'allocazione riuscita sostituisce il buffer e cancella il marcatore di rilascio;
- i tentativi successivi operano solo sui buffer che richiedono ancora la sostituzione.
Un test upstream AF_XDP sotto pressione di 20 secondi ha esercitato 1,575,262 errori di allocazione dei buffer senza descrittori non validi, errori WQE o avvisi del kernel.
La coda di ricezione ciclica legacy riceve la stessa protezione della proprietà.
Nel test upstream corrispondente è stato offerto traffico UDP da 64 byte a 12 Mpps. Il percorso aggiornato ha elaborato 356,904,225 pacchetti in 30 secondi, inclusi 571,405 eventi xdp_rx_ring_full, senza errori di proprietà o dati.
Per HFTKernel, rafforza l'acquisizione di dati di mercato ad alta frequenza, i feed handler AF_XDP, i sistemi di distribuzione dei pacchetti e le acquisizioni zero-copy sotto pressione sui ring di ricezione.
Doorbell TX Intel ICE ordinate
Il driver Intel ICE usa nuovamente scritture MMIO ordinate quando pubblica le doorbell delle code TX.
Il driver aggiorna prima la contabilità Dynamic Queue Limits nella memoria normale, poi notifica alla NIC la disponibilità di nuovi descrittori. La scrittura ordinata garantisce che la contabilità della coda sia visibile globalmente prima che il dispositivo possa completare il lavoro trasmesso.
È particolarmente importante su ARM64, dove writel_relaxed() non fornisce l'ordinamento richiesto tra memoria normale e MMIO.
La modifica è stata esercitata con un adattatore Intel E810-XXV sotto carico di rete prolungato. Il percorso ordinato ha mantenuto sincronizzati il completamento della NIC e la contabilità software della coda.
Per HFTKernel, rafforza l'elaborazione TX prolungata su hardware Intel compatibile e preserva una relazione coerente tra invio dei descrittori, esecuzione hardware e contabilità dei completamenti.
Ordine corretto dei completamenti mlx5 ICOSQ
Il driver mlx5 aggiorna ora la doorbell della coda di completamento prima di pubblicare il contatore consumer ICOSQ.
Un dma_wmb() mantiene ordinate le due operazioni:
- Lo spazio CQ viene rilasciato al dispositivo.
- Il contatore consumer software avanza.
- Il dispositivo osserva la capacità di completamento aggiornata prima dell'invio di ulteriore lavoro di controllo interno.
Preserva il ciclo di vita della coda di completamento e mantiene allineata l'elaborazione interna delle code di invio mlx5 tra host e NIC.
Ciclo di vita Google GVE AF_XDP più affidabile
Google Virtual Ethernet DQO riceve un insieme coordinato di miglioramenti al ciclo di vita zero-copy AF_XDP.
I buffer XSK vengono ora rilasciati quando un descrittore di completamento RX segnala un errore. I buffer consegnati alla NIC vengono inoltre restituiti quando i ring RX vengono arrestati o reimpostati.
La chiusura del pool XSK usa ora la variante corretta di locking NAPI quando le operazioni di gestione delle code detengono già il lock netdevice. La riconfigurazione delle code procede senza tentare di acquisire due volte lo stesso lock.
Le modifiche all'arresto delle code e al pool XSK coprono scenari di produzione osservati negli ambienti Google Cloud.
Per HFTKernel Cloud, supporta configurazione, riconfigurazione, riavvio e smantellamento corretti di AF_XDP sulle interfacce GVE DQO.
Stima più precisa del ritardo PCIe in OCP PTP
Il driver OCP PTP usa ora KTIME_MAX come limite superiore iniziale per la stima del ritardo PCIe.
Il precedente massimo senza segno diventava negativo quando rappresentato come ktime_t, impedendo ai ritardi reali misurati di sostituirlo. Il calcolo aggiornato usa il corretto dominio temporale con segno e mantiene una regolazione valida della finestra di timestamp.
Migliora la compensazione del ritardo del percorso PCIe per le schede temporali OCP supportate e rafforza la relazione tra la finestra di timestamp dell'host e la lettura del clock hardware.
Per HFTKernel, fornisce una base hardware temporale più solida per sincronizzazione PTP, correlazione dei timestamp e misurazione della latency.
Stato cpuset più coerente durante i cambiamenti del ciclo di vita CPU
HFTKernel 7.2.11 include diverse correzioni cpuset rilevanti per la collocazione automatizzata delle CPU.
Durante la disattivazione delle CPU, guarantee_active_cpus() considera ora l'intervallo tra le modifiche alla maschera CPU attiva e la propagazione delle maschere cpuset effettive aggiornate.
La modalità cgroup viene valutata mantenendo cpuset_mutex, sincronizzando stato della gerarchia e aggiornamenti delle maschere.
Il controllo della modalità v2 usa inoltre un flag stabile dedicato invece di leggere un puntatore cgroup-root potenzialmente variabile.
Insieme, queste modifiche rafforzano lo stato cpuset durante:
- hotplug CPU;
- operazioni di mount e rebind dei cgroup;
- cambiamenti del ciclo di vita dei servizi;
- gestione automatizzata delle partizioni CPU.
Per HFTKernel, supporta una separazione affidabile tra core di trading, core di rete, CPU di housekeeping e carichi dei servizi.
Elaborazione limitata dei flow dump Open vSwitch
I flow dump netlink di Open vSwitch mantengono ora disabilitate le bottom halves per ogni callback di dump limitato.
In precedenza, ripetute abilitazioni locali delle bottom halves potevano far elaborare al thread di dump stesso l'arretrato softIRQ pendente. Su una CPU di elaborazione pacchetti occupata, l'arretrato poteva riempirsi continuamente.
Il percorso aggiornato mantiene il callback limitato alle voci di flusso inserite nella risposta netlink corrente. L'elaborazione softIRQ dei pacchetti rimane nei normali percorsi di esecuzione di rete invece di essere assorbita dal thread di controllo del flow dump.
Per HFTKernel Cloud e i profili di rete virtualizzati, crea un confine più chiaro tra carico del percorso dati e operazioni diagnostiche del piano di controllo.
Configurazione prevedibile dei ring io_uring
I ring SQ, CQ e provided-buffer non vengono più addebitati a RLIMIT_MEMLOCK, ripristinando la loro semantica di configurazione consolidata.
Impedisce ai normali servizi non privilegiati di ricevere un limite artificiale al numero di ring da memoria già controllata dal ciclo di vita io_uring e memory-cgroup.
Il riproduttore upstream con ring da 4,096 voci è tornato da 21 ring alla configurazione prevista di 64 ring con il limite memlock predefinito di 8 MiB.
Per le regioni di memoria compound io_uring effettivamente addebitate, la contabilità include ora ogni pagina allocata, comprese le pagine residue dovute alla potenza di due esterne alla regione logica richiesta.
Quando l'allocazione compound supererebbe il limite, io_uring può ripiegare su un'allocazione bulk di dimensione esatta.
Questa combinazione fornisce:
- creazione prevedibile di SQ e CQ;
- creazione prevedibile dei ring provided-buffer;
- contabilità accurata delle allocazioni compound vincolate;
- migliore utilizzo della memoria vicino ai limiti configurati.
Contabilità corretta della memoria bloccata rimappata
MREMAP_DONTUNMAP preserva ora una contabilità locked_vm coerente in altri due casi.
Le VMA anonime bloccate che si fondono con sé stesse rimangono separate, affinché sorgente e destinazione conservino lo stato di blocco corretto.
I remap parziali delle VMA bloccate dividono l'intervallo sorgente prima dello spostamento delle tabelle delle pagine, mantenendo la contabilità allineata alle pagine che rimangono alla sorgente e a quelle rappresentate dalla destinazione.
Per HFTKernel, rafforza la contabilità del ciclo di vita della memoria per applicazioni che usano insiemi di lavoro bloccati insieme a operazioni avanzate di rimappatura.
Parsing più affidabile di AF_PACKET, Virtio, VLAN e GSO
I percorsi di rete virtuale e packet socket applicano ora una sequenza coerente di analisi degli header.
I pacchetti GSO con tag VLAN inviati tramite AF_PACKET SOCK_RAW vengono analizzati dopo l'applicazione dei metadati Virtio. Preserva le posizioni corrette degli header di rete e trasporto ed evita analisi ridondanti.
I pacchetti GSO basati su Virtio vengono sempre sottoposti ad analisi del flusso quando i metadati di checksum offload non forniscono la posizione del trasporto. Garantisce che:
- il protocollo di rete sia validato;
- l'header di trasporto sia presente nei dati lineari;
- l'offset di trasporto sia inizializzato;
- le opzioni IPv4 e gli header di estensione IPv6 siano gestiti correttamente.
Gli offset di analisi del flusso vengono gestiti correttamente anche per buffer di pacchetti superiori a 64 KiB, inclusi BIG TCP e frame AF_PACKET PACKET_VNET_HDR grandi. Il percorso BPF flow-dissector riceve la stessa protezione.
Per HFTKernel, rafforza acquisizione dei pacchetti, replay, TUN/TAP, Virtio, classificazione BPF e carichi dei gateway virtuali.
Ricezione zero-copy TCP più robusta con memoria dei dispositivi
La ricezione zero-copy TCP riconosce ora i frammenti net_iov non basati su pagine prima di richiedere suggerimenti di mapping delle pagine.
Copre sia la memoria dei dispositivi basata su DMA-BUF sia i tipi net_iov di io_uring.
I dati leggibili basati su pagine possono ancora essere copiati o mappati normalmente. Quando il frammento successivo appartiene alla memoria del dispositivo, il kernel restituisce il suggerimento di salto corretto invece di trattarlo come una pagina convenzionale.
Rafforza l'interazione tra ricezione zero-copy TCP, memoria dei dispositivi, DMA-BUF e buffer di rete basati su io_uring.
Configurazione più sicura di XDP e della separazione header-dati TCP
I dispositivi di rete riconoscono ora i programmi XDP a buffer singolo collegati tramite bpf_link quando decidono se abilitare la separazione header-dati TCP.
Il kernel preserva quindi la compatibilità tra il programma XDP collegato e la disposizione dei buffer di ricezione NIC, indipendentemente dall'installazione tramite percorso legacy o API BPF link.
Veth aggiorna inoltre correttamente la capacità di trasmissione XDP del peer dopo modifiche alla configurazione GRO con l'interfaccia disattivata, mantenendo i percorsi di redirect di container e namespace allineati alla configurazione attiva del peer.
Mapping IOMMU diretto per risorse MMIO
Le risorse MMIO con DMA_ATTR_MMIO evitano ora la gestione bounce di SWIOTLB.
MMIO non può essere copiato attraverso un bounce buffer. Il percorso aggiornato procede direttamente al mapping IOMMU IOVA, anche per risorse non allineate alle pagine.
Per HFTKernel Hardware, rafforza il mapping delle risorse di dispositivi e acceleratori dietro una IOMMU ed elimina un percorso intermedio incompatibile dalla configurazione MMIO.
Protezione dell'invalidazione TLB AMD
HFTKernel 7.2.11 rileva AMD TLBI Erratum #1718.
Sui processori interessati, una sequenza INVLPGB e TLBSYNC potrebbe non invalidare la voce TLB prevista. Quando non è disponibile microcodice aggiornato, il kernel attiva una soluzione software.
Rafforza la correttezza delle transizioni degli spazi di indirizzamento e dell'invalidazione TLB sui sistemi AMD supportati.
TX e ripristino PCIe Broadcom NetXtreme-E più robusti
Il driver Broadcom bnxt_en mappa ora l'intera lunghezza con padding dei pacchetti TX corti.
Mantiene la lunghezza DMA allineata alla dimensione del pacchetto presentata all'hardware, inclusi piccoli frame di controllo trasmessi tramite interfacce VLAN e macvlan sugli adattatori NetXtreme-E supportati.
Il ripristino PCIe ripristina inoltre coerentemente la configurazione BAR nei percorsi di reset sia fatali sia non fatali. Visibilità MMIO del dispositivo, bus mastering e decodifica della memoria vengono ristabiliti in ordine controllato dopo il ripristino.
Strumenti di misurazione inclusi
HFTKernel 7.2.11 include:
cpujitterPer intervalli di mancata esecuzione CPU, interferenze dello scheduler, attività IRQ e softIRQ e code di latency.
memjitterPer allocazione, first-touch, insiemi di lavoro bloccati e comportamento sotto pressione sulla memoria.
irqjitterPer l'analisi dell'attività IRQ e softIRQ.
Questi strumenti collegano le modifiche a livello kernel al comportamento dell'intero stack applicativo.
Risultato di HFTKernel 7.2.11
HFTKernel 7.2.11 rafforza il sistema operativo attorno alle applicazioni sensibili alla latency:
- i nuovi tentativi mlx5 AF_XDP preservano la proprietà UMEM sotto pressione sui ring e sulle allocazioni;
- Google GVE gestisce coerentemente i buffer AF_XDP tra errori ed eventi del ciclo di vita delle code;
- Intel ICE pubblica lo stato della coda TX prima di attivare la doorbell NIC;
- mlx5 mantiene ordinati gli aggiornamenti dello spazio di completamento rispetto all'avanzamento delle code di invio interne;
- le schede OCP PTP mantengono una compensazione corretta del ritardo PCIe;
- lo stato cpuset rimane coerente durante i cambiamenti del ciclo di vita CPU e cgroup;
- Open vSwitch mantiene il lavoro di flow dump separato da un arretrato softIRQ illimitato;
- i ring io_uring mantengono configurazione prevedibile e contabilità della memoria accurata;
- i percorsi AF_PACKET, Virtio, GSO, BIG TCP, XDP e TCP zero-copy ricevono una gestione più solida di buffer e header;
- l'invalidazione TLB AMD e il mapping MMIO IOMMU ricevono protezioni specifiche dell'hardware.
Insieme, queste modifiche offrono una base più prevedibile e misurabile per HFT, dati di mercato, gateway di esecuzione, rete cloud, elaborazione dei pacchetti e infrastruttura con timestamp hardware.