- PVSM.RU - https://www.pvsm.ru -

Linux 6.4: новые возможности ядра — что изменилось в релизе

image

Новая версия [1] ядра Linux 6.4 появилась спустя всего два месяца после Linux 6.3. Несмотря на относительно небольшой временной интервал, изменений достаточно много. Всего принято [2] 16012 исправлений от 2080 разработчиков, причем изменения затронули 14220 файлов, добавлено 1006924 строк кода, удалено 597615 строк. Размер патча составил 81 МБ.

Больше всего изменений, которые связаны с драйверами устройств. Это около 43% от общего объема. Еще около 14% изменений относятся к обновлению кода, актуального для аппаратных архитектур, 10% — сетевой стек, всего 4% — файловые системы и еще 3% — внутренние подсистемы ядра. Подробности под катом!

Что касается самых заметных изменений [3], то это, например, продолжение работы над интеграцией языка Rust, появившаяся возможность создания kernel worker из пространства пользователя, поддержка перехода в спящий режим для систем на архитектуре RISC-V, поддержка шифрования RPC-пакетов NFS.

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

  • Здесь не очень большое количество изменений, но среди них есть важные. Например, в драйвере i915 (Intel) продолжена реализация поддержки GPU Meteor Lake.
  • Кроме того, для PCIe-карты Qualcomm Cloud AI 100 (AIC100) добавили драйвер QAIC.
  • Также удалены символьные драйверы для устаревших устройств с интерфейсом PCMCIA, такие как cm4000_cs, cm4040_cs и scr24x_cs. Плюс больше не поддерживается SoC Intel Thunder Bay (выпуск данного SoC был отменён Intel).
  • Зато появилась поддержка звука, хотя и базовая, на системах с CPU Intel Lunar Lake. Добавлен драйвер AMD SoundWire Manager для управления звуковым сопроцессорами AMD.
  • Плюс добавлена поддержка мониторинга состояния датчиков температуры через API hwmon для около 100 моделей плат ASUS.
  • Также добавили драйвер msi-ec, что дает возможность управлять расширенными функциями ноутбуков MSI из пространства пользователя. В первую очередь, это выбор профиля энергопотребления, изменение скорости кулера и т.п.
  • А еще — появилась, наконец, поддержка систем Apple на базе ARM-чипа M2. Правда, это только начало работ по добавлению поддержки этих систем.
  • В драйвере же MediaTek MT76 добавлена поддержка WiFi 7.

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

  • Сейчас продолжается перенос дополнительной функциональности из ветки Rust-for-Linux. Речь идет об использовании Rust в качестве второго языка для разработки драйверов и модулей ядра. Стоит отметить, что поддержка языка неактивна по умолчанию. Среди добавленных возможностей — реализация типов ARef (always-refcounted) для ссылок на объект, к которому применяется механизм подсчёта ссылок, Task для работы со структурой task_struct и LockedBy для защиты данных через внешние блокировки.
  • Появилась поддержка режима LAM_U57 (Linear Address Masking) для процессоров Intel. Новинка дает возможность использовать часть битов 64-разрядных указателей (c 57 по 62 биты) для хранения не связанных с адресацией метаданных.
  • Также реализован вариант механизма объединения идентичных страниц памяти, который работает на уровне процессов. Это дает возможность сильно снизить потребление памяти. Причем в текущей версии ядра поддержка дедупликации осуществляется через prctl(PR_SET_MEMORY_MERGE) для процесса целиком и наследуется для дочерних процессов, без необходимости активации для каждого диапазона памяти при помощи вызова madvise(MADV_MERGEABLE), что значительно упрощает применение.
  • Непривилегированные процессы теперь получают информацию подсистемы ядра PSI (Pressure Stall Information), позволяющей в пространстве пользователя проанализировать сведения о времени ожидания получения различных ресурсов (CPU, память, ввод/вывод) для точной оценки уровня загруженности системы и характера замедления работы. Если же процесс непривилегированный, то опрос PSI допускается не чаще чем каждые две секунды.
  • В BPF появилась поддержка типовых итераторов, что упрощает создание циклов в BPF-программах. А также реализовано заполнение в режиме ротации буфера с логом проблем, что выявляется верификатором кода.
  • Добавлена и новая виртуальная файловая система /sys/kernel/tracing/touched_functions. Она дает возможность определить все функции ядра, доступные для трассировки и прикрепления BPF-программ.
  • Еще одно интересное нововведение — это реализация поддержки архитектуры LoongArch (в дополнение к поддержке ARM, AArch64, i386, x86_64, s390, RISC-V и MIPS) в минимальной стандартной Си-библиотеке.
  • Как и говорилось выше, для систем на базе архитектуры RISC-V теперь появилась поддержка перехода в спящий режим (hibernation). Также добавлена поддержка расширения Svnapot, позволяющего связывать группы страниц памяти, размером 4K, для создания более крупных страниц памяти.
  • В драйвер amd-pstate добавлена поддержка управляемого автономного режима (Guided Autonomous Mode), при котором частота процессора выбирается автоматически, но не может выходить за пределы указанного диапазона.

