Linux 7.3: производительность как главная цель — быстрые ФС, новый планировщик и RT-фиксы

Окно слияния для Linux 7.3 ещё открыто, но уже сейчас видно: это один из самых производительно-ориентированных релизов ядра за последние годы. В него успели попасть серьёзные улучшения файловых систем, новый планировщик для cgroup, исправления в управлении памятью и заметное снижение задержек для real-time нагрузок.

Файловые системы: Btrfs и EXT4 получили серьёзный прирост скорости

Btrfs получила сразу несколько значимых изменений. Прямой ввод-вывод (Direct I/O) теперь работает через bounce-буфер IOmap вместо отката к буферизованному I/O. Это поднимает производительность с примерно половины теоретического максимума до почти 95% от него.

Два отдельных исправления в путях журналирования и fsync дают прирост примерно в 5 раз каждое. Первое убирает ненужную задержку при одновременной работе нескольких задач журналирования, второе — пропускает лишнюю проверку дыр (hole detection) во время полного fsync для файлов с большим количеством экстентов, но без дыр.

Кэш свободного пространства по умолчанию также переведён с версии v1 на v2 — более безопасный и быстрый вариант, который раньше не был стандартным.

EXT4 тоже не осталась в стороне. Теперь разрешены параллельные записи Direct I/O там, где раньше файловая система была слишком ограничительна. Многоблочный аллокатор пропускает лишнюю работу с помощью fallocate().

Под обеими файловыми системами лежит переработанный слой IOmap, построенный вокруг одного итерационного callback, который компилятор может инлайнить вместо косвенной диспетчеризации. Это изменение особенно заметно на быстрых NVMe-накопителях: в тестах EXT4 показала рост с 1,92 миллиона IOPS до 2,19 миллиона.

Для пользователя ничего делать не нужно — всё заработает после перехода на 7.3.

Планировщик: новый дизайн для cgroup и фиксы для гибридных CPU Intel

Патчи Петера Зийлстры (Peter Zijlstra) под названием flatten-the-pick перерабатывают планирование cgroup вокруг единой очереди выполнения (runqueue) вместо старой, подверженной сбоям конструкции. В тестах на старом Sandy Bridge с AMD Radeon RX 580 улучшились и частота кадров, и стабильность времени кадра. Если у вас не самое новое игровое железо — это то самое улучшение, которое сделает картинку менее «рваной».

Исправлена и работа с гибридными процессорами Intel. Кластерно-зависимый планировщик плохо справлялся со смесью P-ядер и E-ядер. Работа Рикардо Нери (Ricardo Neri) закрывает этот пробел на архитектурах Alder Lake, Lunar Lake и Panther Lake. На практике это означает меньше «заиканий», когда ноутбук занят сборкой исходников, игрой или экспортом видео, а фоновые задачи конкурируют за малые ядра.

Управление памятью: исправлены задержки в KSM и zsmalloc

Инженеры ZTE нашли ошибку в обратном маппинге KSM — этапе, на котором ядро проверяет, какие области памяти указывают на объединённую страницу. При высокой нагрузке один внутренний замок мог «застревать» на сотни миллисекунд, замораживая другие операции. Исправление снижает худший случай с ~700 мс до менее 2 мс. Это означает меньше случайных зависаний на серверах и в контейнерах при нехватке памяти.

Инженер Xiaomi Wenchao Hao исправил похожее замедление в zsmalloc, который используют zRAM и Zswap для хранения сжатой памяти. В тестах Raspberry Pi 4B показал прирост до 1.83x, а 20-ядерная система Intel — до 1.4x. Проще говоря, бюджетные платы вроде Pi станут заметно отзывчивее, а на более мощном железе прирост будет меньше, но ощутим.

Низкие задержки для real-time нагрузок

Каждый раз, когда одно ядро CPU использует код SMP ядра, чтобы попросить другие ядра немедленно что-то выполнить (например, сбросить кэши памяти), ядро замораживало всё остальное на этом CPU до ответа всех остальных ядер. Инженеры ByteDance проследили это замедление и переработали механизм так, что другие задачи могут продолжать работать, а не сидеть замороженными. На загруженных системах это ожидание могло растягиваться и останавливать высокоприоритетные задачи.

В тестах на парке машин с DPDK (фреймворк для быстрых сетевых приложений) худшая задержка для самых медленных запросов упала с ~17 мс до ~1.5 мс. Большинство пользователей десктопа этого не заметят, но для сетевого и real-time ПО это важное исправление.

Прочие изменения

  • RISC-V получает поддержку одиннадцати новых расширений ISA.
  • Вызовы EFI runtime теперь завершаются по таймауту вместо бесконечного ожидания.
  • RAID 5/6 получает лучший алгоритм выбора на основе бенчмарков при загрузке.
  • Новые API библиотеки AES упрощают работу ядра с распространёнными режимами шифрования.

Окно слияния для Linux 7.3 останется открытым ещё несколько дней, поэтому в релиз может попасть больше изменений. Стабильная версия ожидается в октябре. Напомним, что в Linux 7.2 основными новшествами были планировщик с учётом кэша и ускорение ext4.

Частые вопросы

Когда выйдет стабильная версия Linux 7.3?

Ожидается, что стабильный релиз выйдет в октябре 2026 года. Сейчас открыто окно слияния, затем начнут выходить кандидаты в релизы (RC).

Нужно ли мне что-то делать, чтобы получить улучшения файловых систем?

Нет. Все изменения в Btrfs, EXT4 и IOmap работают автоматически после перехода на ядро 7.3. От вас не требуется никаких действий или изменения конфигурации.

На каком железе прирост производительности будет наиболее заметен?

Изменения в IOmap дают наибольший эффект на быстрых NVMe-накопителях. Улучшения zsmalloc особенно заметны на бюджетных платах вроде Raspberry Pi 4B. Новый планировщик flatten-the-pick поможет владельцам старых игровых систем.

Что даст исправление планировщика для гибридных CPU Intel?

Владельцы ноутбуков с процессорами Alder Lake, Lunar Lake и Panther Lake получат меньше «заиканий» при одновременной работе тяжёлых задач (сборка, игры, экспорт видео) и фоновых процессов на E-ядрах.

Какие именно задачи выиграют от снижения задержек в SMP-коде?

В первую очередь real-time и сетевые приложения, использующие DPDK. В тестах ByteDance худшая задержка для самых медленных запросов упала с ~17 мс до ~1.5 мс. Для обычного десктопа это изменение незаметно.

Что такое KSM и zsmalloc и зачем их исправляли?

KSM (Kernel Samepage Merging) объединяет одинаковые страницы памяти, а zsmalloc — аллокатор для сжатой памяти в zRAM и Zswap. Исправления устраняют длительные блокировки, которые вызывали случайные зависания серверов и контейнеров при нехватке памяти.

Есть ли изменения для архитектуры RISC-V?

Да, в Linux 7.3 добавлена поддержка одиннадцати новых расширений ISA для RISC-V. Это расширяет возможности для разработчиков и пользователей этой архитектуры.

Как это связано с предыдущим релизом ядра?

Окно слияния для 7.3 открылось сразу после выхода Linux 7.2. В 7.2 основными темами были планировщик с учётом кэша и ускорение ext4, а 7.3 продолжает эту тенденцию, делая упор на производительность.

Источник: itsfoss.com