HFTKernel 7.2.11
Red zero-copy más sólida, colas de NIC ordenadas y hardware de tiempo más fiable
Base upstream: Linux 7.2.11. Cambios desde Linux 7.2.10. Fecha de publicación: 15 de octubre de 2026.
Propiedad de búferes AF_XDP de mlx5 más sólida
HFTKernel 7.2.11 refuerza el procesamiento de recepción zero-copy de AF_XDP en adaptadores NVIDIA mlx5.
Para las colas de recepción con pasos, los reintentos de reposición de MPWQE ahora conservan el estado explícito de propiedad de cada búfer XSK. Si una asignación falla temporalmente, un reintento posterior de NAPI ya no libera la misma trama UMEM mediante un puntero obsoleto.
La ruta de reintento ahora es idempotente:
- cada búfer XSK original se libera una sola vez;
- las reposiciones parcialmente completadas conservan su estado de propiedad;
- una asignación exitosa sustituye el búfer y borra el marcador de liberación;
- los reintentos posteriores actúan únicamente sobre los búferes que aún requieren sustitución.
Una ejecución upstream de presión AF_XDP de 20 segundos probó 1,575,262 fallos de asignación de búferes sin descriptores no válidos, errores de WQE ni advertencias del kernel.
La cola de recepción cíclica heredada recibe la misma protección de propiedad.
En la prueba upstream correspondiente, se ofreció tráfico UDP de 64 bytes a 12 Mpps. La ruta actualizada procesó 356,904,225 paquetes en 30 segundos, incluidos 571,405 eventos xdp_rx_ring_full, sin errores de propiedad ni de datos.
Para HFTKernel, esto refuerza la ingesta de datos de mercado de alta frecuencia, los manejadores de feeds AF_XDP, los sistemas de distribución de paquetes y las cargas de captura zero-copy bajo presión del anillo de recepción.
Doorbells TX ordenados de Intel ICE
El driver Intel ICE vuelve a utilizar escrituras MMIO ordenadas al publicar doorbells de colas TX.
El driver primero actualiza la contabilidad de Dynamic Queue Limits en memoria normal y luego notifica a la NIC que hay nuevos descriptores disponibles. La escritura ordenada garantiza que la contabilidad de la cola sea globalmente visible antes de que el dispositivo pueda completar el trabajo transmitido.
Esto es especialmente importante en ARM64, donde writel_relaxed() no proporciona el orden necesario entre memoria normal y MMIO.
El cambio se probó con un adaptador Intel E810-XXV bajo carga de red sostenida. La ruta ordenada mantuvo sincronizadas la finalización de la NIC y la contabilidad de la cola de software.
Para HFTKernel, esto refuerza el procesamiento TX sostenido en hardware Intel compatible y conserva una relación uniforme entre el envío de descriptores, la ejecución del hardware y la contabilidad de finalización.
Orden correcto de finalización de ICOSQ en mlx5
El driver mlx5 ahora actualiza el doorbell de la cola de finalización antes de publicar el contador consumidor de ICOSQ.
Una dma_wmb() mantiene ordenadas ambas operaciones:
- Se libera espacio de CQ para el dispositivo.
- Avanza el contador consumidor del software.
- El dispositivo observa la capacidad de finalización actualizada antes de que se envíe trabajo de control interno adicional.
Esto preserva el ciclo de vida de la cola de finalización y mantiene alineado entre el host y la NIC el procesamiento de las colas de envío internas de mlx5.
Ciclo de vida AF_XDP más fiable en Google GVE
Google Virtual Ethernet DQO recibe un conjunto coordinado de mejoras del ciclo de vida zero-copy de AF_XDP.
Los búferes XSK ahora se liberan cuando un descriptor de finalización RX informa de un error. Los búferes enviados a la NIC también se devuelven cuando los anillos RX se detienen o restablecen.
El cierre del conjunto XSK ahora utiliza la variante correcta de bloqueo NAPI cuando las operaciones de gestión de colas ya mantienen el bloqueo netdevice. Esto permite que la reconfiguración de colas avance sin intentar adquirir dos veces el mismo bloqueo.
Los cambios de detención de colas y del conjunto XSK cubren situaciones de producción observadas en entornos Google Cloud.
Para HFTKernel Cloud, esto permite una configuración, reconfiguración, reinicio y desmontaje limpios de AF_XDP en interfaces GVE DQO.
Estimación más precisa del retraso PCIe en OCP PTP
El driver OCP PTP ahora utiliza KTIME_MAX como límite superior inicial para la estimación del retraso PCIe.
El máximo sin signo anterior se convertía en un valor negativo al representarse como ktime_t, lo que impedía que los retrasos reales medidos lo sustituyeran. El cálculo actualizado utiliza el dominio de tiempo con signo correcto y mantiene un ajuste válido de la ventana de marcas de tiempo.
Esto mejora la compensación del retraso de la ruta PCIe para tarjetas de tiempo OCP compatibles y refuerza la relación entre la ventana de marcas de tiempo del host y la lectura del reloj de hardware.
Para HFTKernel, esto proporciona una base de hardware de tiempo más limpia para sincronización PTP, correlación de marcas de tiempo y medición de latency.
Estado de cpuset más uniforme durante cambios en el ciclo de vida de CPU
HFTKernel 7.2.11 incluye varias correcciones de cpuset relevantes para la ubicación automatizada de CPU.
Durante las operaciones de desconexión de CPU, guarantee_active_cpus() ahora tiene en cuenta el intervalo entre los cambios en la máscara de CPU activas y la propagación de las máscaras efectivas actualizadas de cpuset.
El modo de cgroup se evalúa mientras se mantiene cpuset_mutex, lo que conserva sincronizados el estado de la jerarquía y las actualizaciones de máscaras.
La comprobación de modo v2 también utiliza un indicador estable dedicado en lugar de leer un puntero a la raíz de cgroup que podría estar cambiando.
En conjunto, estos cambios refuerzan el estado de cpuset durante:
- la conexión en caliente de CPU;
- las operaciones de montaje y revinculación de cgroups;
- los cambios en el ciclo de vida de los servicios;
- la gestión automatizada de particiones de CPU.
Para HFTKernel, esto permite una separación fiable de los núcleos de trading, los núcleos de red, las CPU de mantenimiento y las cargas de servicios.
Procesamiento limitado del volcado de flujos de Open vSwitch
Los volcados de flujos netlink de Open vSwitch ahora mantienen desactivadas las mitades inferiores durante cada función de retorno de volcado limitada.
Anteriormente, las operaciones locales repetidas de activación de mitades inferiores podían hacer que el propio hilo de volcado procesara la acumulación pendiente de softIRQ. En una CPU ocupada con procesamiento de paquetes, esa acumulación podía reponerse continuamente.
La ruta actualizada mantiene la función de retorno limitada por las entradas de flujo incluidas en la respuesta netlink actual. El procesamiento de softIRQ de paquetes permanece en las rutas normales de ejecución de red en lugar de ser absorbido por el hilo de volcado de flujos del plano de control.
Para HFTKernel Cloud y los perfiles de red virtualizada, esto crea una separación más clara entre la carga de la ruta de datos y las operaciones de diagnóstico del plano de control.
Configuración predecible de anillos io_uring
Los anillos SQ, CQ y de búferes proporcionados ya no se contabilizan contra RLIMIT_MEMLOCK, lo que restaura su semántica de configuración establecida.
Esto evita que los servicios ordinarios sin privilegios reciban un límite artificial del número de anillos por memoria que ya se controla mediante el ciclo de vida de io_uring y de los cgroups de memoria.
El caso de reproducción upstream con anillos de 4,096 entradas volvió de 21 anillos a la configuración esperada de 64 anillos con el límite memlock predeterminado de 8 MiB.
Para las regiones compuestas de memoria io_uring que sí se contabilizan, la contabilidad ahora incluye todas las páginas asignadas, incluidas las páginas finales de redondeo a potencia de dos fuera de la región lógica solicitada.
Cuando la asignación compuesta superaría el límite, io_uring puede recurrir a una asignación masiva de tamaño exacto.
Esta combinación proporciona:
- creación predecible de SQ y CQ;
- creación predecible de anillos de búferes proporcionados;
- contabilidad precisa de las asignaciones compuestas fijadas;
- mejor uso de la memoria cerca de los límites configurados.
Contabilidad correcta de memoria bloqueada y remapeada
MREMAP_DONTUNMAP ahora conserva una contabilidad coherente de locked_vm en dos casos adicionales.
Las VMA anónimas bloqueadas que se fusionarían consigo mismas permanecen separadas para que el origen y el destino conserven su estado de bloqueo correcto.
Los remapeos parciales de VMA bloqueadas dividen el rango de origen antes de mover las tablas de páginas, lo que mantiene la contabilidad alineada con las páginas que permanecen en el origen y las representadas por el destino.
Para HFTKernel, esto refuerza la contabilidad del ciclo de vida de la memoria para aplicaciones que utilizan conjuntos de trabajo bloqueados junto con operaciones avanzadas de remapeo.
Análisis más fiable de AF_PACKET, Virtio, VLAN y GSO
Las rutas de red virtual y sockets de paquetes ahora aplican una secuencia uniforme de análisis de cabeceras.
Los paquetes GSO etiquetados con VLAN enviados mediante AF_PACKET SOCK_RAW se analizan después de aplicar los metadatos de Virtio. Esto conserva las posiciones correctas de las cabeceras de red y transporte y evita análisis redundantes.
Los paquetes GSO respaldados por Virtio siempre se analizan por flujo cuando los metadatos de descarga de checksum no proporcionan la posición de transporte. Esto garantiza que:
- se valide el protocolo de red;
- la cabecera de transporte esté presente en los datos lineales;
- se inicialice el desplazamiento de transporte;
- las opciones IPv4 y las cabeceras de extensión IPv6 se gestionen correctamente.
Los desplazamientos del análisis de flujos también se gestionan correctamente para búferes de paquetes mayores de 64 KiB, incluidos BIG TCP y las tramas grandes AF_PACKET PACKET_VNET_HDR. La ruta del analizador de flujos BPF recibe la misma protección.
Para HFTKernel, esto refuerza las cargas de captura y reproducción de paquetes, TUN/TAP, Virtio, clasificación BPF y puertas de enlace virtuales.
Recepción TCP zero-copy más sólida con memoria de dispositivos
La recepción TCP zero-copy ahora reconoce los fragmentos net_iov no respaldados por páginas antes de solicitar indicaciones de mapeo de páginas.
Esto cubre tanto la memoria de dispositivos respaldada por DMA-BUF como los tipos net_iov de io_uring.
Los datos legibles respaldados por páginas siguen pudiendo copiarse o mapearse normalmente. Cuando el siguiente fragmento pertenece a memoria de dispositivo, el kernel devuelve la indicación correcta de salto en lugar de tratarlo como una página convencional.
Esto refuerza la interacción entre la recepción TCP zero-copy, la memoria de dispositivos, DMA-BUF y los búferes de red respaldados por io_uring.
Configuración más segura de XDP y de separación de cabecera y datos TCP
Los dispositivos de red ahora reconocen los programas XDP de un solo búfer adjuntados mediante bpf_link al decidir si puede activarse la separación de cabecera y datos TCP.
Por lo tanto, el kernel conserva la compatibilidad entre el programa XDP adjunto y la distribución de búferes de recepción de la NIC, independientemente de que el programa se haya instalado mediante la ruta heredada o la API de enlaces BPF.
Veth también actualiza correctamente la capacidad de transmisión XDP del par tras cambios de configuración GRO mientras la interfaz está desactivada, manteniendo las rutas de redirección de contenedores y espacios de nombres alineadas con la configuración activa del par.
Mapeo IOMMU directo para recursos MMIO
Los recursos MMIO que llevan DMA_ATTR_MMIO ahora omiten la gestión de búferes intermedios de SWIOTLB.
MMIO no puede copiarse mediante un búfer intermedio. La ruta actualizada pasa directamente al mapeo IOVA de IOMMU, incluidos los recursos no alineados a página.
Para HFTKernel Hardware, esto refuerza el mapeo de recursos de dispositivos y aceleradores detrás de una IOMMU y elimina una ruta intermedia incompatible de la configuración MMIO.
Protección de invalidación TLB en AMD
HFTKernel 7.2.11 detecta AMD TLBI Erratum #1718.
En los procesadores afectados, una secuencia INVLPGB y TLBSYNC puede no invalidar la entrada TLB prevista. Cuando no hay microcódigo actualizado disponible, el kernel activa una solución alternativa de software.
Esto refuerza la corrección de las transiciones de espacio de direcciones y la invalidación TLB en sistemas AMD compatibles.
TX y recuperación PCIe más sólidos en Broadcom NetXtreme-E
El driver Broadcom bnxt_en ahora mapea la longitud completa con relleno de los paquetes TX cortos.
Esto mantiene la longitud DMA alineada con el tamaño del paquete presentado al hardware, incluidas las tramas de control pequeñas transmitidas por interfaces VLAN y macvlan en adaptadores NetXtreme-E compatibles.
La recuperación PCIe también restaura la configuración BAR de forma uniforme tanto en las rutas de restablecimiento fatales como en las no fatales. La visibilidad MMIO del dispositivo, el control del bus y la decodificación de memoria se restablecen en un orden controlado después de la recuperación.
Herramientas de medición incluidas
HFTKernel 7.2.11 incluye:
cpujitterPara intervalos sin ejecución de CPU, interferencias del planificador, actividad de IRQ y softIRQ y colas de latency.
memjitterPara asignación, first-touch, conjuntos de trabajo bloqueados y comportamiento bajo presión de memoria.
irqjitterPara analizar la actividad de IRQ y softIRQ.
Estas herramientas conectan los cambios del kernel con el comportamiento de toda la pila de aplicaciones.
Resultado de HFTKernel 7.2.11
HFTKernel 7.2.11 refuerza el sistema operativo en torno a las aplicaciones sensibles a la latency:
- los reintentos AF_XDP de mlx5 conservan la propiedad de UMEM bajo presión de anillos y asignación;
- Google GVE gestiona los búferes AF_XDP de forma uniforme durante errores y eventos del ciclo de vida de las colas;
- Intel ICE publica el estado de la cola TX antes de activar el doorbell de la NIC;
- mlx5 mantiene ordenadas las actualizaciones del espacio de finalización con el avance de las colas de envío internas;
- las tarjetas OCP PTP mantienen una compensación correcta del retraso PCIe;
- el estado de cpuset permanece coherente durante cambios del ciclo de vida de CPU y cgroups;
- Open vSwitch mantiene separado el trabajo de volcado de flujos de una acumulación ilimitada de softIRQ;
- los anillos io_uring conservan una configuración predecible y una contabilidad de memoria precisa;
- las rutas AF_PACKET, Virtio, GSO, BIG TCP, XDP y TCP zero-copy reciben una gestión más sólida de búferes y cabeceras;
- la invalidación TLB de AMD y el mapeo MMIO de IOMMU reciben protección específica del hardware.
En conjunto, estos cambios proporcionan una base más predecible y medible para HFT, datos de mercado, puertas de enlace de ejecución, redes en la nube, procesamiento de paquetes e infraestructura con marcas de tiempo de hardware.