Рэліз ядра Linux 5.17

Пасля двух месяцаў распрацоўкі Лінус Торвальдс прадставіў рэліз ядра Linux 5.17. Сярод найболей прыкметных змен: новая сістэма кіравання прадукцыйнасцю для працэсараў AMD, магчымасць рэкурсіўнага мапінга ідэнтыфікатараў карыстачоў у файлавых сістэмах, падтрымка пераносных скампіляваных BPF-праграм, пераклад генератара псеўдавыпадковых лікаў на алгарытм BLAKE2s, утыліта RTLA для аналізу выканання ў рэжыме рэальнага часу, новы для кэшавання сеткавых ФС, магчымасць прымацавання імёнаў да ананімных аперацый mmap.

У новую версію прынята 14203 выпраўленняў ад 1995 распрацоўшчыкаў, памер патча – 37 МБ (змены закранулі 11366 файлаў, дададзена 506043 радкоў кода, выдалена 250954 радкоў). Каля 44% усіх прадстаўленых у 5.17 змен злучаны з драйверамі прылад, прыкладна 16% змен маюць дачыненне да абнаўлення кода, спецыфічнага для апаратных архітэктур, 15% злучана з сеткавым стэкам, 4% - з файлавымі сістэмамі і 4% c унутранымі падсістэмамі ядра.

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

  • Дыскавая падсістэма, увод/выснова і файлавыя сістэмы
    • Рэалізаваная магчымасць укладзенага мапінгу ідэнтыфікатараў карыстачоў прымантаваных файлавых сістэм, ужывальнага для супастаўлення файлаў вызначанага карыстача на прымантаванай чужой частцы з іншым карыстачом у бягучай сістэме. Дададзеная магчымасць дазваляе рэкурсіўна выкарыстоўваць мапінг па-над файлавымі сістэмамі для якіх ужо ўжываецца мапінг.
    • Цалкам перапісана падсістэма fscache, якая ўжываецца для арганізацыі кэшавання ў лакальнай файлавай сістэме дадзеных, якія перадаюцца праз сеткавыя файлавыя сістэмы. Новая рэалізацыя адрозніваецца значным спрашчэннем кода і заменай ускладненых аперацый планавання і адсочванні станаў аб'ектаў на прасцейшыя механізмы. Падтрымка новага fscache рэалізавана ў файлавай сістэме CIFS.
    • У падсістэме адсочвання падзей у ФС fanotify рэалізаваны новы тып падзей FAN_RENAME, які дазваляе зараз перахапіць аперацыю перайменавання файлаў або каталогаў (раней для апрацоўкі перайменаванняў ужываліся дзве паасобныя падзеі FAN_MOVED_FROM і FAN_MOVED_TO).
    • У файлавай сістэме Btrfs праведзена аптымізацыя аперацый лагагавання і fsync для вялікіх каталогаў, рэалізаваная за кошт капіявання толькі індэксных ключоў і скарачэнні аб'ёму лагіраваных метададзеных. Забяспечана падтрымка індэксацыі і пошуку па памеры запісаў аб свабоднай прасторы, што дало магчымасць прыкладна на 30 працэнтаў паменшыць затрымкі і скараціць час пошуку. Дазволена перарываць аперацыі дэфрагментацыі. Уключана магчымасць дадаваць прылады пры адключэнні балансавання паміж назапашвальнікамі, г.зн. пры мантаванні ФС з опцыяй skip_balance.
    • Прапанаваны новы сінтаксіс мантавання файлавай сістэмы Ceph, вырашальны наяўныя праблемы, звязаныя з прывязкай да IP-адрасоў. Акрамя IP-адрасоў для вызначэння сервера зараз можна выкарыстоўваць ідэнтыфікатар кластара (FSID): mount -t ceph [электронная пошта абаронена]_name=/[subdir] mnt -o mon_addr=monip1[:port][/monip2[:port]]
    • Файлавая сістэма Ext4 пераведзена на новы API для мантавання, які падзяляе стадыі разбору опцый мантавання і налады суперблока. Спынена падтрымка опцый мантавання lazytime і nolazytime, якія дадаваліся як часавая змена для спрашчэння перакладу util-linux на выкарыстанне сцяга MS_LAZYTIME. Дададзена падтрымка ўстаноўкі і чытання пазнак у ФС (ioctl FS_IOC_GETFSLABEL і FS_IOC_SETFSLABEL).
    • NFSv4 дададзеная падтрымка працы ў файлавых сістэмах без падзелу рэгістраў знакаў у імёнах файлаў і каталогаў. У NFSv4.1+ дададзеная падтрымка вызначэння агрэгаваных сеансаў (trunking).
  • Памяць і сістэмныя сэрвісы
    • Дададзены драйвер amd-pstate, які забяспечвае дынамічнае кіраванне частатой для дасягнення аптымальнай прадукцыйнасці. Драйвер падтрымлівае CPU і APU AMD пачынаючы з пакалення Zen 2, распрацаваны сумесна з кампаніяй Valve і накіраваны на павышэнне эфектыўнасці кіравання энергаспажываннем. Для адаптыўнай змены частаты выкарыстоўваецца механізм CPPC (Collaborative Processor Performance Control), які дазваляе больш дакладна змяняць паказчыкі (не абмежаваны трыма ўзроўнямі прадукцыйнасці) і больш аператыўна рэагаваць на змену стану, чым раней выкарыстоўваныя P-state драйверы на базе ACPI (CPUFreq).
    • У падсістэме eBPF прапанаваны апрацоўшчык bpf_loop(), які прадстаўляе альтэрнатыўны спосаб арганізацыі цыклаў у eBPF-праграмах, хутчэйшы і просты для праверкі верыфікатарам.
    • На ўзроўні ядра рэалізаваны механізм CO-RE (Compile Once – Run Everywhere), які дазваляе збіраць код eBPF-праграм толькі адзін раз і выкарыстоўваць адмысловы ўніверсальны загрузнік, які адаптуе загружаную праграму да бягучага ядра і тыпам BTF (BPF Type Format).
    • Дадзена магчымасць прызначэння імёнаў для абласцей прыватнай ананімнай (вылучанай праз malloc) памяці, што можа спрасціць правядзенне адладкі і аптымізацыі спажывання памяці ў дадатках. Імёны прысвойваюцца праз prctl са сьцягам PR_SET_VMA_ANON_NAME і адлюстроўваюцца ў /proc/pid/maps і /proc/pid/smaps у форме «[anon: ]».
    • У планавальніку задач забяспечана адсочванне і адлюстраванне ў /proc/PID/sched часу, праведзенага працэсамі ў стане прымусовага прастою (forced-idle), які ўжываецца напрыклад, для зніжэння нагрузкі пры перагрэве працэсара.
    • Дададзены модуль gpio-sim, прызначаны для сімуляцыі чыпаў GPIO для правядзення тэсціравання.
    • У каманду "perf ftrace" дададзена падкаманда "latency" для генерацыі гістаграм з інфармацыяй аб затрымках.
    • Дададзены набор утыліт "RTLA" для аналізу працы ў рэжыме рэальнага часу. У склад уваходзяць такія ўтыліты, як osnoise (вызначае ўплыў аперацыйнай сістэмы на выкананне задачы) і timerlat (змяняе затрымкі, злучаныя з таймерам).
    • Інтэграваная другая серыя патчаў з рэалізацыяй канцэпцыі фаліянтаў старонак памяці (page folios), якія нагадваюць аб'яднаныя старонкі памяці (compound pages), але адрозніваюцца палепшанай семантыкай і больш зразумелай арганізацыяй працы. Выкарыстанне фаліянтаў дазваляе паскорыць кіраванне памяццю ў некаторых падсістэмах ядра. У прапанаваных патчах завершаны пераклад старонкавага кэша на выкарыстанне фаліянтаў і дададзеная пачатковая падтрымка фаліянтаў у ФС XFS.
    • Дададзены рэжым зборкі "make mod2noconfig", пры якім генеруецца канфігурацыя, якая збірае ўсе адключаныя падсістэмы ў форме модуляў ядра.
    • Узняты патрабаванні да версіі LLVM/Clang, якую можна выкарыстоўваць для зборкі ядра. Для зборкі зараз патрабуецца прынамсі выпуск LLVM 11.
  • Віртуалізацыя і бяспека
    • Прапанавана абноўленая рэалізацыя генератара псеўдавыпадковых лікаў RDRAND, які адказвае за працу прылад /dev/random і /dev/urandom, характэрная пераходам на выкарыстанне хэш-функцыі BLAKE2s замест SHA1 для аперацый змешвання энтрапіі. Змена дазволіла павысіць бяспеку генератара псеўдавыпадковых лікаў, дзякуючы збавенню ад праблемнага алгарытму SHA1 і выключэнні перазапісу вектара ініцыялізацыі RNG. Бо алгарытм BLAKE2s апярэджвае SHA1 па прадукцыйнасці, тое яго ўжыванне таксама дадатна адбілася на прадукцыйнасці.
    • Дададзена абарона ад уразлівасцяў у працэсарах, выкліканых спекулятыўным выкананнем інструкцый пасля аперацый безумоўнага прамога пераходу. Праблема ўзнікае з-за папераджальнай апрацоўкі інструкцый, наступных у памяці адразу за камандай пераходу (SLS, Straight Line Speculation). Для ўключэння абароны патрабуецца зборка з выкарыстаннем выпуску GCC 12, змешчанага ў на стадыі тэставання.
    • Дададзены механізм адсочвання падліку спасылак (refcount, reference-count), накіраваны на зніжэнне колькасці памылак пры падліку спасылак, якія прыводзяць да звароту да памяці пасля яе вызвалення. Механізм пакуль абмежаваны сеткавай падсістэмай, але ў будучыні можа быць адаптаваны і для іншых частак ядра.
    • Рэалізаваны пашыраныя праверкі новых запісаў у табліцы старонак памяці працэсу, якія дазваляюць выяўляць некаторыя тыпы пашкоджанняў і спыняць сістэму, блакуючы напады на ранняй стадыі.
    • Дададзена магчымасць распакавання модуляў ядра непасрэдна самім ядром, а не апрацоўшчыкам у прасторы карыстача, што дазваляе пры дапамозе LSM-модуля LoadPin гарантаваць, што модулі ядра загружаныя ў памяць з верыфікаванай прылады захоўвання.
    • Забяспечана зборка са сцягам "-Wcast-function-type", які ўключае вывад папярэджанняў аб прывядзенні паказальнікаў функцый да несумяшчальнага тыпу.
    • Дададзены віртуальны хаставы драйвер pvUSB для гіпервізара Xen, які прадстаўляе доступ да USB-прылад, пракінутым у гасцявыя сістэмы (дазваляе з гасцявых сістэм звяртацца да фізічных USB-прылад, замацаваным за гасцявой сістэмай).
    • Дададзены модуль, які дазваляе праз Wi-Fi ўзаемадзейнічаць з падсістэмай IME (Intel Management Engine), якая пастаўляецца ў большасці сучасных матчыных поплаткаў з працэсарамі Intel і рэалізаваная ў выглядзе асобнага мікрапрацэсара, які працуе незалежна ад CPU.
    • Для архітэктуры ARM64 рэалізавана падтрымка адладкавай прылады KCSAN (Kernel Concurrency Sanitizer), прызначанага для дынамічнага выяўлення станаў гонкі ўсярэдзіне ядраў.
    • Для 32-разрадных сістэм ARM дададзена магчымасць ужывання механізму KFENCE для выяўлення памылак пры працы з памяццю.
    • У гіпервізоры KVM дададзеная падтрымка інструкцый AMX (Advanced Matrix Extensions), рэалізаваных у будучых серверных працэсарах Intel Xeon Scalable.
  • Сеткавая падсістэма
    • Дададзена падтрымка вынасу (offloading) на бок сеткавых прылад аперацый, злучаных з кіраваннем трафікам.
    • Дададзена магчымасць выкарыстання пратакола MCTP (Management Component Transport Protocol) па-над прыладамі з паслядоўным інтэрфейсам. MCTP можа выкарыстоўвацца для ўзаемадзеяння кіраўнікоў кантролераў і звязаных з імі прылад (хост-працэсары, перыферыйныя прылады і да т.п.).
    • Праведзена аптымізацыя TCP-стэка, напрыклад, для павышэння прадукцыйнасці выклікаў recvmsg рэалізавана адкладзенае вызваленне буфераў сокетаў.
    • На ўзроўні паўнамоцтваў CAP_NET_RAW дазволена выстаўленне праз функцыю setsockopt рэжымаў SO_PRIORITY і SO_MARK.
    • Для IPv4 дазволена прымацаванне raw-сокетаў не да лакальных IP-адрасоў, выкарыстоўваючы опцыі IP_FREEBIND і IP_TRANSPARENT.
    • Дададзены sysctl arp_missed_max для налады парогавага ліку збояў пры праверцы ARP-маніторам, пасля якога сеткавы інтэрфейс перакладаецца ў адключаны стан.
    • Дадзена магчымасць налады асобных значэнняў sysctl min_pmtu і mtu_expires для сеткавых прастор імёнаў.
    • У API ethtool дададзена магчымасць усталёўкі і азначэнні памеру буфераў уваходных і выходных пакетаў.
    • У Netfilter дададзена падтрымка фільтрацыі транзітнага pppoe-трафіку ў сеткавым мосце.
    • У модуль ksmbd з рэалізацыяй файлавага сервера, выкарыстоўвалага пратакол SMB3, дададзеная падтрымка абмену ключамі, задзейнічаны сеткавы порт 445 для smbdirect і дададзеная падтрымка параметра "smb2 max credit".
  • Абсталяванне
    • У падсістэму drm (Direct Renderering Manager) і драйвер i915 дададзеная падтрымка экранаў для вываду канфідэнцыйнай інфармацыі, напрыклад, некаторыя наўтбукі камплектуюцца экранамі з убудаваным рэжымам канфідэнцыйнага прагляду, якія абцяжарваюць прагляд са боку. Дададзеныя змены дазваляюць падлучаць спецыялізаваныя драйверы для падобных экранаў і кіраваць рэжымамі канфідэнцыйнага прагляду праз выстаўленне ўласцівасцяў у звычайных KMS-драйверах.
    • У драйверы amdgpu уключаная падтрымка адладкавай тэхналогіі STB (Smart Trace Buffer) для ўсіх якія падтрымліваюць яе GPU AMD. STB спрашчае аналіз збояў і выяўленне крыніцы праблем праз захаванне ў спецыяльным буферы інфармацыі аб функцыях, якія выконваюцца перад апошнім збоем.
    • У драйверы i915 дададзеная падтрымка чыпаў Intel Raptor Lake S і ўключаная па змаўчанні падтрымка графічнай падсістэмы чыпаў Intel Alder Lake P. Прадастаўлена магчымасць кіравання падсветкай экрана праз DPCD-інтэрфейс VESA.
    • У драйверах fbcon/fbdev вернутая падтрымка апаратнага паскарэння пракруткі ў кансолі.
    • Працягнута інтэграцыя змен для падтрымкі чыпаў Apple M1. Рэалізаваная магчымасць выкарыстання драйвера simpledrm на сістэмах з чыпам Apple M1 для вываду праз фрэймбуфер, які прадастаўляецца прашыўкай.
    • Дададзеная падтрымка ARM SoС, прылад і поплаткаў Snapdragon 7c, 845 і 888 (Music Chromebook 2), Mediatek MT2a / b (прымяняецца ў Wi-fi маршрутызатарах), Broadcom BCM3 (Netgear RAXE1), Qualcomm SDX5, Samsung Exynos5, Renesas R-Car S2-6589, TI J1s8183, TI SPEAr Aspeed AST314/AST7986, Engicam i.Core STM4908MP500, Allwinner Tanix TX65, Facebook Bletchley BMC, Goramo MultiLink, JOZ Access Point, Y Soft IOTA Crux/Crux+, t7885/t4 MacBook Pro 8/721.
    • Дададзена падтрымка працэсараў ARM Cortex-M55 і Cortex-M33.
    • Дададзена падтрымка прылад на базе CPU MIPS: Linksys WRT320N v1, Netgear R6300 v1, Netgear WN2500RP v1/v2.
    • Дададзена падтрымка SoC StarFive JH7100 на базе архітэктуры RISC-V.
    • Дададзены драйвер lenovo-yogabook-wmi для кіравання падсветкай клавіятуры і доступу да розных датчыкаў у Lenovo Yoga Book.
    • Дададзены драйвер asus_wmi_sensors для доступу да датчыкаў, выкарыстоўваных на матчыных поплатках Asus X370, X470, B450, B550 і X399 на базе працэсараў AMD Ryzen.
    • Дададзены драйвер x86-android-tablets для планшэтных ПК на базе архітэктуры x86, якія пастаўляюцца з платформай Android.
    • Дададзена падтрымка сэнсарных экранаў TrekStor SurfTab duo W1 і электроннага пяра для планшэнтаў Chuwi Hi10 Plus і Pro.
    • У драйверы для SoC Tegra 20/30 дададзена падтрымка кіравання сілкаваннем і напругай. Забяспечана магчымасць загрузкі на старых 32-разрадных прыладах на базе SoC Tegra, такіх як ASUS Prime TF201, Pad TF701T, Pad TF300T, Infinity TF700T, EeePad TF101 і Pad TF300TG.
    • Дададзеныя драйверы для прамысловых кампутараў Siemens.
    • Дададзена падтрымка LCD-панэляў Sony Tulip Truly NT35521, Vivax TPC-9150, Innolux G070Y2-T02, BOE BF060Y8M-AJ0, JDI R63452, Novatek NT35950, Wanchanglong W552946A.
    • Дададзена падтрымка гукавых сістэм і кодэкаў AMD Renoir ACP, Asahi Kasei Microdevices AKM4375, Intel systems using NAU8825 / MAX98390, Mediatek MT8915, nVidia Tegra20 S / PDIF, Qualcomm ALC5682I-VS, Tex. Вырашаны праблемы з Tegra320 HD-audio. Дададзена падтрымка HDA для кодэкаў CS3L194. Палепшана падтрымка гукавых сістэм для наўтбукаў Lenovo і HP, а таксама матчыных поплаткаў Gigabyte.

Крыніца: opennet.ru

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