Релиз ядра Linux 6.11: возможности, обновления и самые заметные изменения

от автора

С момента выхода прошлого релиза прошло всего два месяца, и вуаля — Linux 6.11 уже с нами. Несмотря на то, что времени было относительно немного, разработчики внесли достаточно изменений и нововведений. Всего в новой версии свыше 15 тыс исправлений от 2 078 разработчиков, а размер патча составляет 85 МБ. Изменения внесены в 13 282 файла, добавлено 985 857 строк кода, удалено — 268 915.

Хочешь выиграть мерч? Попробуй решить IT-кроссворд! Более 256 вопросов, 7 кроссвордов на разные темы из мира IT — ежедневно с 23 по 29 сентября. Достаточно зарегистрироваться по ссылке.

Оборудование и драйвера

  • Конечно, больше всего изменений в драйверах. Так, в AMDGPU включена начальная поддержка GPU AMD RDNA4 («GFX12»). Добавлена поддержка технологий DCN 4.0.x, GC 12.0, GMC 12.0, SDMA 7.0, MES12 и MMHUB 4.1.
  • В драйвере i915 добавлена поддержка GPU Battlemage Xe2 и включен по умолчанию режим CMRR (Content Match Refresh Rate).
  • Конечно, продолжается и работа над драйвером Xe для GPU на базе архитектуры Intel Xe. Эта архитектура используется «синих видеокартах» семейства Arc и интегрированной графике, начиная с процессоров Tiger Lake. Улучшена поддержка GPU на базе микроархитектур Battlemage, Arrow Lake и Lunar Lake.
  • А еще появилась поддержка платформы SM7150 и GPU X185 и a505 в DRM-драйвере msm (GPU Qualcomm Adreno).
  • Добавлена поддержка экранных панелей Lincoln Tech Sol LCD185-101CT, Microtips Technology 13-101HIEBCAF0-C, Microtips Technology MF-103HIEB0GA0, BOE nv110wum-l60, IVO t109nw41, WL-355608-A8, PrimeView PM070WL4, Lincoln Technologies LCD197, Ortustech COM35H3P70ULC, AUO G104STN01, K&d kd101ne3-40ti. Возможно, нововведение пригодится кому-то на Хабре.
  • Что касается звуковой системы, то здесь тоже много нового. Например, добавлена поддержка чипов и кодеков Intel Panther Lake, Asahi Kasei AK4619, Cirrus Logic CS530x, Everest Semiconductors ES8311, NXP i.MX95, LPC32xx, Qualcomm LPASS v2.5, WCD937x, Realtek RT1318, RT1320 и Texas Instruments PCM5242.
  • Наконец, разработчики добавили финальные изменения для поддержки ARM SoC Snapdragon X Elite. Чип позиционируется как мобильный, он предназначен для работы как в ноутбуках, так и ПК. А производительность у него весьма неплохая: процессор в разных тестах показывает себя лучше чипов Apple M3 и Intel Core Ultra 155H.

Память и системные сервисы

  • Одно из главных изменений — принятие патчей с добавлением нового механизма блокировок программных обработчиков прерываний. Он обеспечивает блокировку применяемых структур данных. При этом лишен недостатка в виде блокирования параллельного выполнения не связанного с ними когда. Это изменение дает возможность не только снизить задержки для ядер, которые работают в режиме реального времени, но и увеличить производительность обычных ядер.
  • Разработчики добавили набор ioctl-операций для псевдо-ФС NSFS (NameSpace FS), используемой для работы с пространствами имен. Нововведение дает возможность преобразовывать идентификаторы процессоров и групп потоков между различными пространствами имен идентификаторов процессов.
  • Добавлена подсистема, которая позволяет организовать подачу питания на девайсы в заданном порядке. Это пригодится в том случае, если какой-то из девайсов должен быть активирован раньше другого.
  • А еще в подсистеме асинхронного ввода/вывода io_ring появилась поддержка операций для реализации функций bind() и listen(), используемых для создания принимающих соединения сетевых сокетов.
  • Появилась поддержка runtime-констант, которые применяются вместо переменных, инициализируемых один раз. Пример такой ситуации — использование новых констант вместо переменных, хранящих указатель и размер для кэша dentry. Эти переменные выставляются во время загрузки, а потом никогда не меняются.
  • Для систем x86-64 реализован новый системный вызов uretprobe(), оптимизирующий работу механизма трассировки uretprobe. Последний позволяет отслеживать значения, возвращаемые функциями в приложениях пространства пользователя.
  • Для разных архитектур тоже реализованы различные изменения. Так, для архитектуры ARM64 разработана поддержка горячего подключения (перевода в режимы online/offline) физических и виртуальных CPU на системах с ACPI.
  • RISC-V не обошли вниманием, здесь есть поддержка горячего подключения памяти. Кроме того, добавлена поддержка GCC-плагина STACKLEAK.
  • Разработчики удалили механизм фиктивного маппинга памяти EFI (fake EFI memory map) на этапе загрузки.
  • Поддержку платформы PowerPC 40x убрали.

