Linux 5.7 ядросының шығарылымы

Екі айлық дамудан кейін Линус Торвальдс енгізілді ядро шығару Linux 5.7. Ең көрнекті өзгерістердің қатарында: exFAT файлдық жүйесінің жаңа іске асырылуы, UDP туннельдерін құруға арналған bareudp модулі, ARM64 үшін көрсеткіш аутентификациясына негізделген қорғаныс, BPF бағдарламаларын LSM өңдеушілеріне қосу мүмкіндігі, Curve25519 жаңа енгізуі, сплит- құлыптау детекторы, PREEMPT_RT-мен BPF үйлесімділігі, кодтағы 80 таңбалы жол өлшеміне шектеуді алып тастау, тапсырмаларды жоспарлаушыдағы CPU температурасының көрсеткіштерін ескере отырып, басқа топтағы процестерді шығару үшін clone() пайдалану мүмкіндігі, жазудан қорғау userfaultfd арқылы жадқа.

Жаңа нұсқа 15033 әзірлеушілерден 1961 XNUMX түзетуді қамтиды,
патч өлшемі - 39 МБ (өзгерістерге 11590 файл әсер етті, 570560 жол код қосылды,
297401 жол жойылды). Барлығының шамамен 41% 5.7-те ұсынылған
өзгерістер құрылғы драйверлеріне қатысты, өзгерістердің шамамен 16%
аппараттық архитектураға тән кодты жаңартуға деген көзқарас, 13%
желілік стекпен байланысты, 4% файлдық жүйелерге және 4% ішкі
ядроның ішкі жүйелері.