Linux 6.4: новые возможности ядра — что изменилось в релизе - 2


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

  • Здесь не так много изменений, но среди них есть довольно значимые. Например, в XFS добавлены изменения, необходимые для реализации проверки ФС на лету (online scrub).
  • А в Ext4 упрощена организация записи журнала (data=journal).
  • Кроме того, в Btrfs переписан код для проверки ФС, который переведён на использование scrub_stripe, поддерживает проверку RAID56 и выполняется примерно на 10% быстрее. Повышена производительность журналирования каталогов (исключение перебора индексов при журналировании позволило в 4 раза сократить время, затрачиваемое на выполнение fsync).
  • Что касается файловой системы F2FS, то в ней добавлена поддержка зонированных блочных устройств, в которых размер зон не кратен степени двойки.

Сеть

  • Среди прочих изменений стоит выделить реализацию универсального программного интерфейса для управления светодиодными индикаторами на сетевых коммутаторах или сетевых платах. В структуру данных DeviceTree добавлены отдельные поля для привязки светодиодных индикаторов к устройствам.
  • Плюс добавлен API на базе Netlink, который предназначен для контроля работы светодиодов на сетевых коммутаторах или платах.
  • Появилась поддержка планировщиков для протокола SCTP, для справедливого распределения пропускной способности между потоками (Fair Capacity Scheduler) и справедливого заполнения очереди с учётом весовых коэффициентов (Weighted Fair Queueing Scheduler).

Виртуализация

  • В новой версии ядра запрещается отключать и выгружать модуль SELinux во время работы. Отключение SELinux теперь может производиться только на начальной стадии загрузки через передачу параметра «selinux=0» в командной строке ядра.
  • Также добавлена поддержка гипервызовов Hyper-V, применяемых для проброса PCI-устройств в гостевые системы с драйверами для Hyper-V.
  • А еще — реализован фреймворк для выноса обработки запросов SMCCC (Secure Monitor Call Calling Conventions) в пространство пользователя.
  • Ну а в хранилище ключей (keyring) ".machine" реализован режим, допускающий размещения только ключей, заверенных цифровой подписью известного системе удостоверяющего центра.

Как всегда, сформирован и вариант свободного ядра, 6.4 — Linux-libre 6.4-gnu, которое очищено от тех элементов, где содержатся несвободные компоненты или участки кода. Вот ссылка на ядро Linux-libre 6.4-gnu [4].

Ну а на этом все. Если вы уже обновились — расскажите, как все прошло. Не было ли проблем, а если да — то какие именно.

Возможно, эти тексты тоже вас заинтересуют:

Создаем блог на Django с опросами и тестами. Краткая инструкция. Часть 1 [5]
OpenStack vs VMware: что лучше — open source или проприетарная платформа [6]
Когда типизация делает тебе больно: как у нас появился статический анализатор [7]

Автор:
Seleditor

Источник [8]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/linux/385634

Ссылки в тексте:

[1] Новая версия: https://lkml.org/lkml/2023/6/25/453

[2] принято: https://habr.com/ru/news/743854/

[3] самых заметных изменений: https://kernelnewbies.org/Linux_6.4

[4] Linux-libre 6.4-gnu: http://linux-libre.fsfla.org/pub/linux-libre/releases/6.4-gnu/

[5] Создаем блог на Django с опросами и тестами. Краткая инструкция. Часть 1 : https://habr.com/ru/companies/selectel/articles/735556/

[6] OpenStack vs VMware: что лучше — open source или проприетарная платформа : https://habr.com/ru/companies/selectel/articles/735974/

[7] Когда типизация делает тебе больно: как у нас появился статический анализатор : https://habr.com/ru/companies/selectel/articles/735178/

[8] Источник: https://habr.com/ru/companies/selectel/articles/744356/?utm_source=habrahabr&utm_medium=rss&utm_campaign=744356