Вышло ядро Linux 7.2. В нём появились планировщик с учётом кеша, ускоренная работа ext4 и множество новых и улучшенных драйверов для ноутбуков и периферии.

За время девятинедельного цикла разработки также был установлен рекорд окна слияния: в проекте участвовало более 2100 разработчиков. Помог и искусственный интеллект. По подсчётам LWN, около 5% коммитов в 7.2 имеют тег assisted-by, который указывает на использование ИИ.

Впрочем, это обновление ядра не сводится только к добавлениям.

Из Linux 7.2 удалили более 13 000 строк кода эмуляции старых процессоров i486, а также 40-летний драйвер видеокарты Hercules, сетевой протокол AppleTalk и драйверы ARCnet для шин ISA и PCMCIA.

Большинство пользователей не заметит этих изменений, а те, кому это действительно нужно, могут остаться на Linux 7.1 или более ранней версии.

Наконец, ключевая функция, которую ждали в Linux 7.2, более справедливый планировщик GPU, так и не появилась. В последний момент изменение откатили и вернули метод first-in-first-out (FIFO) из-за сообщений о падении производительности на некоторых видеокартах AMD.

Подробнее о других изменениях в Linux 7.2 читайте дальше.

Главные изменения в Linux 7.2

Планировщик с учётом кеша

Планировщик задач в Linux 7.2, который решает, какие задачи и когда выполняются, стал учитывать кеш. Теперь он понимает, когда потоки, части одной задачи, принадлежат одному процессу, и старается размещать их на ядрах с общим кешем.

Планировщик стал умнее и держит потоки процесса на ядре с общим кешем.

Раньше планировщик распределял нагрузку по всем ядрам процессора и не проверял, используют ли потоки на разных ядрах общую память. Потокам на разных ядрах приходилось повторно загружать или синхронизировать одни и те же данные. Это называется cache bouncing.

В планировщике предусмотрены ограничения, которые не дают процессу перегрузить домен кеша, чтобы задачи одного приложения не блокировали систему. Планировщик также перестаёт перемещать дополнительные потоки, если процесс уже использует больше 25% процессорного времени или больше 33% нагрузки в домене.

Больше всего выигрывают процессоры AMD и Intel с несколькими доменами кеша, хотя конкретный прирост зависит от процессора и рабочей нагрузки.

Исправление блокировок для каналов

Исправление блокировок для pipes, тех самых каналов |, которые часто используются в командах shell и для скрытой передачи данных между процессами, сокращает время, в течение которого они удерживают блокировку при записи.

Это звучит не слишком впечатляюще, но цифры говорят об обратном. Тесты показывают прирост производительности до 6-28% и снижение задержки записи на 5-22%, причём под нагрузкой на память эффект выражен сильнее.

Как и в случае с большинством оптимизаций в обновлениях ядра Linux, напрямую это заметят не все. Но когда система работает под нагрузкой и в фоне задействованы pipe, нагрузка станет немного меньше.

Более аккуратное освобождение памяти

В Linux 7.2 доработан Multi-Generational LRU (MGLRU), алгоритм, с помощью которого ядро решает, что удалить из памяти при её нехватке.

Благодаря очистке и ужесточению цикла reclaim, а также изменению порядка обратной записи dirty pages в ходе этого процесса, в некоторых нагрузках вроде MongoDB с YCSB прирост достигает примерно 30%, как указано в описании коммита mglru reclaim.

Это изменение также сокращает число неожиданных завершений процессов из-за нехватки памяти (OOM).

Изменения в ext4

Ext4, файловая система по умолчанию в Ubuntu, получила в Linux 7.2 несколько небольших улучшений, связанных со скоростью.

ext4 избавилась от конкуренции за блокировки и взаимных блокировок под высокой нагрузкой.

Изменение в функции fast commit файловой системы ext4, которая, как следует из названия, записывает записи журнала быстрее, чем при полной фиксации, устраняет конкуренцию за блокировки и взаимные блокировки при высокой нагрузке.

