На днях Линус Торвальдс объявил о выходе Linux® 7.2. Новое ядро получило улучшенный планировщик, ускоренную работу с файловыми системами, поддержку передачи данных между компьютерами через USB4® и множество обновленных драйверов. Значительная часть изменений касается оборудования AMD®, Intel® и Apple®.
Одновременно разработчики продолжили избавляться от кода, который был нужен устаревшим процессорам и совсем уж древним девайсам. Речь идет не только об Intel i486, прощание с которым началось еще в Linux 7.1. Из ядра постепенно убирают поддержку целой группы старых x86-процессоров, которые мало где используются. Что ж, давайте обсудим.
Linux научили эффективнее распределять задачи между ядрами
Главное нововведение Linux 7.2 — Cache Aware Scheduling, или планирование с учетом кэш‑памяти. В современных процессорах у каждого ядра есть свой кэш, при этом ядра объединены в группы с общим кэшем — быстрой памятью с данными, необходимыми для работы. Если система переносит задачу в другую группу, процессору приходится повторно загружать часть информации. Это требует дополнительного времени и может снизить производительность. Раньше планировщик Linux не всегда учитывал этот момент и иногда отправлял задачу на свободное, но не самое выгодное ядро.
Теперь же система получает больше информации о том, как устроена кэш-память конкретного процессора. Linux получает возможность оставить задачу там, где в кэше уже находятся нужные ей данные. Заметнее всего это скажется на работе серверов с многоядерными процессорами AMD EPYC и Intel Xeon. В ряде тестов с MySQL прирост оказался весьма существенным, хотя показатели сильно различались в зависимости от оборудования и настроек.
Конечно, это не значит, что после обновления все программы сразу станут работать быстрее. Если приложение почти не нагружает процессор или использует всего одно‑два ядра, заметной разницы, скорее всего, не будет. Другое дело — базы данных, виртуальные машины и серверные программы, способные одновременно задействовать десятки ядер. При такой нагрузке постоянное перемещение задач вместе с повторной загрузкой данных отнимает немало времени. Новый планировщик помогает сократить эти потери, причем дорабатывать сами приложения для этого не придется.
Кроме того, разработчики ускорили функцию poll(), с помощью которой программы следят за файлами, подключенными устройствами и сетевыми соединениями. Особенно часто к ней обращаются серверные и сетевые приложения, обрабатывающие тысячи запросов в секунду. В десктопных сценариях использования заметить разницу будет сложно. Однако на нагруженных серверах даже небольшое сокращение задержек может ощутимо сказаться на общей производительности.
EXT4 и XFS стали быстрее
Прирост получили сценарии с чтением случайных блоков размером 4 КБ через io_uring на NVMe®‑накопителе. Раньше функция iomap_iter() после завершения каждой операции без необходимости обнуляла служебную структуру iomap, расходуя пропускную способность памяти. В Linux 7.2 это действие убрали, что позволило EXT4 и XFS увеличить скорость обработки запросов примерно на 5%.
Переработали и вывод /proc/filesystems — файла со списком поддерживаемых файловых систем. Раньше при каждом обращении ядро проходило по связанному списку и заново формировало текст строка за строкой. Теперь готовый результат создается заранее и хранится в кэше, а сам список перевели на механизм RCU, который позволяет читать данные без лишних блокировок. Это оказалось полезно, поскольку /proc/filesystems регулярно проверяет библиотека libselinux, задействованная даже в таких базовых утилитах, как sed. В отдельных тестах чтение этого файла ускорилось более чем в четыре раза.
Еще одно изменение касается механизма подкачки. Linux 7.2 больше не хранит служебные данные swap в большом заранее выделенном массиве, а выделяет под них память динамически. Благодаря этому ядро расходует меньше оперативной памяти: при подключении пространства подкачки объемом 1 ТБ экономия составляет около 512 МБ. Заодно разработчики объединили обработку анонимной памяти и tmpfs, упростив часть кода, отвечающую за swap.
USB4STREAM: прямое соединение двух компьютеров
В Linux 7.2 добавили протокол USB4STREAM для прямой передачи данных между двумя компьютерами по USB4 или Thunderbolt™. После подключения на обеих машинах появляется устройство /dev/tbstreamX, с которым можно работать как с обычным файлом. Протокол передает пакеты без создания IP-сети, поэтому настраивать адреса и маршрутизацию не требуется. USB4STREAM подойдет для копирования файлов, отладки и обмена данными между рабочими станциями.
Протокол также поддерживает режим активного опроса busy poll. В нем процессор постоянно проверяет, не появились ли новые данные, вместо того чтобы ждать прерывания от контроллера. Это уменьшает задержку, но повышает нагрузку на CPU и расход энергии. Режим рассчитан на задачи, в которых скорость отклика важнее экономичности.
Для работы нужны два совместимых контроллера USB4 и ядро с соответствующим драйвером на обеих машинах. Готовых программ с графическим интерфейсом пока нет. Сам протокол тоже не заменяет обычную локальную сеть: он не поддерживает IP-адреса, маршрутизацию и сетевые службы. По сути, пользователь получает быстрый поток данных между двумя компьютерами.
Проверить соединение можно обычными командами. На первой машине достаточно запустить:
cat /dev/tbstream0
На второй же — выполнить:
echo hello > /dev/tbstream0
Для более сложных задач понадобятся программы, умеющие работать с устройствами /dev/tbstreamX.
Камеры AMD, HDMI 2.1 и подготовка к Zen 6
В Linux 7.2 появился драйвер AMD ISP4 для камер в некоторых новых ноутбуках. ISP — отдельный блок процессора, который получает данные с сенсора и выполняет первичную обработку изображения: настраивает экспозицию и цвет, подавляет шум и готовит видеопоток для приложений. Без драйвера система не может полноценно использовать этот блок, поэтому встроенная камера может работать с ограничениями или совсем не определяться. Проблема затрагивает модели, в которых обработка изображения аппаратно возложена на ISP‑сопроцессор AMD. Обычных USB-камер это изменение не касается.
Раньше производителям приходилось включать драйвер ISP4 в собственные сборки ядра. В результате камера работала с установленной на заводе системой, но после перехода на другой дистрибутив зачастую переставала определяться. Теперь драйвер вошел в основное ядро, и авторам дистрибутивов не придется добавлять его отдельно. Для работы камеры также могут понадобиться прошивка и подходящие компоненты мультимедийной системы. Появление ISP4 решает важную часть проблемы, но не гарантирует совместимость с каждой моделью ноутбука.
Драйвер AMDGPU получил начальную поддержку HDMI® 2.1 FRL. В старом режиме TMDS пропускной способности не всегда хватает для вывода изображения в 4K с высокой частотой обновления, HDR и большой глубиной цвета. Технология FRL передает данные по нескольким линиям с фиксированной скоростью и обеспечивает более высокую пропускную способность. Благодаря этому видеокарты Radeon смогут работать с режимами современных мониторов и телевизоров, которые раньше были недоступны через HDMI. Поддержка DisplayPort™ от этого изменения не зависит.
Пока FRL работает не со всеми видеокартами и дисплеями. Доступные разрешения и частоты зависят от модели Radeon, возможностей экрана и используемого кабеля. Ну и часть функций требует обновленных компонентов Mesa и других элементов графической системы. Так что после установки Linux 7.2 нужный режим может появиться не на каждой конфигурации. Поддержку HDMI 2.1 продолжат дорабатывать в следующих версиях ядра.
А еще в Linux 7.2 вошли новые изменения для будущих процессоров AMD Zen 6. Разработчики добавляют такую поддержку поэтапно, еще до выхода готовых устройств. На этом этапе ядро учится распознавать новые модели, получать сведения об их топологии и работать с отдельными функциями платформы. Это позволяет производителям дистрибутивов подготовиться к началу продаж заранее. Большинству пользователей нынешних процессоров AMD эти изменения ничего не дадут.
Intel Arc, драйвер Nova и поддержка Apple M3
В Linux 7.2 оптимизировали работу встроенной графики Intel Arc B390, которая используется в процессорах Panther Lake. Изменения затронули драйвер Xe и управление видеоядром. В некоторых графических тестах производительность выросла, однако величина прироста зависит от частоты памяти, настроек энергопотребления и самой программы. На других моделях Intel Arc эти исправления могут не дать такого результата. Обновление рассчитано прежде всего на новое поколение мобильных процессоров Intel.
Продолжилась разработка Nova — открытого драйвера NVIDIA®, написанного на Rust. В Linux 7.2 добавили код для поддержки видеокарт на архитектурах Hopper и Blackwell, улучшили взаимодействие с процессором GSP и переработали обработку VBIOS. Также появилась поддержка ускорителя NVIDIA GA100. Сам драйвер пока находится на ранней стадии и не готов заменить Nouveau или официальный модуль NVIDIA.
Также в ядре появилась начальная поддержка компьютеров Apple с процессорами семейства M3. Разработчики добавили описания некоторых аппаратных блоков, чтобы Linux мог распознавать платформу и продолжать загрузку. Для полноценной работы по‑прежнему не хватает поддержки ряда компонентов, включая графику и часть встроенных устройств. Поэтому установить обычный дистрибутив на Mac® с M3 и получить полностью рабочую систему пока не получится. Работа ведется в рамках проекта Asahi Linux, который ранее занимался компьютерами на M1 и M2.
Небольшие изменения затронули и игровую периферию. В ядро добавили поддержку безрычажного контроллера Zenaim, предназначенного для файтингов. Кроме того, разработчики исправили ошибки в старых драйверах Sega® Dreamcast: устранили сбой мыши и проблемы с подключением устройств через шину Maple. Поддержку этой консоли сохраняют, поскольку ее кодом по‑прежнему пользуются и продолжают заниматься. Возраст устройства сам по себе не становится причиной для удаления драйвера.
Linux окончательно прощается с i486
Отказ от i486 начался еще в Linux 7.1. Тогда разработчики удалили параметры CONFIG_M486SX, CONFIG_M486 и CONFIG_MELAN, которые позволяли собирать ядро для процессоров семейства 486 и старых систем AMD Elan. В Linux 7.2 работу продолжили и убрали более 13 тысяч строк, связанных с эмуляцией недостающих команд. Поэтому именно новый выпуск можно считать завершением поддержки i486 в основной версии ядра. Запустить Linux 7.2 на таком процессоре уже не получится.

