Инструменты22 августа 2026 г., 13:17 МСК🤖 Auto

Linux 7.3: Снижение задержек TLB на 90% для DPDK и RT

В ядро Linux 7.3 интегрирован патч от ByteDance, устраняющий блокировку прерываний при очистке TLB. Это критически важно для высокочастотных приложений и систем реального времени.

Баннер новости 6301

Проблема: IPI-задержки убивают производительность

Основная проблема, решенная в Linux 7.3, касалась архитектуры x86/mm. При выходе процесса или очистке страниц операционная система отправляет межпроцессорные прерывания (IPI) для инвалидации кэша TLB на всех ядрах. До этого момента код выполнялся с отключенными прерываниями и отложенным планированием (preemption disabled). На 16-ядерных машинах в продакшен-средах это приводило к задержкам планирования до 16 мс — катастрофическому показателю для чувствительных к задержкам приложений.

Решение: Разрешение прерываний во время ожидания IPI

Инженеры ByteDance (Chuyi Zhou) разработали патч, позволяющий разрешать прерывания и планирование во время ожидания завершения удаленных IPI. Это радикально меняет поведение системы:

  • До патча: Задержка планирования достигала 16 мс из-за блокировки текущего CPU.
  • После патча: Периоды отключения прерывания в пути arch_tlbbatch_flush не превышают 1 мс.
  • Метрика P99: Максимальная задержка отключения прерывания в 30-секундных интервалах снизилась до ~1.5 мс.

Результаты для DPDK и Real-Time

Для приложений уровня DPDK (Data Plane Development Kit), которые требуют преэмпции задач с высшим приоритетом, это изменение означает мгновенный отклик. Общий уровень задержки (latency) для чувствительных рабочих нагрузок снизился до 90%. Оставшаяся задержка теперь обусловлена в основном конкуренцией за блокировки (lock contention), а не ожиданием IPI.

Метрика До оптимизации После Linux 7.3
Макс. задержка планирования (16 ядер) 16 мс < 1 мс (в пути flush)
Задержка пробуждения DPDK Критическая (блокировка прерываний) Минимальная (преэмция разрешена)
Общее снижение задержки До 90%

Риски и тестирование

Инженер Intel Дэвид Хансен (Dave Hansen) отметил, что изменения требуют тщательного мониторинга на предмет регрессий. Патч прошел 10 раундов ревью и был принят в ветку x86/mm для Linux 7.3. Ожидается, что в ближайшие дни начнется активное бенчмаркирование ядра для подтверждения стабильности на широком спектре оборудования.

Источник: Phoronix ↗