Проблема: 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 ↗