Дисковая подсистема и файлы

  • Одна из ключевых новых возможностей — появление поддержки записи в исполняемые файлы, которые связаны с работающими процессами. Ранее ядро выводило ошибку в случае попытки записи в файл запущенного процесса. Но теперь этого ограничения нет — оно лишено практического смысла.
  • Появилась поддержка разработки дайрверов блочных устройств на языке Rust.
  • Есть поддержка атомарных операций записи на блочном уровне. В этом случае на накопитель записывается или весь указанный набор блоков, или ничего. Это дает возможность защиты тогда, когда после сбоя оборудования записывается только часть блоков.
  • В файловой системе ntfs3 реализована поддержка атрибутов «compressed» и «immutable», определяющих сжатые и неизменяемые файлы.
  • В Btrfs в опции монтирования rescue= реализована поддержка новых режимов ignoremetacsums и ignoresuperflags. Их можно использовать для того, чтобы выносить некоторые проверки в пространство пользователя при восстановлении ФС после сбоя.
  • В ФС F2FS и Ext4 обработка имен файлов без учета регистра символов (casefold) упрощена через хранение в форме qstr-строк без лишних преобразований регистра.
  • В файловой системе Bcachefs добавлена поддержка автоматического прозрачного восстановления проблемных данных, используя коды восстановления ошибок.

Сеть, виртуализация и безопасность

  • Что касается сетевых возможностей, то в новом ядре появился sysctl-параметр net.tcp_rto_min_us. Через него можно настроить минимальный таймаут повторной передачи.
  • В этом релизе появилось сразу несколько патчей, которые примерно в 15 раз ускоряют получение случайных чисел через системный вызов getrandom().
  • Для систем x86-64 включена новая реализация алгоритма шифрования AES-GCM, поддерживающая использование векторных инструкций VAES, VPCLMULQDQ и AVX512/AVX10 для ускорения вычислений. В проведенных тестах прирост производительности после перехода на новую реализацию достигает 156%. Ассемблерная реализация AES-GCM полностью переписана с учетом корректности, производительности, размера и исчерпывающего документирования кода.
  • Разработчики реализовали возможность запуска ядра в качестве гостевой системы. В этом случае используется процессорное расширение AMD SEV-SNP (Secure Nested Paging).
  • В гипервизор KVM добавлен ioctl-вызов для упреждающего выделения памяти гостевой системе до ее фактического запуска.

Если подвести итоги, то примерно половина изменений в этом выпуске связана с драйверами устройств — это около 46%. Еще 17% относятся к аппаратным архитектурам, 10% — к сетевому стеку, 5% — к файловой системе и еще 3% — к внутренним подсистемам ядра. Кроме того, появился и вариант полностью свободного ядра 6.11 — Linux-libre 6.11-gnu. Оно очищено от элементов прошивок и драйверов с несвободными компонентами.

Что думаете об обновлении? Делитесь своими мыслями в комментариях!


ссылка на оригинал статьи https://habr.com/ru/articles/844458/