Статистику по этой функции теперь можно посмотреть в /proc/fs/ext4/*/fc_info. К proc мы ещё вернёмся в этом обзоре.

Ещё одно исправление, общее для ext4 и XFS, убирает шаг очистки памяти из слоя IOMAP ядра. Оно даёт 5% прироста при мелком случайном чтении блоками по 4K с NVMe-накопителей в режиме polling у io_uring.

Наконец, изменение в поиске по каталогам теперь обрабатывает данные блоками по 4 байта, что ускоряет поиск файлов в каталогах с большим числом записей.

Другие улучшения файловых систем

Работа с NTFS в Linux 7.2 улучшена за счёт поддержки настоящих символических ссылок Windows, а не только похожих на те, что используются в WSL. Исправлена ошибка, из-за которой такие ссылки отображались как файлы нулевого размера. Отдельно NTFS стала устойчивее к повреждению метаданных на диске.

exFAT, которую многие используют для SD-карт и USB-накопителей, стала быстрее читать и писать благодаря использованию iomap ядра. Согласно бенчмаркам из коммита, скорость записи под высокой нагрузкой выросла до 87%.

Для тех, кто следит за ядром, самые заметные изменения обычно связаны с Btrfs.

В Linux 7.2 Btrfs стала быстрее, потому что большие folios наконец включены по умолчанию. До этого с 6.17 они были экспериментальными. Это позволяет файловой системе работать с памятью более крупными блоками, что снижает накладные расходы и повышает скорость.

Прямой ввод-вывод больше не выполняется строго последовательно. По имеющимся данным, это повышает производительность записи на 59%, а последовательная запись ускоряется на 15% за счёт новых ограничений на размер одного запроса writeback.

Прямая передача данных по кабелю USB4

Linux 7.2 поддерживает USB4STREAM, новый протокол для передачи данных между двумя устройствами по кабелю USB4 или Thunderbolt. Его можно использовать вместе с уже существующей сетевой передачей по Thunderbolt.

Новый драйвер создаёт на каждом компьютере файлы устройств /dev/tbstreamX. Данные можно отправлять по совместимому кабелю в совместимый порт с помощью cat, echo и dd без сетевого подключения.

Ускоренное чтение файлов proc

/proc, виртуальная файловая система, с помощью которой ядро делится состоянием системы в виде файлов, получила ускорение для двух файлов. /proc/filesystems показывает поддерживаемые файловые системы, а /proc/interrupts детализирует аппаратные прерывания.

Первый стал заметно быстрее за счёт переработки способа генерации /proc/filesystems. Теперь файл формируется заранее, а не при каждом чтении. Тесты показывают ускорение чтения до 140%, а при одновременном чтении 20 процессами, до 444%.

Повседневная работа системы от этого не изменится, но инструменты и скрипты, которые часто запрашивают состояние системы, станут отзывчивее.

Улучшенные драйверы ноутбуков

Разные ноутбуки получили улучшения в фирменных драйверах.

Драйвер ноутбуков Uniwill, который используют TUXEDO Computers, научился управлять режимами зарядки аккумулятора. Драйвер платформы Microsoft Surface получил поддержку 12-дюймового Surface Pro, а больше устройств Lenovo Legion могут ограничивать зарядку через драйвер wmi.

Веб-камера AMD ISP4 в HP ZBook Ultra G1a теперь поддерживается в Linux 7.2. Поддержку также получили сенсорные экраны Wacom серии W9000 с пером, которые обычно устанавливаются в трансформеры 2-в-1 со стилусом или дигитайзером.

Что касается звука, заработал внутренний массив микрофонов в игровом ноутбуке HyperX OMEN Gaming Laptop 16-ap1xxx на процессорах AMD Ryzen 7 или 9. Исправлены особенности звука на Lenovo Yoga 7 (16IAP7) и Legion 7i (16IAX7).

Планшет Microsoft Surface RT первого поколения, модель 1516, под управлением ядра Linux 7.2 теперь сообщает ёмкость аккумулятора и информацию о зарядке. Это может порадовать тех, у кого такое раннее ARM-устройство 2010 года пылится в ящике.

Linux 7.2 теперь может загружаться на Apple M3 MacBook Pro, MacBook Air и iMac, хотя пока только до консоли. До состояния повседневной системы, как на устройствах с Apple M1 и M2, ещё далеко, но прогресс проекта Asahi Linux обнадёживает.

Расширенная поддержка периферии

Игроки в Linux заметят, что боковые кнопки игровой мыши Rakk Dasig X теперь работают. Раньше они игнорировались из-за некорректного дескриптора HID report. Задние кнопки контроллера PlayStation DualSense Edge также наконец получили поддержку.

Драйвер конфигурации OneXPlayer был принят в основное ядро благодаря Valve. Сторонний геймпад HORI Wireless Switch Pad для Nintendo Switch теперь работает из коробки.

В этой версии ядра появилась поддержка чипа Realtek RTL8159, который используется во многих USB-сетевых адаптерах на 10 Гбит/с. Добавлена поддержка и беспроводных USB-адаптеров, включая Mercusys MA60XNB и NETGEAR NightHawk A8500 WiFi 7, которые должны работать без дополнительной настройки.

В ядро добавлены новые драйверы для Realtek 8922AU и 8922AE, включая Bluetooth. Linux 7.2 поддерживает Mediatek MT7927 (Filogic 380), который часто встречается на материнских платах, с полной поддержкой WiFi 7, включая скорость более 2 Гбит/с на 6 ГГц, и Bluetooth 5.4.

Также улучшено отслеживание температуры и скорости вентиляторов на ряде настольных плат ASUS и ASRock, включая ASRock Z890 Pro-A. Появился новый драйвер для контроллера вентиляторов ARCTIC.

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

Linux 7.2 продолжает добавлять поддержку процессоров и GPU Intel и AMD, которые ещё нельзя купить. Мы предпочитаем рассказывать об изменениях, которые касаются оборудования, уже находящегося у пользователей. Поддержка крупных процессоров в ядре обычно появляется раньше самих устройств в продаже.

Помимо перечисленного, в Linux 7.2 есть и другие заметные изменения:

  • khugepaged теперь может объединять память в страницы разных размеров huge pages
  • Landlock может ограничивать UDP bind, connect и send
  • Новый флаг openat2() позволяет программам отказываться открывать файлы устройств
  • Серверы NFS и ksmbd могут сообщать о файловых системах без учёта регистра
  • AF_ALG, связанный с недавними проблемами безопасности, признан устаревшим
  • strncpy() удалена из ядра
  • Начальная поддержка AMDGPU HDMI 2.1 FRL
  • Исправление скорости соединения PCIe 2.5 GT/s
  • Поддержка AMD Zen 6 EPYC
  • Intel TDX может обновлять runtime-модуль без перезагрузки
  • Продолжение работы над поддержкой WiFi 8
  • Четвёртая фаза улучшения таблицы подкачки
  • Подготовительная поддержка субпланировщиков в sched_ext
  • Улучшенная производительность записи с RWF_DONTCACHE

Подробнее о релизе в целом можно прочитать в обзорах LWN по итогам окна слияния: первая часть и вторая часть. Учтите, что они вышли до финального релиза, и часть функций, включая более справедливый DRM-планировщик, откатили.

Тем, кто глубоко изучает ядро, пригодится полная история коммитов Linux 7.2 на GitHub.

Попадёт ли Linux 7.2 в Ubuntu 26.10?

Canonical заявляла, что Ubuntu 26.10 нацелена на ядро Linux 7.2.

Но с учётом новой политики выбора ядра в Ubuntu она стремится использовать абсолютно последнюю upstream-версию в разработке к моменту заморозки ядра Ubuntu, даже если это RC. Поэтому Linux 7.3 всё ещё может стать кандидатом.

Почему? Изначально предполагалось, что Linux 7.2 выйдет после дедлайна заморозки ядра 20 августа, но он появился раньше. Это означает, что окно слияния для 7.3 уже открыто, и именно 7.3 теперь считается последней версией в разработке.

Инженеры Canonical, вероятно, скоро дадут разъяснения на этот счёт.

Независимо от того, будет ли использоваться Linux 7.2 или 7.3, стоит ожидать обратного переноса ядра в Ubuntu 26.04 вместе с обновлением Hardware Enablement stack (HWE) в начале 2027 года или в промежуточном выпуске 26.04.2 LTS.

Загрузка Linux 7.2

Исходный код ядра Linux 7.2 доступен на kernel.org для тех, кто хочет собрать его вручную. Скорее всего, вам это не понадобится.

Для пользователей Ubuntu эта версия ядра не придёт в виде официального обновления, если только не станет частью будущего HWE. Но можно установить Canonical Mainline .deb или воспользоваться сторонним PPA либо репозиторием, чтобы получить её неофициально и раньше.

Учтите, что устанавливать ядро Linux в Ubuntu из неофициальных репозиториев не рекомендуется. Нет гарантий и поддержки, могут отсутствовать специфичные для Ubuntu патчи или драйверы, а некоторые аппаратные функции и функции безопасности могут не работать.

Коротко об этом обновлении ядра. Какие изменения показались вам самыми важными?