басты инновациялар:

  • Дискінің ішкі жүйесі, енгізу/шығару және файлдық жүйелер
    • Жаңа exFAT драйвері енгізілді, құрылған Samsung компаниясы Android смартфондары үшін әзірлеген ағымдағы «sdfat» (2.x) код базасына негізделген. Бұрын ядроға қосылған драйвер бұрынғы Samsung кодына (1.2.9 нұсқасы) негізделген және өнімділік бойынша жаңа драйверден шамамен 10% артта қалды. Еске салайық, ядроға exFAT қолдауын қосу Microsoft корпорациясынан кейін мүмкін болды жарияланған жалпы сипаттамалар мен exFAT патенттерін Linux жүйесінде роялтисіз пайдалану үшін қолжетімді етті.
    • Btrfs жаңа ioctl() пәрменін жүзеге асырады - BTRFS_IOC_SNAP_DESTROY_V2, оның идентификаторы арқылы ішкі бөлімді жоюға мүмкіндік береді. Кірістірілген кеңейтімдерді клондауға толық қолдау көрсетіледі. Қайта бөлу операциялары үшін бас тарту нүктелерінің саны кеңейтілді, бұл «баланстың күшін жою» пәрменін орындау кезінде ұзақ күтуді азайтты. Кері сілтемелерді дәрежеге дейін анықтау жеделдетілді (мысалы, сынақ сценарийін орындау уақыты бір сағаттан бірнеше минутқа дейін қысқарды). Ағаштың әрбір инодына файл кеңейтімдерін тіркеу мүмкіндігі қосылды. Ішкі бөлімдерге жазу кезінде және NOCOW-ты алып тастау кезінде қолданылатын блоктау схемасы қайта жасалды. Ауқымдар үшін fsync орындау тиімділігі жақсарды.
    • XFS метадеректерді тексеруді және белсенді бөлімдер үшін fsck функциясын жақсартты. Btree құрылымдарын қайта құру үшін кітапхана ұсынылды, ол болашақта xfs_repair қайта өңдеу және бөлімді ажыратпай қалпына келтіру мүмкіндігін жүзеге асыру үшін пайдаланылады.
    • SMB3 қоймаларында своп бөлімін орналастыруға арналған эксперименттік қолдау CIFS жүйесіне қосылды. SMB3.1.1 спецификациясында анықталған readdir үшін POSIX кеңейтімдері енгізілді. Кэш=қатаң режим қосылғанда және 64+ протокол нұсқалары пайдаланылғанда 2.1 КБ беттер үшін жақсартылған жазу өнімділігі.
    • FS EXT4 bmap және iopoll файлдарынан iomap пайдалануға ауыстырылды.
    • F2FS zstd алгоритмі арқылы деректерді қысу үшін қосымша қолдауды қамтамасыз етеді. Әдепкі бойынша қысу үшін LZ4 алгоритмі пайдаланылады. "chattr -c commit" пәрменіне қолдау қосылды. Орнату уақытының дисплейі қамтамасыз етілген. Қысылған блоктар саны туралы ақпаратты алу үшін ioctl F2FS_IOC_GET_COMPRESS_BLOCKS қосылды. statx арқылы қысу деректерінің шығысы қосылды.
    • Ceph файлдық жүйесі серверден жауап күтпей (асинхронды режимде жұмыс істейтін) файлдарды жасау және жою операцияларын (байланысты жою) жергілікті орындау мүмкіндігін қосты. Өзгеріс, мысалы, rsync қызметтік бағдарламасын іске қосқан кезде өнімділікті айтарлықтай жақсарта алады.
    • OVERLAYFS жүйесіне жоғары деңгейлі файлдық жүйе ретінде virtiofs пайдалану мүмкіндігі қосылды.
    • Қайта жазылған VFS жүйесіндегі жолды өту коды, символдық сілтемені талдау коды қайта өңделді және орнату нүктесін ауыстыру біртұтас болды.
    • scsi ішкі жүйесінде артықшылығы жоқ пайдаланушыларға рұқсат етілген ZBC командаларының орындалуы.
    • dm_writecache ішінде жүзеге асырылды блоктың максималды қызмет ету мерзімін орнататын max_age параметріне негізделген кэшті біртіндеп тазалау мүмкіндігі.
    • dm_integrity ішінде қосылды «жою» операциясын қолдау.
    • null_blk ішінде қосылды сынақ кезінде сәтсіздіктерді имитациялау үшін қателерді ауыстыруды қолдау.
    • Қосылды блоктық құрылғы өлшемін өзгерту туралы udev хабарландыруларын жіберу мүмкіндігі.
  • Желілік ішкі жүйе
    • Нетфильтр қосылған өзгерту, ішкі желілер, желі порттары, протокол және MAC мекенжайларының тіркесімін тексеруді қажет ететін үлкен сәйкестік тізімдерін (nftables жинақтары) өңдеуді айтарлықтай жылдамдатады.
      Оңтайландырулар енгізілді IP және желілік порт ауқымдары (nft_set_rbtree және nft_set_hash интервалды сәйкестендіру және мәндердің тікелей көрінісін өңдеу) сияқты сүзу ережелерінде пайдаланылатын ерікті өріс күйі ауқымдарымен пакет мазмұнын сәйкестендіру мәселесін шешетін nft_set_pipapo (PIle PAcket Policies) модуліне ). AMD Epyc 256 процессоры бар жүйеде 2 биттік AVX7402 нұсқаулары арқылы векторланған пипапо нұсқасы порт-протокол комбинацияларын қоса алғанда 420 мың жазбаны талдау кезінде өнімділіктің 30%-ға артқанын көрсетті. 1000 жазбаны талдау кезінде ішкі желі мен порт нөмірі комбинациясын салыстыру кезінде өсу IPv87 үшін 4% және IPv128 үшін 6% құрады.

    • Қосылды bareudp модулі, ол MPLS, IP және NSH сияқты әртүрлі L3 протоколдарын UDP туннеліне инкапсуляциялауға мүмкіндік береді.
    • MPTCP (MultiPath TCP) құрамдастарын біріктіру, әртүрлі IP мекенжайларына байланысты әр түрлі желілік интерфейстер арқылы бірнеше маршруттар бойынша пакеттерді бір уақытта жеткізумен TCP қосылымының жұмысын ұйымдастыруға арналған TCP протоколының кеңейтілуі жалғасты.
    • Қосылды 802.11 (Wi-Fi) жүйесінде Ethernet кадрларын инкапсуляциялауға арналған аппараттық жеделдету механизмдерін қолдау.
    • Құрылғыны бір желілік аттар кеңістігінен екіншісіне жылжытқанда, sysfs жүйесіндегі сәйкес файлдарға қатынасу құқықтары мен меншік құқығы реттеледі.
    • Түбірлік емес пайдаланушылар үшін SO_BINDTODEVICE жалауын пайдалану мүмкіндігі қосылды.
    • Патчтардың үшінші бөлігі қабылданды, ол ethtool құралдар жинағын ioctl() нұсқасынан netlink интерфейсін қолдануға түрлендірді. Жаңа интерфейс кеңейтімдерді қосуды жеңілдетеді, қателерді өңдеуді жақсартады, күй өзгерген кезде хабарландыруларды жіберуге мүмкіндік береді, ядро ​​мен пайдаланушы кеңістігі арасындағы өзара әрекетті жеңілдетеді және синхрондалу қажет атаулы тізімдердің санын азайтады.
    • Қосылымды бақылау операцияларын орындау үшін арнайы аппараттық үдеткіштерді пайдалану мүмкіндігі қосылды.
    • Желі сүзгісінде қосылды шығыс пакеттердің (шығу) жіктеуіштерін қосуға арналған ілмек, ол кіріс пакеттер (кіру) үшін бұрын қолданылған ілгекті толықтырды.
  • Виртуализация және қауіпсіздік
    • Көрсеткіш аутентификациясының қосымша аппараттық іске асырылуы (Көрсеткіштің аутентификациясы), ол қайтаруға бағытталған бағдарламалау (ROP) әдістерін пайдаланып шабуылдардан қорғау үшін арнайы ARM64 CPU нұсқауларын пайдаланады, онда шабуылдаушы өз кодын жадқа орналастыруға тырыспайды, бірақ жүктелген кітапханаларда бұрыннан бар машина нұсқауларының бөліктерінде жұмыс істейді. бақылау қайтару нұсқаулығымен. Қауіпсіздік ядро ​​деңгейінде қайтару мекенжайларын тексеру үшін цифрлық қолтаңбаны пайдаланумен байланысты. Қолтаңба көрсеткіштің пайдаланылмаған жоғарғы биттерінде сақталады. Бағдарламалық қамтамасыз етуді іске асырудан айырмашылығы, цифрлық қолтаңбаны жасау және тексеру процессордың арнайы нұсқауларын қолдану арқылы жүзеге асырылады.
    • Қосылды пайдаланушы кеңістігіндегі бет ақауларын (бөлінбеген жад беттеріне қол жеткізу) өңдеуге арналған userfaultfd() жүйелік шақыруын пайдаланып жад аймағын жазудан қорғау мүмкіндігі. Идея – userfaultfd() функциясын жазудан қорғалған деп белгіленген беттерге қатынасу бұзылыстарын анықтау үшін де, осындай жазу әрекеттеріне жауап бере алатын өңдеушіге қоңырау шалу үшін де (мысалы, іске қосылған процестердің тікелей суреттерін жасау кезінде өзгерістерді өңдеу, күй) пайдалану болып табылады. жад демптерін дискіге тастау, ортақ жадты жүзеге асыру, жадтағы өзгерістерді қадағалау). Функционалдылық эквивалент mprotect() функциясын SIGSEGV сигнал өңдегішімен бірге пайдалану, бірақ ол айтарлықтай жылдам жұмыс істейді.
    • SELinux "checkreqprot" параметрін ескірген, ол ережелерді өңдеу кезінде жадты қорғау тексерулерін өшіруге мүмкіндік береді (ережелерде көрсетілген ережелерге қарамастан орындалатын жад аймақтарын пайдалануға рұқсат береді). Kernfs символдық сілтемелеріне өздерінің негізгі каталогтарының мәтінмәнін иеленуге рұқсат етілген.
    • Құрамы қосылды модуль KRSI, ол BPF бағдарламаларын ядродағы кез келген LSM ілмектеріне бекітуге мүмкіндік береді. Өзгеріс аудит мәселелерін шешу және қол жеткізуді міндетті бақылау үшін BPF бағдарламалары түрінде LSM модульдерін (Linux Security Module) жасауға мүмкіндік береді.
    • Орындалған RNG нұсқауларын жеке шақырудың орнына CRNG мәндерін топтастыру арқылы /dev/random өнімділігін оңтайландырады. RNG нұсқауларын қамтамасыз ететін ARM64 жүйелеріндегі getrandom және /dev/random көрсеткіштері жақсартылған.
    • Эллиптикалық қисық Curve25519 жүзеге асыру ауыстырылды кітапханадан опция үшін HACL, ол үшін берілген формальды сенімділікті тексерудің математикалық дәлелі.
    • Қосылды бос жад беттері туралы ақпараттандыру механизмі. Бұл механизмді пайдалана отырып, қонақ жүйелері хост жүйесіне енді пайдаланылмаған беттер туралы ақпаратты жібере алады, ал хост бет деректерін қайтара алады.
    • vfio/pci ішінде қосылды SR-IOV (Бір түбірлік енгізу/шығару виртуализациясы) қолдауы.
  • Жад және жүйелік қызметтер
    • 80-ден 100 таңбаға дейін өсті бастапқы мәтіндердегі жолдың максималды ұзындығын шектеу. Сонымен қатар, әзірлеушілерге әлі де әр жолда 80 таңбадан аспауы ұсынылады, бірақ бұл енді қатаң шектеу емес. Бұған қоса, сызық өлшемі шегінен асып кету енді тексеру патч '--strict' опциясымен іске қосылғанда ғана құрастыру ескертуіне әкеледі. Өзгеріс әзірлеушілерді алаңдатпауға мүмкіндік береді манипуляция бос орындармен және кодты туралау кезінде өзіңізді еркін сезінесіз, сонымен қатар алдын алады сызықтың шамадан тыс үзілуі, мазалайды кодты түсіну және іздеу.
    • Қосылды арнайы жүктеушіні пайдаланбай 64 биттік процессорда жұмыс істейтін 32 биттік микробағдарламадан 64 биттік ядроны жүктеуге мүмкіндік беретін EFI аралас жүктеу режимін қолдау.
    • Қосылған бөлінген құлыптарды анықтау және жөндеу жүйесі («бөлінген құлып«), атомдық команданы орындау кезінде деректер орталық процессордың екі кэш сызығын кесіп өтуіне байланысты жадтағы теңестірілмеген деректерге қол жеткізу кезінде пайда болады. Мұндай блоктау өнімділіктің айтарлықтай төмендеуіне әкеледі (бір кэш жолына түсетін деректердегі атомдық операциядан 1000 цикл баяу). "Split_lock_detect" жүктеу параметріне байланысты ядро ​​мұндай құлыптарды жылдам анықтап, ескертулер бере алады немесе құлыптауды тудыратын қолданбаға SIGBUS сигналын жібере алады.
    • Тапсырмаларды жоспарлаушы температура сенсорларын бақылауды қамтамасыз етеді (Жылу қысымы) және тапсырмаларды орналастыру кезінде қызып кетуді ескере отырып жүзеге асырылады. Берілген статистиканы пайдалана отырып, жылу реттегіші қызып кеткен кезде процессордың максималды жиілігін реттей алады, ал тапсырмаларды жоспарлаушы енді тапсырмаларды орындау үшін жоспарлау кезінде жиіліктің осындай төмендеуіне байланысты есептеу қуатының төмендеуін ескереді (бұрын жоспарлаушы өзгерістерге жауап берді белгілі бір кідіріспен жиілікте, белгілі бір уақыт бойы қол жетімді есептеу ресурстары туралы күшейтілген болжамдарға негізделген шешімдер қабылдау).
    • Тапсырманы жоспарлаушы қамтиды инвариантты көрсеткіштер ағымдағы процессордың жұмыс жиілігіне қарамастан жүктемені дұрыс бағалауға мүмкіндік беретін жүктемені қадағалау. Өзгеріс кернеу мен процессор жиілігінің динамикалық өзгеруі жағдайында тапсырмалардың әрекетін дәлірек болжауға мүмкіндік береді. Мысалы, 1 МГц жиілікте процессор ресурстарының 3/1000 бөлігін тұтынатын тапсырма жиілік 2 МГц-ке дейін төмендеген кезде ресурстардың 3/500 бөлігін тұтынады, бұл бұрын оның толық қуатта жұмыс істеп тұрғаны туралы жалған болжам жасаған (яғни, тапсырмалар пайда болды). жоспарлаушыға жиілікті азайту арқылы ғана үлкенірек болады, бұл cpufreq кестесінің басқарушысында қате шешімдердің қабылдануына әкелді).
    • Өнімділік режимдерін таңдауға жауапты Intel P-state драйвері пайдалануға ауыстырылды кесте.
    • Ядро нақты уақытта (PREEMPT_RT) жұмыс істеп тұрған кезде BPF ішкі жүйесін пайдалану мүмкіндігі іске асырылды. Бұрын, PREEMPT_RT қосылған кезде, BPF өшіру қажет болатын.
    • BPF бағдарламасының жаңа түрі қосылды - BPF_MODIFY_RETURN, оны ядродағы функцияға қосуға және осы функциямен қайтарылған мәнді өзгертуге болады.
    • Қосылды мүмкіндік Clone3() жүйелік шақыруын пайдаланып, тектік топтан басқа топта процесті жасау, бұл негізгі процеске шектеулерді қолдануға және жаңа процесті немесе ағынды шығарғаннан кейін бірден есепке алуды қосуға мүмкіндік береді. Мысалы, қызмет менеджері жаңа қызметтерді бөлек топтарға тікелей бөле алады және жаңа процестер «мұздатылған» топтарға орналастырылған кезде дереу тоқтатылады.
    • Kbuild ішінде қосылды ядроны құру кезінде Clang/LLVM құралдар жинағына ауысу үшін "LLVM=1" орта айнымалысына қолдау көрсету. binutils нұсқасына қойылатын талаптар көтерілді (2.23).
    • Күнит сынақтарының нәтижелері бар жөндеулерге /sys/kernel/debug/kunit/ бөлімі қосылды.
    • Pm_debug_messages ядросының жүктелу параметрі қосылды (/sys/power/pm_debug_messages аналогы), ол қуатты басқару жүйесінің жұмысы туралы жөндеу ақпаратын шығаруға мүмкіндік береді (күту және күту режиміндегі ақауларды жою кезінде пайдалы).
    • Асинхронды енгізу/шығару интерфейсіне io_uring қолдау қосылды қосылым() и атомдық буферді таңдау.
    • Perf құралдар жинағы арқылы жақсартылған топ профилі. Бұрын perf тек белгілі бір топтағы тапсырмаларды профильдейтін және ағымдағы үлгінің қай топқа жататынын таба алмайтын. perf енді әр үлгі үшін топ туралы ақпаратты алады, бұл сізге бірнеше топтарды профильдеуге және сұрыптауды қолдануға мүмкіндік береді.
      есептерде топтастыру.

    • cgroupfs, топтарды басқаруға арналған псевдо-FS кеңейтілген атрибуттарға (xattrs) қолдауды қосты, оның көмегімен, мысалы, пайдаланушы кеңістігінде өңдеушілер үшін қосымша ақпаратты қалдыра аласыз.
    • Топтық жад контроллерінде қосылдыжәне топ мүшелеріне берілетін жедел жадтың ең аз мөлшерін реттейтін «memory.low» мәнін рекурсивті қорғауды қолдау. Топ иерархиясын "memory_recursiveprot" опциясымен орнату кезінде төменгі түйіндер үшін орнатылған "memory.low" мәні барлық еншілес түйіндерге автоматты түрде таратылады.
    • Қосылды Uacce (Unified/User-Space-access-intended Accelerator Framework) орталық процессор мен перифериялық құрылғылар арасында виртуалды мекенжайларды (SVA, ортақ виртуалды адрестеу) бөлісуге арналған құрылым, аппараттық жеделдеткіштерге негізгі процессордағы деректер құрылымдарына қол жеткізуге мүмкіндік береді.
  • Аппараттық құрылымдар
    • ARM архитектурасы үшін жедел жадты алу мүмкіндігі жүзеге асырылады.
    • RISC-V архитектурасы үшін процессорларды ыстық қосуға және жоюға (CPU hotplug) қолдау қосылды. 32-биттік RISC-V үшін eBPF JIT жүзеге асырылады.
    • KVM қонақ орталарын іске қосу үшін 32 биттік ARM жүйелерін пайдалану мүмкіндігі жойылды.
    • s390 архитектурасына арналған "жалған" NUMA іске асырылуы жойылды, ол үшін өнімділікті жақсарту үшін пайдалану жағдайлары табылмады.
    • ARM64 үшін ARMv8.4-те анықталған және тапсырма жоспарлаушысында жиілікті масштабтауды түзету факторларын есептеу үшін пайдаланылатын өнімділік есептегіштерін қамтамасыз ететін AMU (Activity Monitors Unit) кеңейтіміне қолдау қосылды.
  • Жабдық
    • Қосылды virtio спецификацияларына сәйкес келетін деректер алмасу арнасын пайдаланатын vDPA құрылғыларына қолдау көрсету. vDPA құрылғылары физикалық қосылған жабдық немесе бағдарламалық жасақтамамен эмуляцияланған виртуалды құрылғылар болуы мүмкін.
    • GPIO ішкі жүйесінде пайда болды өзгерістерді бақылауға арналған жаңа ioctl() пәрмені, кез келген GPIO жолының күйіндегі өзгерістер туралы процесті хабардар етуге мүмкіндік береді. Жаңа пәрменді қолданудың мысалы ретінде ұсынылды gpio сағат утилитасы.
    • Intel бейне карталарына арналған i915 DRM драйверінде енгізілген Tigerlake («Gen12») чиптері үшін әдепкі қолдау және OLED артқы жарығын басқару үшін бастапқы қолдау қосылды. Мұз көлі, Эльхарт көлі, Байтрайл және Хасвелл чиптеріне қолдау жақсарды.
    • Amdgpu драйверінде қосылды микробағдарламаны ASIC үшін USBC чипіне жүктеу мүмкіндігі. AMD Ryzen 4000 «Renoir» чиптеріне қолдау жақсартылған. Қазір OLED панельдерін басқаруға қолдау бар. Түзетулердегі микробағдарлама күйін көрсету қамтамасыз етілген.
    • Қонақ жүйелерінде OpenGL 4 пайдалану мүмкіндігі VMware виртуалдандыру жүйелеріне арналған vmwgfx DRM драйверіне қосылды (бұрын OpenGL 3.3 қолдауы болған).
    • TI Keystone платформасының дисплей жүйесі үшін жаңа DRM драйвері tidss қосылды.
    • СКД панельдері үшін қосылған драйверлер: Feixin K101 IM2BA02, Samsung s6e88a0-ams452ef01, Novatek NT35510, Elida KD35T133, EDT, NewEast Optoelectronics WJFH116008A, Rocktech F101CT01D350ri, F54004CTXNUMXDXNUMXri.
    • Қуатты басқару жүйесіне қосылды Atom негізіндегі Intel Jasper Lake (JSL) платформасына қолдау көрсету.
    • Rockchip RK3399, Pine64 PineTab планшеті және смартфоны негізіндегі Pinebook Pro ноутбукіне қолдау қосылды. PinePhone Allwinner A64 негізінде.
    • Жаңа аудио кодектер мен чиптерге қолдау қосылды:
      Amlogic AIU, Amlogic T9015, Texas Instruments TLV320ADCX140, Realtek RT5682, ALC245, Broadcom BCM63XX I2S, Maxim MAX98360A, Presonus Studio 1810c, MOTU MicroBook IIc.

    • Qualcomm Snapdragon 865 (SM8250), IPQ6018, NXP i.MX8M Plus, Kontron “sl28”, 11 i.MX6 TechNexion Pico тақта опциялары, үш жаңа Toradex Colibri опциясы, Samsung S7710 Galaxy Xco негізіндегі ARM тақталары мен платформаларына қолдау қосылды. -Ericsson u2, DH Electronics DHCOM SoM және PDK8500, Renesas M2ULCB, Hoperun HiHope, Linutronix Testbox v3, PocketBook Touch Lux 2.

Ақпарат көзі: opennet.ru

пікір қалдыру