AI-новости26 сентября 2026 г., 18:21 МСК🤖 Auto

Linux 7.4: Оптимизация sheaves дала +22.9 млн% в бенчмарках

В ядро Linux 7.4 включено изменение управления памятью, которое радикально ускоряет работу с кэшем sheaves, показав экстремальный рост производительности в синтетических тестах.

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

Суть изменения: Refill Sheaves from Barn

В ветку slab/for-next Git-репозитория ядра Linux, которая будет слита в релиз 7.4 в конце октября, добавлен патч от разработчика Хао Ли (Hao Li). Изменение касается механизма управления памятью, а именно — переполнения кэша sheaves. Sheaves представляют собой массивный кэш на уровне каждого процессора (per-CPU) для аллокатора памяти ядра. До этого момента, когда список полных sheaves в «амбаре» (barn) насыщался, система не могла эффективно освобождать место, что приводило к необходимости сброса всех RCU-sheaves в slab-кэши.

Новый подход позволяет аллокатору забирать объекты из полных sheaves в амбаре для дозаполнения неполных sheaves, создавая при этом partial sheaf (частичный sheaf) для оставшихся объектов. Это решает проблему насыщения списка и снижает нагрузку на блокировку list_lock, так как забор из амбара дешевле, чем из частичных slab-кэшей.

Результаты бенчмарков: от двойных цифр до миллионов процентов

Изменение, состоящее всего из 81 строки кода, демонстрирует аномально высокие результаты в специфических синтетических тестах. Хотя общий прирост в тесте will-it-scale mmap1 составил умеренные 24%, метрики работы с амбаром показали взрывной рост. Это связано с тем, что базовые значения в этих узких местах кода были крайне низкими, поэтому любое улучшение масштабируется в огромные проценты.

Метрика / Тест Рост производительности Примечание
barn_get +22,904,539.81% Экстремальный рост из-за низкой базы
barn_put +21,422,544.07% Экстремальный рост из-за низкой базы
will-it-scale mmap1 +24% Общий прирост в комплексном тесте
Другие метрики Двойные цифры (%) Стабильное улучшение

Почему это важно для инфраструктуры

Хотя цифры в миллионы процентов выглядят как артефакт синтетического теста, реальная польза заключается в устранении узких мест при высокой конкуренции за память. Механизм RCU (Read-Copy-Update) часто создает нагрузку на аллокатор при освобождении объектов через kfree_rcu(). Предыдущая реализация заставляла ядро тратить ресурсы на сброс sheaves, когда амбар был полон. Новая логика refill_sheaf() делает процесс более плавным и предсказуемым, снижая задержки (latency) и улучшая масштабируемость систем с большим количеством ядер.

Детали реализации

Ключевые технические изменения включают:

  • Введение partial sheaf: Хранит оставшиеся объекты после дозаполнения, не позволяя списку полных sheaves насыщаться без возможности выхода.
  • Разделение путей: Путь общего выделения (__pcs_replace_empty_main()) продолжает обменивать пустые sheaves на полные, не создавая остатков. Путь дозаполнения (prefill) теперь работает с частичными sheaves.
  • Снижение contention: Забор объектов из амбара происходит дешевле с точки зрения блокировок, чем из частичных slab-кэшей.

Патч ужеqueued в основную ветку разработки и ожидается в стабильном релизе Linux 7.4 в конце октября 2026 года.

Источник: Phoronix ↗