Старые x86-чипы не поддерживают некоторые команды, на которые рассчитан современный Linux. Чтобы ядро могло на них работать, недостающие функции приходилось воспроизводить программно. Для этого в коде сохранялись отдельные обработчики, проверки и варианты выполнения одних и тех же операций. Они использовались крайне редко, но их приходилось учитывать при каждом изменении архитектуры x86. Удаление этой части кода упростило дальнейшую разработку и тестирование ядра.
Современные дистрибутивы давно не поддерживают i486. Даже большинство оставшихся 32-разрядных сборок рассчитано как минимум на более новые поколения Pentium®. Инго Молнар, мейнтейнер архитектуры x86, предложил сначала убрать возможность сборки и проверить, найдутся ли реальные пользователи таких систем. Серьезных возражений не последовало, после чего разработчики перешли к удалению остального кода. Линус Торвальдс поддержал это решение, отметив, что сохранять i486 в современных версиях ядра уже нет смысла.
Одновременно Linux 7.2 отказался от нескольких более новых процессоров, у которых нет счетчика тактов TSC и команды CMPXCHG8B. Под удаление попали AMD K5, некоторые модели Cyrix 5×86 и 6×86, NexGen Nx586 и ряд старых встраиваемых чипов. TSC нужен ядру для точного измерения времени, а CMPXCHG8B используется для атомарной работы с 64-разрядными значениями. Раньше отсутствие этих возможностей приходилось компенсировать отдельным кодом. Теперь они стали обязательными для запуска новых версий Linux на 32-разрядной архитектуре x86.
О полном отказе от 32-разрядных систем речь пока не идет. Linux 7.2 по-прежнему запускается на более поздних процессорах x86, если они поддерживают необходимые команды. Также сохраняется возможность выполнять 32-разрядные программы на современных 64-разрядных компьютерах. Уже установленная система на i486 тоже продолжит работать со старым ядром. Ограничение касается только новых выпусков, поэтому владельцам ретрокомпьютеров придется остаться на Linux 7.1 или более ранней версии.
Что в итоге
Большинство пользователей получит Linux 7.2 вместе с очередным обновлением дистрибутива. Заметнее всего изменения проявятся на серверах, новых ноутбуках AMD и компьютерах с современными видеокартами. Одновременно разработчики убрали код для процессоров, которые давно исчезли из актуальных систем.
Если вы уже опробовали новинку, поделитесь в комментариях результатами тестирования и обнаруженными проблемами.