Издание на кернелот Linux 6.0

По два месеци развој, Линус Торвалдс го претстави објавувањето на кернелот Linux 6.0. Значајната промена во бројот на верзијата е направена од естетски причини и е формален чекор за ублажување на непријатноста поради акумулацијата на голем број проблеми во серијата (Линус се пошегува дека причината за промената на бројот на филијалата е поверојатно дека тој му снемало прсти и прсти за да ги брои броевите на верзијата) . Меѓу најзабележителните промени: поддршка за асинхроно буферирано пишување во XFS, двигател на блокови ublk, оптимизација на распоредувачот на задачи, механизам за проверка на правилната работа на кернелот, поддршка за блок шифрата ARIA.

Главните иновации во кернелот 6.0:

  • Подсистем на диск, В/И и датотечни системи
    • Датотечниот систем XFS додаде поддршка за асинхрони буферирани запишувања со помош на механизмот io_uring. Тестовите за изведба спроведени со помош на алатките fio (1 нишка, големина на блок од 4 kB, 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 со мапирање на кориснички ID, се обезбедува правилна поддршка за списоци за контрола на пристап усогласени со 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%.
    • Дистрибуцијата на задачите низ јадрата на процесорот на големи системи е оптимизирана, што ги подобри перформансите за одредени типови на оптоварување.
    • Асинхрониот I/O интерфејс 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“. Забележано е дека експериментите со режимите за оптимизација може да се изведат со пренесување знаменца за време на склопувањето („направи KCFLAGS=-O3“), а додавањето поставка на Kconfig бара повторливо профилирање на перформансите, што покажува дека расклопувањето на јамката што се користи во режимот „-O3“ дава придобивка во споредба со нивото на оптимизација „-O2“.
    • Додаден е интерфејс за отстранување грешки за да се добијат информации за работата на поединечните „смалувачи на меморија“ (ракувачи се повикуваат кога нема доволно меморија и структури на податоци за пакување на јадрото за да се намали нивната потрошувачка на меморија).
    • За архитектурите OpenRISC и LoongArch, имплементирана е поддршка за PCI магистралата.
    • За архитектурата RISC-V, екстензијата „Zicbom“ е имплементирана за управување со уреди со DMA што не е кохерентна во кешот.
  • Виртуелизација и безбедност
    • Додаден е механизам за верификација RV (Runtime Verification) за да се потврди правилното функционирање на високо доверливи системи кои гарантираат дека нема дефекти. Верификацијата се врши при извршување со прикачување на управувачи на точки во трага кои го проверуваат вистинскиот напредок на извршувањето според однапред определен референтен детерминистички модел на машината што го дефинира очекуваното однесување на системот. Верификацијата со моделот при извршување е позиционирана како полесен и лесен за имплементација метод за потврдување на исправноста на извршувањето на критичните системи, надополнувајќи ги класичните методи за проверка на доверливоста. Меѓу предностите на 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 обезбедува можност за прикачување на управувачи на поединечни процеси и групи на процеси (cгрупи).
    • Додаден е механизам со имплементација на чувар за откривање висови на гостински системи врз основа на следење на активноста на vCPU.
  • Мрежен потсистем
    • Во потсистемот BPF се додадени ракувачи за генерирање и проверка на колачиња SYN. Додадено е и збир на функции (kfunc) за пристап и менување на состојбата на врските.
    • Безжичниот оџак додаде поддршка за механизмот MLO (Операција со повеќе врски), дефиниран во спецификацијата 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.
    • Додаден е нов 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, исчистено од елементи на фирмверот и драјвери кои содржат неслободни компоненти или делови од код, чиј опсег е ограничен од производителот. Новото издание ја оневозможува употребата на blobs во драјверот за HD-аудио CS35L41 и двигателот UCSI за микроконтролерите STM32G0. Датотеките DTS за чиповите на Qualcomm и MediaTek се исчистени. Оневозможувањето на дамки во двигателот на MediaTek MT76 е преработено. Ажуриран код за чистење на дамки во драјвери и потсистеми AMDGPU, Adreno, Tegra VIC, Netronome NFP и Habanalabs Gaudi2. Престана да го чисти двигателот VXGE, кој беше отстранет од јадрото.

Извор: opennet.ru

Додадете коментар