Рэліз ядра Linux 6.0

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

Асноўныя навіны ў ядры 6.0:

  • Дыскавая падсістэма, увод/выснова і файлавыя сістэмы
    • У файлавую сістэму XFS дададзеная падтрымка асінхроннага буферызаванага запісу з выкарыстаннем механізму io_uring. Тэсты прадукцыйнасці, праведзеныя пры дапамозе інструментара fio (1 струмень, памер блока 4кб, 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 прапанаваны рэжым нізкага спажывання памяці, які аптымізуе працу на прыладах з невялікім аб'ёмам АЗП і дазваляе зменшыць спажыванне памяці коштам памяншэння прадукцыйнасці.
    • Дададзена падтрымка аўтэнтыфікацыі назапашвальнікаў NVMe.
    • У серверы NFSv4 рэалізаваны ліміт на лік актыўных кліентаў, які выстаўляецца як 1024 дапушчальных кліентаў на кожны гігабайт аператыўнай памяці ў сістэме.
    • У рэалізацыі CIFS-кліента падвышаная прадукцыйнасць у рэжыме шматканальнай перадачы.
    • У падсістэму адсочвання падзей у ФС fanotify дададзены новы сцяг FAN_MARK_IGNORE для ігнаравання спецыфічных падзей.
    • У ФС Overlayfs, пры мантаванні па-над ФС з мапінгам ідэнтыфікатараў карыстачоў, забяспечана карэктная падтрымка POSIX-сумяшчальных спісаў кіравання доступам.
    • Дададзены блокавы драйвер ublk, які выносіць спецыфічную логіку на бок фонавага працэсу ў прасторы карыстача і выкарыстоўвалы падсістэму io_uring.
  • Памяць і сістэмныя сэрвісы
    • У падсістэму DAMON (Data Access MONitor) дададзены новыя магчымасці, якія дазваляюць не толькі адсочваць доступ працэсаў да аператыўнай памяці з прасторы карыстача, але і ўплываць на кіраванне памяццю. У прыватнасці, прапанаваны новы модуль "LRU_SORT", які забяспечвае перагрупоўку спісаў LRU (Least Recently Used) для павышэння прыярытэту пэўных старонак памяці.
    • Рэалізавана магчымасць стварэння новых рэгіёнаў памяці, выкарыстоўваючы магчымасці шыны 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" для кіравання прыладамі c 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-audio і драйверы з інтэрфейсам UCSI для мікракантролераў STM32G0. Праведзена чыстка dts-файлаў для чыпаў Qualcomm і MediaTek. Перароблена адключэнне блобаў у драйверы MediaTek MT76. Абноўлены код чысткі блобаў у драйверах і падсістэмах AMDGPU, Adreno, Tegra VIC, Netronome NFP і Habanalabs Gaudi2. Спынена чыстка драйвера VXGE, выдаленага з ядра.

Крыніца: opennet.ru

Дадаць каментар