Linux 7.4 ускоряет сброс рабочих очередей в 10-100 раз на больших серверах
Разработчики ядра Linux нечасто позволяют себе громкие формулировки, но изменение в механизме рабочих очередей (workqueue), попавшее в Git-ветку Linux 7.4, заслуживает их честно: авторы говорят об ускорении «в 10-100 раз».
Рабочие очереди в ядре служат для асинхронного откладывания задач. Проблема была в процедуре их сброса (flush): прежде она обходила по одной очереди на каждый возможный процессор. На современных серверах с десятками и сотнями ядер — Intel Xeon и AMD EPYC — это превращалось в заметные накладные расходы.
Что изменилось
Теперь flush обходит только те очереди, которые использовались с момента предыдущего сброса, а не по одной на каждый CPU. На больших машинах холостые сбросы становятся быстрее в 10-100 раз. По словам разработчиков, по этому пути ходит XFS при каждом принудительном сбросе журнала (log force).
Причиной работы стал сентябрьский отчёт инженера Huawei Яо Кая: он заметил, что рабочая очередь XFS CIL, сбрасываемая при каждом log force, тратит до 64 микросекунд на обход на 128-ядерной машине.
Цифры
Автор улучшения — давний разработчик ядра Тэджун Хео — приводит в своём коммите впечатляющие показатели. На 192-ядерной двухузловой машине сброс простаивающей per-cpu очереди ускорился с 40 тысяч до 4,2 миллиона операций в секунду, а unbound-очереди — с 450 тысяч до 4,3 миллиона. При нагрузке в 16 потоков, каждый из которых ставит задачу и сбрасывает очередь, показатель вырос с 30 до 110 тысяч сбросов в секунду для per-cpu и с 60 до 180 тысяч для unbound.
Не обошлось без компромиссов: при плотных сбросах, когда активны все очереди, производительность per-cpu не изменилась, а unbound стала на 15-20% медленнее. Путь постановки задач в очередь остался прежним.
Переход с 40 тысяч до 4,2 миллиона операций в секунду — по любой метрике результат выдающийся. И, как не без иронии отмечает Phoronix, в 2026 году особенно приятно, что написан он человеком, а не искусственным интеллектом.
Источник: Phoronix
Комментарии
Войдите, чтобы комментировать.