После двух месяцев работы Линус Торвальдс объявил о запускеи новая версия ядра Линукс 6.13, который приносит с собой важные достижения и новинки. Среди основных новинок, которые он представляет, выделяются: модель ленивого приоритета, которая находится между добровольным и полным режимами, включение поддержка атомарной записи в файловые системы, такие как XFS и Ext4.
Другие изменения включают драйвер virtual-cpufreq, новый API netlink net-shapэ-э, и режим монтирования tmpfs, который теперь чувствителен к регистру, а также поддержка расширений POSIX в SMB3, и драйвер оптимизатора кэша от AMD.
В эту новую версию внесли вклад 2086 разработчиков, которые внесли в общей сложности 14,172 15,375 исправления, затронувшие 598,707 406,294 файлов, в результате чего было добавлено XNUMX XNUMX строк кода и удалено XNUMX XNUMX строки.
Основные новые возможности Linux 6.13
Ядро 6.13, одно из самых важных изменений внедрение механизма «детализированных временных меток» что повышает точность получения данных об изменениях или доступе к файлам, достигая точности более миллисекунды без негативного влияния на производительность.
Еще одна новая функция, представленная в Linux Kernel 6.13, — этоподдержка атомной записи, что гарантирует, что данные, размер которых превышает размер сектора, записываются атомарно на устройства, поддерживающие эту функцию. В настоящее время эта функциональность Он доступен в таких файловых системах, как XFS, Ext4 в режиме O_DIRECT, и в конфигурациях RAID 0/1/10 с md.
Что касается других файловых систем, Linux 6.13 знаменует собой окончательное удаление ReiserFS, EROFS теперь поддерживает параметры SEEK_HOLE и SEEK_DATA в lseek(), а В F2FS добавлена поддержка псевдонимов устройств.В sy XFS добавлена поддержка квот на устройствах реального времени и улучшено управление каталогами метаданных. Кроме того, SMB3 теперь поддерживает расширения POSIX, необходимые для хранения специальных файлов, таких как символические ссылки и файлы устройств.
В памяти и системных службах новая модель ленивых предпочтений (PREEMPT_LAZY). Эта модель позволяет сохранять возможности упреждения завершается для задач реального времени, задерживая вытеснение обычных задач до предела тика. Кроме того, модель упрощает логику планировщика задач, удаляя из процесса планирования драйверы из других частей ядра.
По поводу оптимизации сборки, интегрирована поддержка оптимизации AutoFDO при компиляции с Clang, Было показано, что которые используют профили выполнения для настройки кода и повышения производительности, сокращают задержку на 10%. В системный вызов madvise() также добавлен новый флаг, позволяющий улучшить управление памятью процесса. Флаг MADV_GUARD_INSTALL позволяет переопределить определенные адреса защиты страниц, предотвращая исключения доступа (SIGSEGV) без необходимости выделения новых областей виртуальной памяти.
IO_uring также получил несколько улучшений., включая возможность изменять размер буферов, синхронно отправлять сообщения между кольцевыми буферами и частично клонировать буферы. Кроме того, был реализован гибридный опрос ввода-вывода, а API был расширен для регистрации кольцевых буферов и областей памяти.
Что же касается аппаратные улучшения, добавлена возможность обнаружения «сплит-блокировок» на процессорах AMD, явление, которое возникает, когда данные неправильно выровнены в памяти и пересекают две строки кэша, что может серьезно повлиять на производительность. Чтобы устранить эту проблему, был интегрирован драйвер AMD Cache Optimizer, который использует преимущества технологии AMD 3D V-Cache для повышения производительности отдельных ядер ЦП либо за счет увеличения размера доступного кэша L3, либо за счет увеличения частоты.
Для архитектуры MIPS, добавлена поддержка систем с несколькими контроллерами прерываний. кластеры, предоставляя отдельный обработчик прерываний для каждого кластера ЦП. Также была реализована новая операция ioctl PIDFD_GET_INFO, которая позволяет получать информацию о процессе, используя его идентификатор PIDFD, который остается постоянным, даже если связанный с ним PID изменяется при завершении процесса.
En ARM, ключевые достижения включают поддержку запуска Linux на виртуальных машинах. защищены архитектурой конфиденциальных вычислений Arm, а также поддерживаются теневые стеки в пользовательском пространстве, что повышает безопасность. Он также реализует новый механизм подсчета ссылок для файлов, достижение большей масштабируемости.
El Планировщик задач теперь поддерживает механизм выполнения прокси., решая задачу инверсии приоритетов. Этот механизм не позволяет задачам с низким приоритетом задерживать ресурсы, необходимые задачам с высоким приоритетом (в реальном времени), блокируя их. Кроме того, контексты программирования и выполнения процессов были разделены.
С другой стороны, он подчеркивает миграция изменений, связанных с использованием Rust в разработке драйверов и модулей ядра. Хотя Поддержка Rust по умолчанию не включена, добавлены привязки и структуры данных. чтобы разрешить написание драйверов на этом языке, включая поддержку событий трассировки и драйвер Binder, переписанный на Rust.
Подсистема BPF улучшился благодаря внедрению отдельного стека для программ BPF. что снижает риск переполнения при обработке больших цепочек вызовов. Также была добавлена возможность отправлять сигналы другим процессам и использовать общую память в картах BPF, что облегчает передачу нагрузки между драйверами планировщика задач.
Кроме того, Улучшено отслеживание исключений для генерации ошибок страниц. когда точки трассировки запускаются в системных вызовах, что позволяет считывать параметры, передаваемые из пользовательского пространства. Параметр Transparent_hugepage_shmem также был добавлен для управления использованием больших страниц памяти в файловых системах tmpfs и shmem.
В сетях его внедряют поддержка приостановки NAPI во время бездействия, улучшение энергопотребления и новый API сетевых устройств, который упрощает расширенную настройку оборудования передачи (TX). Кроме того, io_uring получил несколько оптимизаций, улучшающих обработку асинхронных операций ввода/вывода.
Наконец-то это было реализованоподдержка в реальном времени архитектуры Loongarch и новые расширения архитектуры RISC-V, которые позволяют маскировать указатели в пользовательском пространстве. Чтобы улучшить сжатие образа ядра, алгоритм по умолчанию был изменен на lz4 вместо lz4c.
Хотите узнать больше об этом, вы можете ознакомиться с подробностями По следующей ссылке.