Релиз на ядрото Linux 6.0

След като разви ядро Linux 6.0 в продължение на два месеца, Линус Торвалдс представи окончателния релиз. Значителната промяна на версията е направена по естетически причини и е формална стъпка, която премахва дискомфорта от натрупването на много издания в серията (Линус се шегува, че причина за смяната на номера на клона е, че свършва с пръстите на ръцете и краката да брои номера на версиите). Някои от най-забележимите промени включват: поддръжка на асинхронна буферирана запис в XFS, блочен драйвер ublk, оптимизация на планиращия механизъм, механизъм за проверка на коректността на работата на ядрото, и поддръжка на блочен шифър ARIA.

Основни нововъведения в ядрото 6.0:

  • Дискова подсистема, вход/изход и файлови системи
    • В файловата система XFS е добавена поддръжка за асинхронна буферирана запис с използване на механизма io_uring. Тестовете за производителност, проведени с инструмента fio (1 поток, размер на блока 4KB, 600 секунди, последователно записване), показват увеличаване на броя на операциите за вход/изход в секунда (IOPS) от 77K до 209K, скоростта на предаване на данни - от 314MB/s до 854MB/s, и намаление на забавянията от 9600ns до 120ns (80 пъти).
    • В файловата система Btrfs е реализирана втора версия на протокола за командата 'send', която добавя поддръжка на допълнителни метаданни, изпращане на данни в по-големи блокове (над 64K) и предаване на екстентове в компресиран вид. Значително (до 3 пъти) е увеличена производителността на операциите за директно четене (direct read) чрез едновременно четене на до 256 сектора. Намалени са конфликтите с блокировките и е ускорена проверката на метаданните чрез съкращаване на резервираното количество метаданни за отложени елементи.
    • В файловата система ext4 са добавени нови ioctl-операции EXT4_IOC_GETFSUUID и EXT4_IC_SETFSUUID за извличане или задаване на UUID идентификатора, съхраняван в суперблока.
    • В файловата система F2FS е предложен режим с ниско потребление на памет, който оптимизира работата на устройства с малък обем на RAM и позволява намаляване на потреблението на памет за сметка на производителността.
    • Добавена е поддръжка за удостоверяване на NVMe устройства.
    • В сървър В NFSv4 е реализиран лимит на броя на активни клиенти, който е зададен на 1024 допустими клиенти за всеки гигабайт оперативна памет в системата.
    • В изпълнението на CIFS клиента е повишена производителността в режим на многоканална предаване.
    • В подна sistema за проследяване на събития във файловата система fanotify е добавен нов флаг FAN_MARK_IGNORE за игнориране на специфични събития.
    • В Overlayfs, при монтиране върху файловата система с мапинг на идентификатори на потребители, е осигурена коректна поддръжка на POSIX-съвместими списъци за управление на достъпа.
    • Добавен е блочен драйвер ublk, изнасящ специфичната логика на страната на фоновия процес в пространството на потребителя и използващ подсистемата io_uring.
  • Памет и системни услуги
    • В подсистема DAMON (Мониторинг на достъпа до данни) са добавени нови възможности, позволяващи не само проследяване на достъпа на процесите до оперативната памет от пространството на потребителя, но и влияние върху управлението на паметта. По-специално, предложен е нов модул "LRU_SORT", осигуряващ прегрупиране на списъците LRU (Най-отдавна употребявани) за повишаване на приоритета на определени страници памет.
    • Реализирана е възможност за създаване на нови региони памет, използвайки възможностите на шина CXL (Compute Express Link), прилагана за организиране на високоскоростна комуникация между CPU и устройства за памет. CXL позволява свързването на нови региони памет, предоставени от външни устройства за памет, и използването им като допълнителни ресурси на физическото адресно пространство за разширяване на системната оперативна памет (DDR) или постоянна памет (PMEM).
    • Решени са проблемите с производителността на системите с процесори AMD Zen, причинени от код, добавен преди 20 години за заобикаляне на хардуерен проблем в някои чипсети (добавяна е допълнителна инструкция WAIT, която забавя процесора, за да може чипсетът да премине в режим на проста работа). Това изменение е довело до спад в производителността при натоварвания, при които често се редуват състояния на проста работа (idle) и активност (busy). Например, след деактивиране на заобикалящия маневър, средните резултати от теста tbench нараснаха от 32191 MB/s на 33805 MB/s.
    • От планировщика на задачи е премахнат код с хевристика, осигуряваща миграцията на процеси към най-слабо натоварените CPU, като се вземе предвид прогнозната печалба в енергийна ефективност. Разработчиците стигнаха до извода, че хевристиката не носи необходимата полза и е по-лесно да се прехвърлят процесите без допълнителна оценка всеки път, когато такъв пренос потенциално може да доведе до намаляване на енергийното потребление (например, когато целевият CPU е на по-ниско ниво на енергийно потребление). Деактивацията на хевристиката доведе до намаляване на енергийното потребление при интензивни задачи, например, в теста с декодиране на видео енергийното потребление е намалено с 5.6%.
    • Извършена е оптимизация на разпределението на задачите по ядра на CPU в големи системи, което доведе до повишаване на производителността при определени видове натоварване.
    • В интерфейса на асинхронния вход/изход io_uring е предложен нов флаг IORING_RECV_MULTISHOT, позволяващ използването на режим 'multi-shot' с системния повик recv() за извършване на няколко операции по четене едновременно от един мрежови сокет. В io_uring също така е реализирана поддръжка на мрежова трансфера без междинна буферизация (zero-copy).
    • Реализирана е възможността за поставяне на програми BPF, прикрепени към uprobe, в покой. В BPF също е добавен нов итератор ksym за работа с таблици на ядрени символи.
    • Премахнат е остарял интерфейс 'efivars' в sysfs, предназначен за достъп до стартови променливи UEFI (всички данни EFI вече се достъпват чрез виртуална ФС efivarfs).
    • В утилитата perf са реализирани нови отчети за анализ на блокировъчни конфликти и времето, което процесорът отделя за изпълнение на компоненти на ядрото.
    • Премахната е настройката CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3, позволяваща компилирането на ядрото в режим на оптимизация '-O3'. Отбелязва се, че експерименти с оптимизационни режими могат да се провеждат чрез предаване на флагове при компилиране ('make KCFLAGS=-O3'), а за добавяне на настройката в Kconfig е необходимо да се осигури повтарящо се профилиране на производителността, което да показва, че приложението в режим '-O3' на разгръщане на цикли предлага предимство в сравнение с нивото на оптимизация '-O2'.
    • Добавен debugfs интерфейс за получаване на информация за работата на отделни «memory shrinker» (обработчици, които се извикват при недостиг на памет и опаковат структури от данни в ядрото за намаляване на потреблението на памет).
    • За архитектурите OpenRISC и LoongArch е реализирана поддръжка на шина PCI.
    • За архитектурата RISC-V е реализирано разширение «Zicbom» за управление на устройства с DMA, несъгласувани с кеша (non-cache-coherent).
  • Виртуализация и безопасност
    • Добавен е механизъм за верификация RV (Runtime Verification) за проверка на коректността на работата в системи с висока надеждност, гарантиращи отсъствие на аварии. Проверката се извършва по време на изпълнение чрез привързване на обработчици към точки на проследяване, които сравняват фактическото изпълнение с предварително определен референтен детерминиран модел на автомата, който определя очакваното поведение на системата. Сверяването с модела по време на изпълнение се позиционира като по-леко и лесно за реализиране в практиката средство за потвърждаване на коректността на изпълнението в критично важни системи, допълващо класическите методи за потвърдена надеждност. Сред предимствата на RV се изтъква възможността за осигуряване на строга верификация без необходимост от отделна реализация на цялата система на езика за моделиране, както и гъвкаво реагиране на неочаквани събития.
    • Интегрирани са компоненти на ядрото за управление на анклави, базирани на технологията Intel SGX2 (Software Guard eXtensions), позволяваща на приложенията да изпълняват код в изолирани криптирани области на паметта, достъпът на останалата част от системата до които е ограничен. Технологията Intel SGX2 се поддържа в чиповете Intel Ice Lake и Gemini Lake и се различава от Intel SGX1 с допълнителни инструкции за динамично управление на паметта на анклавите.
    • За архитектурата x86 е реализирана възможност за предаване на затравка за генератора на псевдослучайни числа чрез настройките на зареждача.
    • В LSM модула SafeSetID е добавена възможност за управление на промените, извършвани чрез извикване на setgroups(). SafeSetID позволява на системните услуги безопасно да управляват потребителите без повишаване на привилегиите (CAP_SETUID) и без получаване на правомощията на потребителя root.
    • Добавена е поддръжка на блочния шифър ARIA.
    • В модула за управление на сигурността, основан на BPF, е реализирана възможност за прикрепяне на обработчици към отделни процеси и групи от процеси (cgroup).
    • Добавен е механизъм с реализация на watchdog за откриване на засядания на гостуващи системи, базиран на мониторинг на активността на vCPU.
  • Мрежовата подсистема
    • В подсистемата BPF са добавени обработчици за генериране и проверка на SYN cookies. Също така е добавен набор от функции (kfunc) за достъп и промяна на състоянието на връзките.
    • В безжичния стек е добавена поддръжка на механизма MLO (Multi-Link Operation), определен в спецификацията на WiFi 7, който позволява на устройствата да получават и изпращат данни едновременно, използвайки различни честотни диапазони и канали, например за установяване на съществуването на няколко канала за връзка между точка за достъп и клиентско устройство.
    • Подобрена е производителността на вградената в ядрото реализация на протокола TLS.
    • Добавен е параметър на командния ред на ядрото «hostname=», позволяващ задаването на името на хоста на ранен етап от зареждането, преди да бъдат стартирани компонентите на потребителското пространство.
  • Оборудване
    • В драйвера i915 (Intel) е осигурена поддръжка на дискретни видеокарти Intel Arc (DG2/Alchemist) A750 и A770. Предложена е начална реализация на поддръжката на GPU Intel Ponte Vecchio (Xe-HPC) и Meteor Lake. Продължава работата по поддръжката на платформата Intel Raptor Lake.
    • В драйвера amdgpu продължава работата по осигуряване на поддръжка на платформите AMD RDNA3 (RX 7000) и CDNA (Instinct).
    • В драйвера Nouveau е преработен кодът за поддръжка на дисплейни двигатели на GPU NVIDIA nv50.
    • Добавен е нов DRM драйвер logicvc за екраните LogiCVC.
    • В драйвера v3d (за GPU Broadcom Video Core) е реализирана поддръжка на платките Raspberry Pi 4.
    • В драйвера msm е добавена поддръжка на GPU Qualcomm Adreno 619.
    • В драйвера Panfrost е добавена поддръжка на GPU ARM Mali Valhall.
    • Добавена е начална поддръжка на процесорите Qualcomm Snapdragon 8cx Gen3, използвани в лаптопите Lenovo ThinkPad X13s.
    • Добавени са аудио драйвери за платформите AMD Raphael (Ryzen 7000), AMD Jadeite, Intel Meteor Lake и Mediatek MT8186.
    • Добавена е поддръжка на ускорители за системи с машинно обучение Intel Habana Gaudi 2.
    • Добавена е поддръжка на ARM SoC Allwinner H616, NXP i.MX93, Sunplus SP7021, Nuvoton NPCM8XX, Marvell Prestera 98DX2530 и Google Chameleon v3.

В същото време Латиноамериканският фонд за свободен софтуер разработи версия на напълно свободното ядро 6.0 — Linux-libre 6.0-gnu, очистено от елементи на фърмуер и драйвери, съдържащи несвободни компоненти или области от кода, чиято употреба е ограничена от производителя. В новото издание е забранено използването на блобове в драйвера CS35L41 HD-аудио и драйвера с интерфейс UCSI за микроконтролерите STM32G0. Осъществено е почистване на dts-файлове за чиповете Qualcomm и MediaTek. Преработено е изключването на блобовете в драйвера MediaTek MT76. Актуализиран е кодът за почистване на блобовете в драйверите и подсистемите AMDGPU, Adreno, Tegra VIC, Netronome NFP и Habanalabs Gaudi2. Спряно е почистването на драйвера VXGE, който е премахнат от ядрото.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster