HFTKernel 7.2.11
Более надёжная сеть zero-copy, упорядоченные очереди NIC и более надёжное оборудование времени
Базовая версия основного проекта: Linux 7.2.11. Изменения с Linux 7.2.10. Дата релиза: 15 октября 2026 г.
Более надёжное владение буферами mlx5 AF_XDP
HFTKernel 7.2.11 повышает надёжность приёма AF_XDP zero-copy на адаптерах NVIDIA mlx5.
Для очередей приёма striding повторные попытки пополнения MPWQE теперь сохраняют явное состояние владения каждым буфером XSK. При временной ошибке выделения поздний повтор NAPI больше не освобождает тот же кадр UMEM через устаревший указатель.
Путь повтора теперь идемпотентен:
- каждый исходный буфер XSK освобождается один раз;
- частично завершённые пополнения сохраняют состояние владения;
- успешное выделение заменяет буфер и очищает отметку освобождения;
- последующие повторы работают только с буферами, которые ещё требуют замены.
20-секундный нагрузочный тест AF_XDP основного проекта воспроизвёл 1,575,262 ошибок выделения буферов без недопустимых дескрипторов, ошибок WQE или предупреждений ядра.
Устаревшая циклическая очередь приёма получает ту же защиту владения.
В соответствующем тесте основного проекта подавался UDP-трафик с пакетами 64 байта на скорости 12 Mpps. Обновлённый путь обработал 356,904,225 пакетов за 30 секунд, включая 571,405 событий xdp_rx_ring_full, без ошибок владения или данных.
Для HFTKernel это повышает надёжность высокоскоростного приёма рыночных данных, обработчиков потоков AF_XDP, систем распределения пакетов и захвата zero-copy под давлением на кольцо приёма.
Упорядоченные уведомления TX doorbell Intel ICE
Драйвер Intel ICE снова использует упорядоченные записи MMIO при публикации TX doorbell очередей.
Сначала драйвер обновляет учёт Dynamic Queue Limits в обычной памяти, затем сообщает NIC о новых дескрипторах. Упорядоченная запись гарантирует глобальную видимость учёта очереди до завершения устройством переданной работы.
Это особенно важно на ARM64, где writel_relaxed() не обеспечивает нужный порядок между обычной памятью и MMIO.
Изменение проверено с адаптером Intel E810-XXV под длительной сетевой нагрузкой. Упорядоченный путь сохранял синхронизацию завершений NIC и программного учёта очередей.
Для HFTKernel это усиливает устойчивую обработку TX на совместимом оборудовании Intel и сохраняет согласованную связь между отправкой дескрипторов, аппаратным выполнением и учётом завершений.
Корректный порядок завершений mlx5 ICOSQ
Драйвер mlx5 теперь обновляет doorbell очереди завершений перед публикацией счётчика потребителя ICOSQ.
dma_wmb() сохраняет порядок двух операций:
- Пространство CQ освобождается для устройства.
- Программный счётчик потребителя продвигается.
- Устройство видит обновлённую ёмкость завершений до подачи дополнительной внутренней управляющей работы.
Это сохраняет жизненный цикл очереди завершений и согласует обработку внутренней очереди отправки mlx5 между сервером и NIC.
Более надёжный жизненный цикл Google GVE AF_XDP
Google Virtual Ethernet DQO получает согласованный набор улучшений жизненного цикла AF_XDP zero-copy.
Буферы XSK теперь освобождаются, когда дескриптор завершения RX сообщает об ошибке. Буферы, переданные NIC, также возвращаются при остановке или сбросе колец RX.
Завершение работы пула XSK теперь использует корректный вариант блокировки NAPI, когда операции управления очередями уже удерживают блокировку netdevice. Это позволяет перенастраивать очереди без повторного захвата той же блокировки.
Изменения остановки очередей и пула XSK покрывают промышленные сценарии, наблюдавшиеся в Google Cloud.
Для HFTKernel Cloud это поддерживает корректную настройку, перенастройку, перезапуск и удаление AF_XDP на интерфейсах GVE DQO.
Более точная оценка задержки PCIe в OCP PTP
Драйвер OCP PTP теперь использует KTIME_MAX как начальную верхнюю границу оценки задержки PCIe.
Прежний беззнаковый максимум становился отрицательным при представлении как ktime_t, не позволяя реальным измеренным задержкам заменить его. Обновлённый расчёт использует правильную знаковую область времени и сохраняет корректную коррекцию окна временных меток.
Это улучшает компенсацию задержки пути PCIe для поддерживаемых карт времени OCP и усиливает связь между окном временных меток сервера и чтением аппаратных часов.
Для HFTKernel это даёт более надёжную аппаратную основу времени для синхронизации PTP, сопоставления временных меток и измерения latency.
Более согласованное состояние cpuset при изменениях жизненного цикла CPU
HFTKernel 7.2.11 включает несколько исправлений cpuset, важных для автоматизированного размещения CPU.
При отключении CPU guarantee_active_cpus() теперь учитывает интервал между изменением активной маски CPU и распространением обновлённых эффективных масок cpuset.
Режим cgroup оценивается под cpuset_mutex, сохраняя синхронизацию состояния иерархии и обновлений масок.
Проверка режима v2 также использует отдельный стабильный флаг вместо чтения потенциально меняющегося указателя корня cgroup.
Вместе эти изменения укрепляют состояние cpuset при:
- горячем подключении CPU;
- монтировании и перепривязке cgroup;
- изменениях жизненного цикла сервисов;
- автоматизированном управлении разделами CPU.
Для HFTKernel это поддерживает надёжное разделение торговых ядер, сетевых ядер, служебных CPU и сервисных нагрузок.
Ограниченная обработка дампа потоков Open vSwitch
Дампы потоков Open vSwitch через netlink теперь держат нижние половины отключёнными на протяжении каждого ограниченного обратного вызова дампа.
Ранее повторное локальное включение нижних половин могло заставить поток дампа самостоятельно обрабатывать накопившиеся softIRQ. На занятом обработкой пакетов CPU этот остаток мог непрерывно пополняться.
Обновлённый путь ограничивает обратный вызов записями потоков, помещёнными в текущий ответ netlink. Обработка пакетных softIRQ остаётся в обычных путях сетевого выполнения, а не поглощается управляющим потоком дампа.
Для HFTKernel Cloud и виртуализированных сетевых профилей это создаёт более чёткую границу между нагрузкой передачи данных и диагностическими операциями управления.
Предсказуемая настройка колец io_uring
Кольца SQ, CQ и предоставленных буферов больше не учитываются в RLIMIT_MEMLOCK, восстанавливая прежнюю семантику настройки.
Это избавляет обычные непривилегированные сервисы от искусственного ограничения числа колец из-за памяти, уже контролируемой жизненным циклом io_uring и memory-cgroup.
Пример воспроизведения основного проекта с кольцами на 4,096 записей вернулся от 21 кольца к ожидаемым 64 при стандартном лимите memlock 8 MiB.
Для составных областей памяти io_uring, которые действительно учитываются, учёт теперь включает каждую выделенную страницу, в том числе хвостовые страницы округления до степени двойки за пределами запрошенной логической области.
Если составное выделение превышает лимит, io_uring может перейти к массовому выделению точного размера.
Это сочетание обеспечивает:
- предсказуемое создание SQ и CQ;
- предсказуемое создание колец предоставленных буферов;
- точный учёт закреплённых составных выделений;
- лучшее использование памяти вблизи настроенных лимитов.
Корректный учёт заблокированной повторно отображённой памяти
MREMAP_DONTUNMAP теперь сохраняет согласованный учёт locked_vm ещё в двух случаях.
Самообъединяющиеся заблокированные анонимные VMA остаются разделёнными, чтобы источник и назначение сохраняли правильное состояние блокировки.
Частичные remap заблокированных VMA разделяют исходный диапазон до перемещения таблиц страниц, согласуя учёт страниц, оставшихся в источнике, и страниц, представленных назначением.
Для HFTKernel это улучшает учёт жизненного цикла памяти приложений, использующих заблокированные рабочие наборы вместе со сложными операциями remap.
Более надёжный разбор AF_PACKET, Virtio, VLAN и GSO
Пути виртуальной сети и пакетных сокетов теперь применяют согласованную последовательность разбора заголовков.
Пакеты GSO с тегами VLAN, отправленные через AF_PACKET SOCK_RAW, разбираются после применения метаданных Virtio. Это сохраняет правильные позиции сетевого и транспортного заголовков и исключает повторный разбор.
Для пакетов GSO с Virtio всегда выполняется разбор потока, когда метаданные аппаратного расчёта контрольных сумм не задают позицию транспорта. Это гарантирует:
- проверку сетевого протокола;
- наличие транспортного заголовка в линейных данных;
- инициализацию транспортного смещения;
- правильную обработку опций IPv4 и расширенных заголовков IPv6.
Смещения разбора потока также корректно обрабатываются для буферов пакетов больше 64 KiB, включая BIG TCP и большие кадры AF_PACKET PACKET_VNET_HDR. Путь BPF flow-dissector получает такую же защиту.
Для HFTKernel это повышает надёжность захвата и воспроизведения пакетов, TUN/TAP, Virtio, классификации BPF и виртуальных шлюзов.
Более надёжный приём TCP zero-copy с памятью устройств
Приём TCP zero-copy теперь распознаёт фрагменты net_iov, не основанные на страницах, перед запросом подсказок отображения страниц.
Это покрывает память устройств на основе DMA-BUF и типы net_iov io_uring.
Читаемые данные на страницах по-прежнему можно нормально копировать или отображать. Если следующий фрагмент принадлежит памяти устройства, ядро возвращает правильную подсказку пропуска, а не трактует его как обычную страницу.
Это улучшает взаимодействие приёма TCP zero-copy, памяти устройств, DMA-BUF и сетевых буферов io_uring.
Более безопасная конфигурация XDP и разделения заголовка/данных TCP
Сетевые устройства теперь распознают однобуферные программы XDP, подключённые через bpf_link, при решении о возможности включить разделение заголовка/данных TCP.
Тем самым ядро сохраняет совместимость подключённой программы XDP и размещения приёмных буферов NIC независимо от установки через устаревший путь или API BPF link.
Veth также правильно обновляет возможности передачи XDP партнёра после изменения GRO на отключённом интерфейсе, согласуя пути перенаправления контейнеров и пространств имён с активной конфигурацией партнёра.
Прямое отображение IOMMU для ресурсов MMIO
Ресурсы MMIO с DMA_ATTR_MMIO теперь обходят промежуточные буферы SWIOTLB.
MMIO нельзя копировать через промежуточный буфер. Обновлённый путь сразу переходит к отображению IOMMU IOVA, включая ресурсы без выравнивания по странице.
Для HFTKernel Hardware это повышает надёжность отображения ресурсов устройств и ускорителей за IOMMU и убирает несовместимый промежуточный путь из настройки MMIO.
Защита инвалидации TLB AMD
HFTKernel 7.2.11 обнаруживает AMD TLBI Erratum #1718.
На затронутых процессорах последовательность INVLPGB и TLBSYNC может не инвалидировать нужную запись TLB. Если обновлённый микрокод недоступен, ядро активирует программный обход проблемы.
Это повышает корректность переходов адресного пространства и инвалидации TLB в поддерживаемых системах AMD.
Более надёжные TX и восстановление PCIe Broadcom NetXtreme-E
Драйвер Broadcom bnxt_en теперь отображает полную дополненную длину коротких пакетов TX.
Это согласует длину DMA с размером пакета, предъявляемым оборудованию, включая небольшие управляющие кадры через интерфейсы VLAN и macvlan на поддерживаемых адаптерах NetXtreme-E.
Восстановление PCIe также последовательно восстанавливает конфигурацию BAR для фатальных и нефатальных путей сброса. Видимость MMIO устройства, bus mastering и декодирование памяти восстанавливаются в контролируемом порядке после сбоя.
Включённые инструменты измерения
HFTKernel 7.2.11 включает:
cpujitterДля пауз выполнения CPU, вмешательства планировщика, активности IRQ и softIRQ и хвостов latency.
memjitterДля выделения, first-touch, заблокированных рабочих наборов и поведения при давлении на память.
irqjitterДля анализа активности IRQ и softIRQ.
Эти инструменты связывают изменения ядра с поведением полного стека приложений.
Результат HFTKernel 7.2.11
HFTKernel 7.2.11 укрепляет операционную систему вокруг приложений, чувствительных к latency:
- повторы mlx5 AF_XDP сохраняют владение UMEM при давлении на кольцо и выделение;
- Google GVE согласованно управляет буферами AF_XDP при ошибках и событиях жизненного цикла очередей;
- Intel ICE публикует состояние очереди TX до уведомления NIC через doorbell;
- mlx5 упорядочивает обновление пространства завершений с продвижением внутренней очереди отправки;
- карты OCP PTP сохраняют правильную компенсацию задержки PCIe;
- состояние cpuset остаётся согласованным при изменениях жизненного цикла CPU и cgroup;
- Open vSwitch отделяет дамп потоков от неограниченного накопления softIRQ;
- кольца io_uring сохраняют предсказуемую настройку и точный учёт памяти;
- пути AF_PACKET, Virtio, GSO, BIG TCP, XDP и TCP zero-copy получают более надёжную обработку буферов и заголовков;
- инвалидация TLB AMD и отображение MMIO IOMMU получают аппаратно-зависимую защиту.
Вместе эти изменения дают более предсказуемую и измеримую основу для HFT, рыночных данных, шлюзов исполнения, облачной сети, обработки пакетов и инфраструктуры с аппаратными временными метками.