След два месеца работа, Линус Торвалдс обяви старта наи новата версия на ядрото linux 6.13, което носи със себе си важни постижения и новости. Сред основните новости, които представя, се откроява: модел за мързеливо превключване, който е позициониран между доброволен и пълен режим, включването на поддръжка за атомарни записи във файлови системи като XFS и Ext4.
Други промени включват драйвера virtual-cpufreq, the нов netlink net-shap APIи режим на монтиране на tmpfs, който вече е чувствителен към малки и главни букви, заедно с поддръжка за POSIX разширения в SMB3, и драйвер за оптимизиране на кеша от AMD.
Тази нова версия има приноса на 2086 разработчици, които направиха общо 14,172 15,375 корекции, засягащи 598,707 406,294 файла и довели до добавянето на XNUMX XNUMX реда код, с елиминирането на XNUMX XNUMX реда.
Основни новини в Linux 6.13
Ядро 6.13, една от най-важните промени е въвеждането на механизма за „фини времеви отпечатъци“. което подобрява прецизността при получаване на данни за модификации или достъпи до файлове, постигайки прецизност, по-голяма от милисекунда, без да се отразява отрицателно на производителността.
Друга нова функция, която ядрото на Linux 6.13 представя, е sподдръжка за атомни записи, което гарантира, че данните, по-големи от размера на сектора, се записват атомарно на устройства, които поддържат тази функция. В момента тази функционалност Предлага се във файлови системи като 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 също получи няколко подобрения, включително възможността за преоразмеряване на буфери, изпращане на съобщения синхронно между пръстенни буфери и частично клониране на буфери. Освен това е внедрено хибридно I/O запитване и API е разширен, за да регистрира пръстеновидни буфери и области на паметта.
Относно хардуерни подобрения, добавена е възможност за откриване на "split-locks" на AMD CPU, феномен, който възниква, когато данните не са правилно подравнени в паметта и преминават през две кеш линии, което може сериозно да повлияе на производителността. За смекчаване на този проблем е интегриран драйверът AMD Cache Optimizer, който се възползва от технологията AMD 3D V-Cache, за да подобри производителността на отделните CPU ядра, или чрез увеличаване на размера на наличния L3 кеш, или чрез увеличаване на честотата.
За архитектури MIPS, добавена е поддръжка за системи с множество контролери за прекъсване. клъстери, осигурявайки отделен манипулатор на прекъсвания за всеки процесорен клъстер. Реализирана е и нова ioctl операция, PIDFD_GET_INFO, която позволява информация за процес да бъде получена чрез неговия PIDFD идентификатор, който остава постоянен, дори ако свързаният PID се промени, когато процесът приключи.
En ARM, ключовите подобрения включват поддръжка за стартиране на Linux на виртуални машини защитени от Arm Confidential Computing Architecture, както и поддръжка за стекове в сянка на потребителското пространство, подобряващи сигурността. Той също така прилага a нов референтен механизъм за броене на файлове, постигане на по-голяма мащабируемост.
El Планировчикът на задачи вече поддържа механизъм за изпълнение на прокси, решаване на проблема с инверсията на приоритета. Този механизъм не позволява на задачите с нисък приоритет да задържат ресурси, необходими на задачи с висок приоритет (в реално време), като ги блокират. В допълнение контекстите на програмиране и изпълнение на процесите са разделени.
От друга страна, подчертава миграция на промени, свързани с използването на Rust в разработването на драйвери и модули на ядрото. въпреки че Поддръжката на Rust не е активирана по подразбиране, добавени са свързвания и структури от данни за да позволи писане на драйвери на този език, включително поддръжка за проследяване на събития и драйвера на Binder, пренаписан на Rust.
Подсистемата BPF се подобри с прилагането на отделен стек за BPF програми, което намалява риска от препълване при обработка на големи вериги от повиквания. Възможността за изпращане на сигнали към други процеси и за използване на споделена памет в BPF карти също е добавена, улеснявайки комуникацията при натоварване между драйверите за планиране на задачи.
В допълнение, Проследяването на изключения е подобрено за генериране на грешки в страницата когато точките за проследяване се задействат при системни извиквания, което позволява да се четат параметри, предадени от потребителското пространство. Параметърът transparent_hugepage_shmem също е добавен, за да контролира използването на големи страници с памет във файловите системи tmpfs и shmem.
В мрежите се въвежда поддръжка за спиране на NAPI по време на неактивност, подобряване на консумацията на енергия и нов API за мрежови устройства, който улеснява разширената конфигурация на хардуера за предаване (TX). Освен това io_uring получи няколко оптимизации, които подобряват обработката на асинхронни входно/изходни операции.
Най-после е приложеноподдръжка в реално време за Loongarch архитектура и нови разширения на RISC-V архитектурата, които позволяват маскиране на указатели в потребителското пространство. За да се подобри компресията на образа на ядрото, алгоритъмът по подразбиране е променен на lz4, замествайки lz4c.
Ако се интересувате да научите повече за това, можете да се консултирате с подробностите В следващия линк.