HFTKernel 7.3.3
Melhor ordenação de pacotes, progresso de I/O mais confiável e polling mais enxuto
Base upstream: Linux 7.3.3. Mudanças acumuladas: Linux 7.3.2 e 7.3.3, em relação à versão 7.3.1. Data de lançamento upstream: 6 de novembro de 2026, para ambas as versões.
Transmissão ordenada sob pressão nas filas
O networking scheduler preserva a ordem dos pacotes quando um driver retorna NETDEV_TX_BUSY. Os pacotes recolocados na fila retornam ao início da lista de pendentes na ordem original.
No teste upstream de quatro streams TCP sobre um par veth com um pfifo qdisc, o throughput aumentou de aproximadamente 40 para 76 Gbps. A mudança eliminou cerca de 1.3 milhão de segmentos fora de ordem e 15,000 a 37,000 retransmissões por intervalo de teste de 15 segundos.
VLAN hardware offload consistente
Com reorder_hdr=off, os frames elegíveis passam sua VLAN tag aos metadados de inserção da NIC e mantêm a disposição esperada no egress do dispositivo VLAN. Isso mantém a inserção VLAN por hardware compatível com os offloads de checksum e segmentação, incluindo os caminhos pertinentes de packet-socket e de AF_XDP em copy mode.
NAPI busy polling que respeita o deadline
io_uring limita o busy polling ao intervalo de espera restante. Quando um deadline absoluto já passou, o orçamento de polling se torna zero, permitindo que a espera retorne prontamente.
As entradas NAPI acompanhadas dinamicamente agora expiram após 60 segundos de inatividade. Rings de longa duração deixam de consultar novamente identificadores de fila obsoletos, mantendo o polling focado no tráfego recente.
Wakeups confiáveis para trabalho adiado e progresso das completions
IORING_SETUP_DEFER_TASKRUN publica o estado de sleep da tarefa em espera antes de expor seu wakeup credit. Os produtores podem notificar o consumidor de forma confiável quando chega novo task work local. O loop de espera orientado por BPF segue a mesma ordem.
Quando as overflow completions pendentes não cabem na completion queue, io_uring devolve o controle ao userspace para que a aplicação possa esvaziá-la. Isso oferece um caminho explícito de progresso para completion queues de tamanho misto.
Progresso mais sólido para consumidores em tempo real
A fila lockless de task work protege a publicação do produtor em duas etapas com uma seção curta com preemption desabilitada. Um consumidor SCHED_FIFO que compartilha uma CPU com um produtor de prioridade menor observa uma publicação concluída, em vez de interromper o produtor no meio da atualização por preemption.
As esperas assíncronas de private-futex preparam o hash privado do processo antes de registrar o waiter. Os wakeups permanecem alinhados com o hash ativo durante a criação posterior de threads e as mudanças de configuração do hash.
Menos atividade desnecessária de SQPOLL
SQPOLL pode permanecer em sleep enquanto um ring está desabilitado, mesmo quando submission entries já foram preparadas. Habilitar o ring desperta a thread de polling. As aplicações podem preparar sua configuração de inicialização sem ocupar uma CPU verificando repetidamente trabalho que ainda não está habilitado.
Workers de I/O assíncrona com limites mais bem definidos
io_uring resolve o arquivo de destino antes de atribuir trabalho ao io-wq. As operações forced-async sobre regular files e block devices seguem os limites de bounded workers, incluindo os limites configurados por IORING_REGISTER_IOWQ_MAX_WORKERS.
As buffered writes no mesmo regular file são coordenadas por hashing baseado em inode, reduzindo a competição dos workers pelo mesmo inode lock. A identidade do arquivo é fixada quando a solicitação entra na work queue.
Buffers de recepção confiáveis em escalas maiores
Zero-copy receive calcula os offsets dos buffers com aritmética de 64 bits antes do deslocamento. As completion entries identificam o buffer correto além dos primeiros 4 GiB de uma área de recepção registrada, mantendo o consumo e o refill alinhados.
Para incremental provided buffers e multi-buffer receive bundles, o progresso parcial é concluído antes que outra solicitação possa reutilizar a memória restante. As aplicações recebem o comprimento efetivamente transferido e continuam a partir desse limite; essas operações MSG_WAITALL podem retornar um resultado curto.
Clock domains corretos para atualizações de timeouts absolutos
As atualizações de timeouts absolutos usam o relógio associado ao timer existente ao converter o time namespace do chamador para o horário do host. CLOCK_MONOTONIC, CLOCK_BOOTTIME e CLOCK_REALTIME mantêm suas respectivas semânticas.
Isso mantém os deadlines assíncronos consistentes para serviços que usam time namespaces e diferentes clock domains de timeout.
Contabilização de memória mais completa
Os metadados task-to-ring e os XArrays de personality são contabilizados nos memory cgroups. Os metadados de registered buffers e os resource nodes também participam da contabilização de memcg, mantendo a memória de I/O do kernel representada nos orçamentos dos serviços.
O teardown de XArray libera os nós internos vazios deixados por tentativas de inserção malsucedidas. A criação e a limpeza repetidas de rings liberam essas alocações de metadados e seus encargos associados.
Ciclo de vida mais sólido para páginas HugeTLB
O caminho de fault anônimo de HugeTLB conclui as atualizações de estado do folio e seu desbloqueio antes de liberar o page-table lock. A inicialização permanece coordenada com as operações concorrentes de unmapping e recuperação de páginas, fortalecendo os mappings privados de huge pages usados para grandes buffers de aplicações.
Teardown coordenado de IRQ e dispositivos de temporização
A limpeza de threaded-IRQ mantém irqaction até que o exit task work pendente tenha terminado, preservando o tempo de vida do recurso durante o caminho de saída anormal da thread.
As operações de controle do gerador PPS são sincronizadas com o unregister da fonte. As operações existentes terminam com um estado válido do driver, e as operações seguintes recebem ENODEV após a remoção. Isso oferece ao software de serviços de temporização um limite claro no ciclo de vida do dispositivo.
Estado do host KVM mais consistente
Em hosts Intel VMX, as mudanças de userspace que tornam uma vCPU executável também removem um halt registrado pelo hardware quando necessário. Isso mantém o estado de execução do hardware alinhado com o virtual-machine monitor durante os fluxos de reset e reinicialização.
AMD SVM atualiza a geração ASID em ambos os blocos de controle de nested virtualization após uma mudança de CPU física. Os identificadores de espaço de endereçamento permanecem coordenados à medida que as vCPUs aninhadas se movem entre processadores.
Melhorias de Xen backend adicionadas no Linux 7.3.3
A atualização acumulada final adiciona três melhorias para implantações de Xen backend. As leituras de estatísticas do block backend são sincronizadas com o teardown do frontend. As estatísticas do network backend permanecem protegidas durante a limpeza das filas. A limpeza da multicast list ocorre depois que o processamento de transmissão e recepção é encerrado.
Juntas, essas mudanças mantêm o monitoramento, o estado da rede virtual e a liberação de recursos do backend coordenados durante a desconexão e a reconfiguração de dispositivos.
Sistemas operacionais compatíveis
O catálogo de pacotes do HFTKernel abrange 24 OS targets:
- Ubuntu 20.04 / 22.04 / 24.04 / 26.04 LTS
- Debian 11 / 12 / 13
- Plataformas compatíveis com 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 compatível com NixOS.
Instalação com um único comando
curl -fsSL https://hftkernel.com/install.sh | sudo bash
O instalador detecta o sistema operacional e o perfil de implantação, verifica o pacote correspondente e o instala. Uma reinicialização manual ativa o kernel instalado.
Foco da versão
Preservar a ordem de transmissão, manter o trabalho assíncrono avançando, eliminar o polling desnecessário e manter clara a propriedade da memória e dos recursos dos dispositivos.