HFTKernel 7.3.3
Mejor orden de los paquetes, progreso de I/O más fiable y polling más ligero
Base upstream: Linux 7.3.3. Cambios acumulados: Linux 7.3.2 y 7.3.3, respecto a 7.3.1. Fecha de publicación upstream: 6 de noviembre de 2026, para ambas versiones.
Transmisión ordenada bajo presión en las colas
El networking scheduler conserva el orden de los paquetes cuando un driver devuelve NETDEV_TX_BUSY. Los paquetes que vuelven a encolarse se colocan al principio de la lista de pendientes en su orden original.
En la prueba upstream de cuatro streams TCP sobre un par veth con un pfifo qdisc, el throughput aumentó de aproximadamente 40 a 76 Gbps. El cambio eliminó alrededor de 1.3 millones de segmentos fuera de orden y 15,000 a 37,000 retransmisiones por intervalo de prueba de 15 segundos.
VLAN hardware offload consistente
Con reorder_hdr=off, las tramas aptas pasan su VLAN tag a los metadatos de inserción de la NIC y conservan la disposición esperada en el egress del dispositivo VLAN. Esto mantiene la inserción VLAN por hardware compatible con los offloads de checksum y segmentación, incluidas las rutas pertinentes de packet-socket y de AF_XDP en copy mode.
NAPI busy polling que respeta el deadline
io_uring limita el busy polling al intervalo de espera restante. Cuando ya ha pasado un deadline absoluto, el presupuesto de polling pasa a cero, lo que permite que la espera retorne rápidamente.
Las entradas NAPI con seguimiento dinámico ahora caducan tras 60 segundos de inactividad. Los rings de larga duración dejan de volver a consultar identificadores de cola obsoletos, manteniendo el polling centrado en el tráfico reciente.
Wakeups fiables para trabajo diferido y progreso de las completions
IORING_SETUP_DEFER_TASKRUN publica el estado de sleep de la tarea en espera antes de exponer su wakeup credit. Los productores pueden notificar de forma fiable al consumidor cuando llega nuevo task work local. El bucle de espera dirigido por BPF sigue el mismo orden.
Cuando las overflow completions pendientes no caben en la completion queue, io_uring devuelve el control a userspace para que la aplicación pueda vaciarla. Esto proporciona una vía explícita de progreso para completion queues de tamaño mixto.
Progreso más sólido para consumidores en tiempo real
La cola lockless de task work protege la publicación del productor en dos pasos con una sección breve con preemption deshabilitada. Un consumidor SCHED_FIFO que comparte una CPU con un productor de menor prioridad observa una publicación completada en lugar de interrumpir al productor a mitad de la actualización mediante preemption.
Las esperas asíncronas de private-futex preparan el hash privado del proceso antes de registrar el waiter. Los wakeups se mantienen alineados con el hash activo durante la posterior creación de threads y los cambios de configuración del hash.
Menos actividad innecesaria de SQPOLL
SQPOLL puede permanecer en sleep mientras un ring está deshabilitado, incluso cuando se han preparado submission entries. Al habilitar el ring, se despierta el thread de polling. Las aplicaciones pueden preparar su configuración de arranque sin dedicar una CPU a comprobar repetidamente trabajo que todavía no está habilitado.
Workers de I/O asíncrona con límites mejor definidos
io_uring resuelve el archivo de destino antes de asignar trabajo a io-wq. Las operaciones forced-async sobre regular files y block devices respetan los límites de bounded workers, incluidos los límites configurados mediante IORING_REGISTER_IOWQ_MAX_WORKERS.
Las buffered writes al mismo regular file se coordinan mediante hashing basado en inode, lo que reduce la competencia de los workers por el mismo inode lock. La identidad del archivo queda fijada cuando la solicitud entra en la work queue.
Buffers de recepción fiables a mayor escala
Zero-copy receive calcula los offsets de los buffers con aritmética de 64 bits antes del desplazamiento. Las completion entries identifican el buffer correcto más allá de los primeros 4 GiB de un área de recepción registrada, manteniendo alineados el consumo y el refill.
Para incremental provided buffers y multi-buffer receive bundles, el progreso parcial se completa antes de que otra solicitud pueda reutilizar la memoria restante. Las aplicaciones reciben la longitud realmente transferida y continúan desde ese límite; estas operaciones MSG_WAITALL pueden devolver un resultado corto.
Clock domains correctos para actualizaciones de timeouts absolutos
Las actualizaciones de timeouts absolutos utilizan el reloj asociado al timer existente al convertir el time namespace del llamante a la hora del host. CLOCK_MONOTONIC, CLOCK_BOOTTIME y CLOCK_REALTIME conservan sus respectivas semánticas.
Esto mantiene los deadlines asíncronos consistentes para los servicios que utilizan time namespaces y distintos clock domains de timeout.
Contabilización de memoria más completa
Los metadatos task-to-ring y los XArrays de personality se cargan a los memory cgroups. Los metadatos de registered buffers y los resource nodes también participan en la contabilización de memcg, manteniendo representada la memoria de I/O del kernel en los presupuestos de los servicios.
El teardown de XArray libera los nodos internos vacíos que dejaron los intentos de inserción fallidos. La creación y limpieza repetidas de rings liberan esas asignaciones de metadatos y sus cargos asociados.
Ciclo de vida más sólido para las páginas HugeTLB
La ruta de fault anónimo de HugeTLB completa las actualizaciones del estado del folio y su desbloqueo antes de liberar el page-table lock. La inicialización se mantiene coordinada con las operaciones concurrentes de unmapping y reclamación de páginas, reforzando los mappings privados de huge pages que se utilizan para grandes buffers de aplicaciones.
Teardown coordinado de IRQ y dispositivos de temporización
La limpieza de threaded-IRQ conserva irqaction hasta que ha terminado el exit task work pendiente, manteniendo la vida útil del recurso durante la ruta de salida anómala del thread.
Las operaciones de control del generador PPS se sincronizan con el unregister de la fuente. Las operaciones existentes terminan sobre un estado válido del driver, y las operaciones posteriores reciben ENODEV tras la retirada. Esto proporciona al software de servicios de temporización un límite claro en el ciclo de vida del dispositivo.
Estado del host KVM más consistente
En hosts Intel VMX, los cambios de userspace que hacen ejecutable una vCPU también eliminan un halt registrado por el hardware cuando es necesario. Esto mantiene el estado de ejecución del hardware alineado con el virtual-machine monitor durante los flujos de reset y reinicio.
AMD SVM actualiza la generación ASID en ambos bloques de control de nested virtualization después de un cambio de CPU física. Los identificadores de espacio de direcciones se mantienen coordinados a medida que las vCPUs anidadas se desplazan entre procesadores.
Mejoras de Xen backend añadidas en Linux 7.3.3
La actualización acumulada final añade tres mejoras para despliegues Xen backend. Las lecturas de estadísticas del block backend se sincronizan con el teardown del frontend. Las estadísticas del network backend permanecen protegidas durante la limpieza de las colas. La limpieza de la multicast list se realiza una vez detenido el procesamiento de transmisión y recepción.
En conjunto, estos cambios mantienen coordinados la monitorización, el estado de la red virtual y la liberación de recursos del backend durante la desconexión y reconfiguración de dispositivos.
Sistemas operativos compatibles
El catálogo de paquetes de HFTKernel cubre 24 OS targets:
- Ubuntu 20.04 / 22.04 / 24.04 / 26.04 LTS
- Debian 11 / 12 / 13
- Plataformas compatibles con RHEL, AlmaLinux, Rocky Linux 8 / 9 / 10
- CentOS Stream 9 / 10
- Fedora Linux 44
- Amazon Linux 2023, perfil Cloud
- ALT Linux p11 / Simply Linux 11
- Astra Linux 1.8
- Arch Linux base-devel
- Base compatible con NixOS.
Instalación con un solo comando
curl -fsSL https://hftkernel.com/install.sh | sudo bash
El instalador detecta el sistema operativo y el perfil de despliegue, verifica el paquete correspondiente y lo instala. Un reinicio manual activa el kernel instalado.
Enfoque de la versión
Conservar el orden de transmisión, mantener el progreso del trabajo asíncrono, eliminar el polling innecesario y mantener clara la propiedad de la memoria y de los recursos de los dispositivos.