После двух месяцев разработки Линус Торвальдс объявил о запуске новая версия ядра Linux 6.4 и среди наиболее важных изменений выделяется непрерывная интеграция поддержки языка Rust, поддержка механизма Intel LAM, дедупликация страниц памяти на уровне процесса, поддержка итераторов в BPF, поддержка гибернации для систем RISC-V, среди прочего.
В новую версию интегрировано 16012 исправлений от 2080 разработчиков, добавлено 1006924 строки кода, удалено 597615 строк.
Основные новинки ядра Linux 6.4
В представленной новой версии Linux 6.4 одной из главных новинок является возможность создавать драйверы уровня ядра из процессов пользовательского пространства. В отличие от использования kthread API, контроллеры, созданные в пользовательском пространстве, наследуют свойства процесса и запускаются с учетными данными процесса пользовательского пространства.
Еще одно заметное изменение связано с ветвью Rust-for-Linux, в котором продолжается портирование функциональности связанные с использованием Rust в качестве второго языка для разработки драйверов и модулей ядра. В этой новой версии Linux 6.4 мы можем обнаружить, что API-интерфейс pin-init для безопасной инициализации прикрепленных структур данных, а также поддержку условных переменных (CondVar) и то, что Реализован пакет UAPI для взаимодействия с пользовательским пространством.
В дополнение к этому мы также можем обнаружить, что реализован вариант механизма объединения одинаковых страниц памяти, который работает на уровне процессов и может значительно сократить потребление памяти за счет дедупликации страниц с одинаковым содержимым. В отличие от механизма KSM в новой реализации, поддержка дедупликации включена через prctl для всего процесса и он наследуется для дочерних процессов, без необходимости активации для каждого диапазона памяти с помощью madvise, что существенно упрощает приложение.
Кроме того, Непривилегированные процессы могут получать информацию от подсистемы ядра PSI. (Информация о блокировке под давлением), которая позволяет анализировать пользовательское пространство информации о тайм-аутах для различных ресурсов (ЦП, памяти, ввода-вывода) для точной оценки моделей загрузки и замедления на уровне системы.
Также подчеркивается, что для систем, основанных на архитектуре RISC-V, поддерживается спящий режим, а ядро может быть скомпилировано в виде связанного файла в режиме PIE. (позиционно-независимые исполняемые файлы), в дополнение к добавлен новый системный вызов riscv_hwprobe() предоставить информацию о производителе и архитектуре доступного оборудования.
Добавлены изменения в XFS для реализации сканирования FS на лету. (inline cleanup), который, как ожидается, будет включен в один из следующих выпусков (хотя онлайн-документация для fsck уже добавлена).
В Ext4 упрощена организация ввода, Помимо того, что они были проведены оптимизация предварительного выделения инодов для повышения производительности на системах с большим количеством случайных операций записи. Операции чтения и записи страниц памяти были перенесены на использование фолио страниц памяти.
btrfs переписала код проверки файловой системы для использованияscrub_stripe, поддерживает проверку RAID56 и работает примерно на 10 % быстрее. Улучшена производительность ведения журнала каталогов (удаление перечисления индексов во время ведения журнала позволило сократить время, затрачиваемое на выполнение fsync в 4 раза).
Из другие изменения, которые выделяются этой новой версии:
- В файловую систему F2FS добавлена поддержка зонированных блочных устройств, где размер зон не кратен степени двойки.
- Изменено кодирование команд ioctl для драйвера ublk, что привносит определенную логику на сторону процесса в пространстве пользователя.
- Добавлен параметр сборки UBLK_LEGACY_OPCODES для обеспечения совместимости со старыми драйверами.
- Запрещено отключать и загружать модуль SELinux во время работы.
- Отключить SELinux теперь можно только на начальной стадии загрузки, передав параметр «selinux=0» в командной строке ядра.
- Добавлена поддержка гипервызовов Hyper-V, которые используются для переадресации PCI-устройств гостям с драйверами Hyper-V. С
- Гипервизор KVM реализует структуру для переноса обработки запросов SMCCC в пространство пользователя, что позволяет реализовать многие операции, связанные с виртуализацией, в пространстве пользователя, не добавляя их в ядро.
- Добавлена возможность присоединения программ BPF для обработки привязок NetFilter, например для создания контроллера, который решает пересылать пакеты или выполнять действия на этапе предварительной маршрутизации.
- Драйвер msi-ec был добавлен, чтобы позволить пользовательскому пространству управлять расширенными функциями ноутбука MSI, такими как выбор профиля питания, управление скоростью вращения вентилятора, управление светодиодами и уровни нагрузки.
наконец, если вы интересно узнать об этом больше, вы можете проверить подробности По следующей ссылке.