Pas dy muajsh zhvillimi, Linus Torvalds paraqiti релиз ядра Linux 6.14. Среди наиболее заметных изменений: драйвер ntsync c примитивами синхронизации Windows NT, настройка балансировки операций чтения в Btrfs RAID1, поддержка reflink в XFS в режиме realtime, возможность некэшируемого буферизированного ввода/вывода, dmem cgroup для ограничения памяти GPU, задействование io_uring в FUSE, делегирование атрибутов в NFS, поддержка атомарной записи в Device mapper, ускорение символических ссылок, управление возможностью выполнения скриптов, поддержка чипов Qualcomm Snapdragon 8 Elite, драйвер для NPU AMD.
В новую версию принято 12115 исправлений от 1984 разработчиков, размер патча – 39 МБ (изменения затронули 10170 файлов, добавлено 531586 строк кода, удалено 235999 строк). В прошлом выпуске было 14172 исправлений от 2086 разработчиков, размер патча – 46 МБ. Около 41% всех представленных в 6.14 изменений связаны с драйверами устройств, примерно 13% изменений имеют отношение к обновлению кода, специфичного для аппаратных архитектур, 14% связано с сетевым стеком, 7% – с файловыми системами и 4% c внутренними подсистемами ядра.
- Sistemi i disqeve, hyrja/ dalje dhe sistemet e skedarëve
- В файловой системе Btrfs ka dalë поддержка новых методов балансировки операций чтения между накопителями, входящими в массив RAID1. Помимо ранее действующего распределения нагрузки на основе идентификаторов процессов (pid), в новой версии предложены три новых режима балансировки: «rotation» (равномерное распределение нагрузки по всем накопителям, режим включён по умолчанию); «latency» (распределение с учётом задержек, может быть полезным при сбоях или нестабильной работе накопителей); devid (ручное управление). Для изменения режима балансировки është shtuar интерфейс /sys/fs/btrfs/<UUID>/read_policy. Среди других изменений в Btrfs – реализация ioctl FS_IOC_READ_VERITY_METADATA.
- Shtuar режим некэшируемого буферизированного ввода/вывода, при котором данные удаляются из страничного кэша сразу после того, как завершены операции по их чтению или записи. Изменение может быть полезным при использовании очень быстрых устройств хранения, кэширование операций с которыми в оперативной памяти избыточно. Для таких устройств новый режим позволяет исключить излишнее расходование памяти страничным кэшем не прибегая к использованию усложнённого API прямого ввода/вывода (Direct I/O).
- В fsnotify, механизм отслеживания изменений в ФС, filtrimi i pakove dhe përditësimet me "një klik". новое событие FS_PRE_ACCESS, генерируемое на стадии перед обращением к содержимому файла. Событие обрабатывается в синхронном режиме, т. е. ядро отправляет событие и ожидает получения ответа. Если ответ получен – операция выполняется, а если произошёл сбой – системный вызов возвращает в пространство пользователя код ошибки. При помощи FS_PRE_ACCESS процессом в пространстве пользователя, например, может быть организовано заполнение файла по мере готовности данных в медленном хранилище.
- В подсистему FUSE, позволяющую создавать реализации файловых систем в пространстве пользователя, добавлена поддержка обмена данными между ядром и обработчиком в пространстве пользователя с использованием механизма ввода/вывода io_uring. Изменение позволяет повысить производительность FUSE за счёт сокращения переключений контекста между ядром и пространством пользователя.
- В файловую систему XFS добавлена mundësia использования обратного маппинга (rmap, reverse-mapping) в режиме работы с предсказуемыми задержками («realtime device»). Обратный маппинг позволяет определить для хранения какого файла используется указанный блок на устройстве хранения. При помощи rmap в XFS для realtime-режима реализована поддержка операции reflink, позволяющей создавать копии файлов путём клонирования метаданных файла и создания ссылки на уже имеющиеся данные без их фактического копирования.
- В VFS është zbatuar кэширование размера символических ссылок, позволившее на 1.5% ускорить выполнение операции readlink (в тесте с /initrd.img в ext4). Кэширование включено в ФС ext4 и tmpfs.
- В реализацию NFSv4.2 добавлена поддержка делегирования атрибутов файлов, позволяющая управлять такими атрибутами файлов, как время изменения (mtime), на стороне NFS-клиента, без необходимости сброса изменений на сервер. В NFS также улучшена поддержка протокола «LOCALIO», позволяющего определить находятся ли клиент и сервер NFS на одном и том же хосте, для задействования соответствующих оптимизаций, таких как использование клиентом прямого ввода/вывода (Direct I/O).
- Повышена производительность операций чтения в файловых системах NETFS, CIFS и AFS (Andrew File System).
- В Squashfs është aktivizuar режим прямой загрузки блоков в страничный кэш (SQUASHFS_FILE_DIRECT), позволяющий обойтись без отдельного кэша read_page. Изменение позволило сократить размер памяти, потребляемой при работе Squashfs.
- В системном вызове statx() është implementuar флаг STATX_DIO_READ_ALIGN, для определения требуемого выравнивания для операций чтения из файла.
- В файловой системе Bcachefs обновлён dhe стабилизирован формат дисковых структур. Любые дальнейшие изменения формата будут отнесены к категории необязательных и будут реализовываться в форме опциональных дополнений. Значительно повышена скорость проверки целостности ФС. Кроме того, в Bcachefs улучшена работа в режиме только для чтения; устранены проблемы, приводящие к обращению к памяти после её освобождения (use after free); решены проблемы c reflink-указателями в fsck; исправлена обработка перезапуска транзакции.
- Возвращён модуль md-linear, предназначенный для объединения блочных устройств. Данный модуль ранее был объявлен устаревшим и удалён из ядра 6.8, но как оказалось он был востребован и поэтому теперь восстановлен.
- Файловые системы F2FS и SQUASHFS переведены на использование фолиантов страниц памяти (page folios).
- В драйвере null_blk реализован атрибут «rotational», выставляемый через configfs и позволяющий симулировать работу с устройством на базе вращающихся дисков для упрощения тестирования функций ядра.
- В системе Device mapper и в модулях dm-mirror, dm-io, dm-table, dm-linear, dm-stripe и dm-raid1 është implementuar поддержка атомарной записи.
- Memorie dhe shërbime sistemike
- Завершена интеграция в ядро драйвера ntsync, реализующего символьное устройство /dev/ntsync и набор примитивов для синхронизации, применяемых в ядре Windows NT. Реализация подобных примитивов на уровне ядра позволяет существенно поднять производительность Windows-игр, запускаемых при помощи Wine. Прирост производительности достигается благодаря избавлению от накладных расходов, связанных с применением RPC в пространстве пользователя. Создание отдельного драйвера для ядра Linux объясняется проблематичностью корректной реализации API синхронизации NT поверх существующих примитивов в ядре.
- Добавлен новый контроллер cgroup DMEM для раздельного учёта областей памяти устройств, таких как GPU. DMEM позволяет создавать отдельные cgroup для различных задач, работающих с GPU, чтобы они могли выполняться не влияя друг на друга. Новая возможность решает проблему с принудительным завершением операций с GPU при исчерпании доступной памяти, благодаря учёту отражённой памяти GPU и используемой драйверами памяти CPU в отдельных cgroup.
- Внесены оптимизации по масштабированию операции сброса (flush) кэша TLB (Translation Lookaside Buffer), применяемого для ускорения преобразования виртуальных адресов в физические. Добавленные оптимизации сводятся к отложенному обновлению некоторых структур данных во время переключения контекста, что позволяет повысить производительность при прохождении некоторых тестов.
- Повышена производительность механизма MGLRU (Multi-Generational LRU), применяемый для определения какие страницы памяти используются, а какие можно вытеснить в раздел подкачки.
- Продолжен перенос изменений из ветки Rust-for-Linux, связанных с использованием языка Rust в качестве второго языка для разработки драйверов и модулей ядра (поддержка Rust не активна по умолчанию, и не приводит ко включению Rust в число обязательных сборочных зависимостей к ядру). Предоставлена возможность использования в коде ядра макроса «derive(CoercePointee)», позволяющего использовать умные указатели с trait-объектами. В состав ядра are packages with proprietary NVIDIA drivers. For systems with NVIDIA graphics chips, free "Nouveau" drivers continue to be offered by default, while proprietary drivers are available as an option for quick installation after the installation is completed; Rust-обвязки для PCI, платформ, Open Firmware, символьных устройств и некоторых функций ввода/вывода. Грег Кроа-Хартман (Greg Kroah-Hartman), отвечающий за поддержку стабильной ветки ядра Linux, охарактеризовал текущее состояние, как «почти готовность к написанию реального драйвера на Rust».
- В сборочных сценариях suggested новый код для генерации версий отладочных символов для загружаемых модулей, который теперь использует информацию из отладочных записей в формате DWARF, а не разбирает исходный код напрямую. Изменение позволяет применять версионирование отладочных символов для модулей, написанных на языке Rust. Старая реализация тоже оставлена в ядре, а выбор генератора производится на уровне сборочных опций.
- Для архитектуры PowerPC është implementuar поддержка режима ленивого вытеснения задач (PREEMPT_LAZY, lazy preemption), который соответствует режиму полного вытеснения («full preemption») для realtime-задач (RR/FIFO/DEADLINE), но задерживает вытеснение обычных задач (SCHED_NORMAL) до границы тика.
- В подсистему профилирования производительности perf është shtuar поддержка счётчиков энергопотребления процессоров AMD. Shtuar возможность работы на системах, насчитывающих до 2048 ядер CPU.
- U ofrua возможность использования sysctl-параметра pid_max с пространствами имён идентификаторов процессов (ID namespace). Параметр pid_max предназначен для ограничения максимального значения идентификаторов процессов (PID) и теперь может использоваться для ограничения максимально возможного числа процессов, запущенных в указанном пространстве имён. Обработка параметра производится иерархически, т. е. ограничения во внешних пространствах имён распространяются на вложенные пространства имён.
- При использовании для запуска процесса системного вызова execveat в файловой системе /proc теперь будет отображаться имя запущенного файла, а не номер файлового дескриптора.
- В состав исходного кода ядра (в каталог samples) добавлена утилита mountinfo, демонстрирующая использование системных вызовов statmount() и listmount().
- В подсистеме BPF u propozuan новые функции bpf_local_irq_save() и bpf_local_irq_restore() для временного отключения прерываний на локальном CPU. Функции могут применяться для реализации структур, обработка которых не приостанавливается прерываниями.
- В системном вызове madvise() при использовании флагов MADV_DONTNEED и MADV_FREE është siguruar освобождение таблиц страниц памяти, связанных с освобождаемым диапазоном адресов, так как в некоторых ситуациях пустые страницы памяти могут занимать достаточно много памяти.
- Для архитектуры OpenRISC реализована поддержка механизма перезапускаемых последовательностей (rseq, restartable sequences), предназначенного для быстрого атомарного выполнения операций, которые в случае прерывания другим потоком очищаются и предпринимается повторная попытка выполнения.
- Është bërë një reorganizim i kodit me implementimin e algoritmave CRC32 dhe CRC-T10DIF, i cili nuk përplaset më me nën-sistemin crypto dhe thirret drejtpërdrejt nga interfaci i bibliotekës. Ndryshimi ka mundësuar thjeshtimin e kodit dhe rritjen e efikasitetit të tij.
- В систему асинхронного ввода/вывода io_uring është shtuar интерфейс для передачи дополнительных метаданных о целостности при выполнении операций чтения и записи.
- Virtualizimi dhe siguria
- В системный вызов execveat është shtuar флаг AT_EXECVE_CHECK, позволяющий выполнить проверку допустимости исполнения файла без его фактического запуска, но c учётом политик безопасности, прав доступа и активных LSM-модулей. Для использования в сочетании с AT_EXECVE_CHECK предложены securebit-флаги SECBIT_EXEC_RESTRICT_FILE и SECBIT_EXEC_DENY_INTERACTIVE, которые можно использовать для ограничения исполнения файлов со скриптами на интерпретируемых языках программирования. Флаг SECBIT_EXEC_RESTRICT_FILE предписывает компоновщикам и интерпретаторам использовать опцию AT_EXECVE_CHECK для проверки допустимости исполнения, а флаг SECBIT_EXEC_DENY_INTERACTIVE запрещает обрабатывать интерактивные команды. Основная идея изменения в возможности применения политик безопасности не только к традиционным исполняемым файлам, но и к текстовым файлам со скриптами, которые можно загрузить через запуск интерпретатора (т. е. запрет на исполнение может быть реализован не только при запуске «./script.sh» но и при выполнении в форме «sh script.sh»).
- На системах x86 реализована поддержка защищённых счётчиков времени для гостевых систем, не позволяющих изменять системные часы гостевой системы из хост окружения. Возможность реализована на базе механизма AMD SEV (Secure Encrypted Virtualization), применяемого в системах виртуализации для защиты виртуальных машин от вмешательства со стороны гипервизора или администратора хост-системы.
- В систему мандатного контроля доступа SELinux është shtuar поддержка xperm-правил, позволяющих привязывать политики SELinux к определённым вызовам ioctl() или сообщениям netlink.
- Для заверения модулей ядра цифровой подписью вместо SHA1 по умолчанию the LZ4 algorithm has been used алгоритм SHA512.
- В драйверах для гостевых систем VirtualBox është përfshirë поддержка архитектуры ARM64.
- В гипервизоре KVM продолжена puna над задействованием механизма Intel TDX (Trusted Domain Extensions) для шифрования памяти гостевых систем.
- В virtio_blk është shtuar поддержка режима восстановления ошибок.
- Sistemi rrjetor
- В реализации протокола RxRPC ka dalë возможность использования больших кадров UDP для повышения пропускной способности.
- Для TCP добавлена поддержка алгоритма RACK-TLP для определения потери пакетов.
- Shtuar новый параметр sysctl tcp_tw_reuse_delay, действующий в привязке к пространству имён (network namespace) и позволяющий определить задержку, вносимую перед тем как система сможет повторно использовать номер сетевого порта после закрытия TCP-сокета.
- Shtuar возможность выбора провайдера точного времени (PTP) для формирования временных меток на уровнях PHY и MAC.
- Для IPsec është implementuar поддержка механизма агрегирования и фрагментирования инкапсулированных IP-пакетов – IP-TFS/AGGFRAG (IP Traffic Flow Security/Aggregation and Fragmentation Mode for Encapsulating Security Payload).
- В систему сетевых сокетов është shtuar поддержка передачи информации о приоритете (SO_PRIORITY) в форме управляющих сообщений (cmsg — control messages). Для сетевых сокетов është shtuar опция SO_RCVPRIORITY, включающая в функции recvmsg() передачу информацию о приоритете сокета.
- Pajisje
- Shtuar драйвер amdxdna для интегрированных в CPU AMD ускорителей NPU (Neural Processing Unit) на базе архитектуры XDNA, предназначенных для ускорения операций, связанных с машинным обучением. NPU на базе архитектуры XDNA поставляется в сериях 7040 и 8040 процессоров AMD Ryzen, ускорителях AMD Alveo V70 и SoC AMD Versal.
- В драйвер i915 janë shtuar идентификаторы новых GPU, реализован обработчик сбоев инициализации HDMI, повышена надёжность сброса движков GPU на Haswell и более старых системах.
- Ka vazhduar работа над drm-драйвером (Direct Rendering Manager) Xe для GPU на базе архитектуры Intel Xe, которая используется в видеокартах Intel семейства Arc и интегрированной графике, начиная с процессоров Tiger Lake.
- Në drejtorin Nouveau është shtuar mundësia për të transmetuar buferët me logjet GSP-RM përmes debugfs.
- В драйвере AMDGPU реализована поддержка механизма DRM panic, отображающего подобие «синего экрана смерти» при сбоях. Продолжена подготовка к поддержке будущей серии графических карт Radeon RX 9000 на базе архитектуры RDNA4. Обновлена поддержка DCN 3.5, GG 9.5, IH 4.4, PSP 13.x, SMU 13.x, VCN 5.x, JPEG 5.x, GC 12.x, DC FAMS, RAS и ISP.
- В DRM-драйвер msm (GPU Qualcomm Adreno) добавлена поддержка платформы Qualcomm SM6150 (QCS615).
- Në drejtorin DRM panfrost është shtuar mbështetje për SoC MediaTek MT8188 me GPU Mali-G57.
- Në drejtorin DRM vc4 është shtuar mbështetje për SoC Broadcom BCM2712 (Raspberry Pi 5).
- В vfio-драйвер nvgrace-gpu është shtuar поддержка чипов NVIDIA Grace Blackwell 200.
- Në përbërje është aktivizuar драйвер для контроллеров Intel THC (Touch Host Controller), применяемый для взаимодействия с сенсорными экранами и тачпадами на некоторых ноутбуках. Добавлена поддержка устройств Wacom с интерфейсом PCI. Shtuar поддержка игровых контроллеров QH Electronics.
- Shtuar поддержка ARM-плат, SoC и устройств: Qualcomm Snapdragon 8 Elite (SM8750), Qualcomm Snapdragon AR2 (SAR2130P), Qualcomm IQ6/IQ8, Snapdragon 425 (MSM8917), Samsung Exynos 9810, Blaize BLZP1600, Microchip SAMA7D65, Renesas R-Car V4H ES3.0, Renesas RZ/G3E. Добавлена поддержка SoC SpacemiT K1 на базе архитектуры RISC-V.
- В звуковой подсистеме ALSA для MIDI 2.0 janë zgjeruar API rawmidi и sequencer. В API для выноса операций сжатия на сторону звуковой карты добавлена поддержка ASRC (Asynchronous Sample Rate Conversion).
- Добавлена поддержка звуковых систем устройств Allwinner suinv F1C100s, Awinc AW88083, Realtek ALC5682I-VE, TAS2781, Focusrite Scarlett 4th Gen 16i16, 18i16 и 18i20. Shtuar поддержка беспроводных наушников SteelSeries Arctis 9.
Burimi: linux.org.ru
