Версия на ядрото на Linux 6.0

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

Ключови иновации в ядрото 6.0:

  • Дискова подсистема, I/O и файлови системи
    • Файловата система XFS има добавена поддръжка за асинхронни буферирани записи с помощта на механизма io_uring. Тестовете за производителност, проведени с помощта на fio инструменти (1 нишка, размер на блока 4kB, 600 секунди, последователен запис), показват увеличение на входно/изходните операции за секунда (IOPS) от 77k на 209k, скоростта на трансфер на данни от 314MB/s до 854MB/s, и спад в латентността от 9600ns до 120ns (80 пъти).
    • Файловата система Btrfs прилага втора версия на протокола за командата „изпращане“, която реализира поддръжка за допълнителни метаданни, изпращане на данни в по-големи блокове (повече от 64K) и предаване на екстенти в компресирана форма. Производителността на операциите за директно четене е значително увеличена (до 3 пъти) поради едновременното четене на до 256 сектора. Намалено състезание за заключване и ускорена проверка на метаданни чрез намаляване на запазените метаданни за отложени елементи.
    • Нови ioctl операции EXT4_IOC_GETFSUUID и EXT4_IC_SETFSUUID са добавени към файловата система ext4 за извличане или задаване на UUID, съхранен в суперблока.
    • Файловата система F2FS предлага режим на ниска консумация на памет, който оптимизира работата на устройства с малко количество RAM и ви позволява да намалите консумацията на памет с цената на намалена производителност.
    • Добавена е поддръжка за удостоверяване на NVMe устройство.
    • NFSv4 сървърът прилага ограничение за броя на активните клиенти, което е зададено като 1024 валидни клиента за всеки гигабайт RAM в системата.
    • Внедряването на клиента на CIFS има подобрена производителност в многоканален режим на предаване.
    • Нов флаг FAN_MARK_IGNORE е добавен към подсистемата за проследяване на събития във fanotify FS за игнориране на конкретни събития.
    • В Overlayfs FS, когато се монтира върху FS със съпоставяне на потребителски идентификатори, се осигурява правилна поддръжка за POSIX-съвместими списъци за контрол на достъпа.
    • Добавен е блоков драйвер ublk, който премества специфична логика отстрани на фоновия процес в потребителското пространство и използва подсистемата io_uring.
  • Памет и системни услуги
    • Към подсистемата DAMON (Data Access MONitor) са добавени нови функции, които позволяват не само да се наблюдава достъпът на процеса до RAM от потребителското пространство, но и да се влияе върху управлението на паметта. По-конкретно, беше предложен нов модул „LRU_SORT“, който осигурява прегрупиране на LRU (най-малко използвани) списъци за увеличаване на приоритета на определени страници от паметта.
    • Възможността за създаване на нови области на паметта е реализирана с помощта на възможностите на шината CXL (Compute Express Link), използвана за организиране на високоскоростно взаимодействие между процесора и устройствата с памет. CXL ви позволява да свързвате нови региони на паметта, осигурени от външни устройства с памет, и да ги използвате като допълнителни ресурси за физическо адресно пространство за разширяване на паметта с произволен достъп (DDR) или постоянната памет (PMEM).
    • Разрешени проблеми с производителността на процесорите AMD Zen, причинени от код, добавен преди 20 години за заобикаляне на хардуерен проблем в някои чипсети (добавена е допълнителна инструкция WAIT за забавяне на процесора, така че чипсетът да има време да премине в неактивно състояние). Промяната доведе до намалена производителност при работни натоварвания, които често се редуват между неактивни и заети състояния. Например, след деактивиране на заобиколното решение, средните резултати от tbench тест се увеличиха от 32191 MB/s на 33805 MB/s.
    • Кодът с евристика е премахнат от планировчика на задачи, осигурявайки миграция на процесите към най-малко натоварените процесори, като се вземе предвид прогнозираното увеличение на потреблението на енергия. Разработчиците заключиха, че евристиката не е достатъчно полезна и че е по-лесно да я премахнете и да мигрирате процесите без допълнителна оценка, когато такава миграция може потенциално да доведе до по-ниска консумация на енергия (например, когато целевият процесор е в по-ниско ниво на мощност). Деактивирането на евристиката доведе до намаляване на консумацията на енергия при изпълнение на интензивни задачи, например при теста за декодиране на видео, консумацията на енергия намаля с 5.6%.
    • Разпределението на задачите между CPU ядрата на големи системи е оптимизирано, което е подобрило производителността за определени типове натоварване.
    • Асинхронният входно-изходен интерфейс io_uring предлага нов флаг, IORING_RECV_MULTISHOT, който ви позволява да използвате режима на множество изстрели със системното извикване recv(), за да извършвате множество операции за четене от един и същ мрежов сокет наведнъж. io_uring също поддържа мрежов трансфер без междинно буфериране (нулево копиране).
    • Въведена е възможност за поставяне на BPF програми, прикачени към uprobe, в състояние на заспиване. BPF също добавя нов итератор ksym за работа с таблици със символи на ядрото.
    • Остарелият интерфейс „efivars“ в sysfs, предназначен за достъп до променливи за зареждане на UEFI, е премахнат (виртуалната FS на efivarfs вече се използва универсално за достъп до EFI данни).
    • Помощната програма perf има нови отчети за анализиране на конфликти при заключване и времето, прекарано от процесора за изпълнение на компоненти на ядрото.
    • Настройката CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3 беше премахната, което позволи ядрото да бъде изградено в режим на оптимизация "-O3". Отбелязва се, че експериментите с режими на оптимизация могат да се извършват чрез предаване на флагове по време на асемблиране („make KCFLAGS=-O3“), а добавянето на настройка към Kconfig изисква повтарящо се профилиране на производителността, което показва, че разгръщането на цикъл, използвано в режим „-O3“, дава предимство в сравнение с нивото на оптимизация „-O2“.
    • Добавен е интерфейс за отстраняване на грешки, за да се получи информация за работата на отделните „свиващи паметта“ (манипулатори, извиквани, когато няма достатъчно памет и пакетиращи структури от данни на ядрото, за да намалят потреблението на памет).
    • За архитектурите OpenRISC и LoongArch е реализирана поддръжка за PCI шина.
    • За архитектурата RISC-V е внедрено разширението „Zicbom“ за управление на устройства с DMA, който не е съгласуван с кеша.
  • Виртуализация и сигурност
    • Добавен е механизъм за проверка на RV (Проверка по време на изпълнение), за да се провери правилната работа на високонадеждни системи, които гарантират липса на повреди. Проверката се извършва по време на изпълнение чрез прикачване на манипулатори към точки за проследяване, които проверяват действителния напредък на изпълнение спрямо предварително определен референтен детерминистичен модел на машината, който дефинира очакваното поведение на системата. Проверката с модела по време на изпълнение се позиционира като по-лек и лесен за изпълнение метод за потвърждаване на коректността на изпълнение на критични системи, допълвайки класическите методи за проверка на надеждността. Сред предимствата на RV е възможността за осигуряване на стриктна проверка без отделна реализация на цялата система на език за моделиране, както и гъвкава реакция при непредвидени събития.
    • Интегрирани компоненти на ядрото за управление на анклави, базирани на технологията Intel SGX2 (Software Guard eXtensions), която позволява на приложенията да изпълняват код в изолирани криптирани области на паметта, до които останалата част от системата има ограничен достъп. Технологията Intel SGX2 се поддържа в чиповете Intel Ice Lake и Gemini Lake и се различава от Intel SGX1 по допълнителни инструкции за динамично управление на паметта на анклави.
    • За архитектурата x86 е реализирана възможността за прехвърляне на семената за генератора на псевдослучайни числа през настройките на зареждащия механизъм.
    • Модулът SafeSetID LSM вече има способността да управлява промените, направени чрез извикването setgroups(). SafeSetID позволява на системните услуги да управляват сигурно потребителите без ескалиране на привилегии (CAP_SETUID) и без получаване на root права.
    • Добавена е поддръжка за блоков шифър ARIA.
    • Базираният на BPF модул за управление на сигурността предоставя възможност за прикачване на манипулатори към отделни процеси и групи процеси (cgroups).
    • Добавен е механизъм с реализация на watchdog за откриване на зависвания на системи за гости въз основа на наблюдение на активността на vCPU.
  • Мрежова подсистема
    • Към подсистемата BPF са добавени манипулатори за генериране и проверка на SYN бисквитки. Добавен е и набор от функции (kfunc) за достъп и промяна на състоянието на връзките.
    • Безжичният стек има добавена поддръжка за механизма MLO (Multi-Link Operation), дефиниран в спецификацията WiFi 7 и позволяващ на устройствата едновременно да получават и изпращат данни, използвайки различни честотни ленти и канали, например за едновременно установяване на няколко комуникационни канала между точка за достъп до клиентско устройство.
    • Подобрена е производителността на вградения в ядрото TLS протокол.
    • Добавена е опция на командния ред на ядрото "hostname=", за да позволи името на хоста да бъде зададено рано в процеса на зареждане, преди да бъдат стартирани компонентите на потребителското пространство.
  • Оборудование
    • Драйверът i915 (Intel) осигурява поддръжка за дискретни видео карти Intel Arc (DG2/Alchemist) A750 и A770. Предложено е първоначално внедряване на поддръжка за графични процесори Intel Ponte Vecchio (Xe-HPC) и Meteor Lake. Продължава работата по поддръжката на платформата Intel Raptor Lake.
    • Драйверът amdgpu продължава да осигурява поддръжка за платформите AMD RDNA3 (RX 7000) и CDNA (Instinct).
    • Драйверът Nouveau преработи кода за поддръжка за NVIDIA nv50 GPU дисплейни машини.
    • Добавен е нов logicvc DRM драйвер за LogiCVC екрани.
    • Драйверът v3d (за Broadcom Video Core GPU) поддържа Raspberry Pi 4 платки.
    • Добавена е поддръжка за Qualcomm Adreno 619 GPU към драйвера msm.
    • Добавена е поддръжка за ARM Mali Valhall GPU към драйвера на Panfrost.
    • Добавена е първоначална поддръжка за процесори 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, изчистена от елементи на фърмуер и драйвери, съдържащи несвободни компоненти или части от код, чийто обхват е ограничено от производителя. Новата версия деактивира използването на петна в HD-аудио драйвера CS35L41 и драйвера UCSI за микроконтролери STM32G0. DTS файловете за чипове Qualcomm и MediaTek са изчистени. Деактивирането на петна в драйвера на MediaTek MT76 е преработено. Актуализиран код за почистване на петна в AMDGPU, Adreno, Tegra VIC, Netronome NFP и Habanalabs Gaudi2 драйвери и подсистеми. Спря почистването на VXGE драйвера, който беше премахнат от ядрото.

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

Добавяне на нов коментар