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

Екі айлық дамудан кейін Линус Торвальдс Linux ядросының 5.12 шығарылымын ұсынды. Ең көрнекті өзгерістердің арасында: Btrfs жүйесінде аймақтарға бөлінген блок құрылғыларын қолдау, файлдық жүйе үшін пайдаланушы идентификаторларын картаға түсіру мүмкіндігі, бұрынғы ARM архитектураларын тазалау, NFS жүйесінде «асыл» жазу режимі, кэштен файл жолдарын анықтауға арналған LOOKUP_CACHED механизмі. , BPF-де атомдық нұсқауларды қолдау, жадпен жұмыс істеу кезінде қателерді анықтауға арналған KFENCE отладтау жүйесі, желі стекіндегі бөлек ядро ​​ағынында жұмыс істейтін NAPI сұрау режимі, ACRN гипервизоры, тапсырмадағы алдын ала модельді жылдам өзгерту мүмкіндігі жоспарлаушы және Clang-те құрылыс кезінде LTO оңтайландыруларына қолдау көрсету.

Жаңа нұсқада 14170 (15480) әзірлеушілерден 1946 (алдыңғы шығарылымда 1991) түзетулер бар, патч өлшемі 38 МБ (өзгертулерге әсер еткен 12102 (12090) файл, 538599 (868025) код жолы қосылды, 333377 (261456)) жолдар жойылды). 43-де енгізілген барлық өзгерістердің шамамен 5.12% -ы құрылғы драйверлеріне қатысты, өзгерістердің шамамен 17% -ы аппараттық архитектураға тән кодты жаңартуға, 12% - желілік стекке, 5% - файлдық жүйелерге және 4% -ға қатысты. ішкі ядролық ішкі жүйелермен байланысты.

Негізгі инновациялар:

  • Дискінің ішкі жүйесі, енгізу/шығару және файлдық жүйелер
    • Орнатылған файлдық жүйелер үшін пайдаланушы идентификаторларын салыстыру мүмкіндігі іске асырылды (сіз орнатылған шетелдік бөлімдегі бір пайдаланушының файлдарын ағымдағы жүйедегі басқа пайдаланушымен салыстыра аласыз). FAT, ext4 және XFS файлдық жүйелері үшін салыстыруға қолдау көрсетіледі. Ұсынылған функционалдылық әртүрлі пайдаланушылар арасында және әртүрлі компьютерлердегі файлдарды ортақ пайдалануды жеңілдетуге мүмкіндік береді, оның ішінде пайдаланушыларға өздерінің үй каталогтарын сыртқы медиаға жылжытуға және оларды әртүрлі құрылғыларда пайдалануға мүмкіндік беретін жүйелік үйдегі портативті үй каталогы механизмінде карталау қолданылады. пайдаланушы идентификаторлары сәйкес келмейтін компьютерлер. Тағы бір пайдалы қолданба - файлдық жүйедегі файлдардың иелері туралы деректерді іс жүзінде өзгертпей, сыртқы хосттан файлдарға ортақ қол жеткізуді қамтамасыз етуді ұйымдастыру.
    • LOOKUP_CACHED патчтары ядроға қабылданған, операцияларға тек кэште қол жетімді деректер негізінде блоктаусыз пайдаланушы кеңістігінен файл жолын анықтауға мүмкіндік береді. LOOKUP_CACHED режимі openat2() шақыруында деректер тек кэштен қызмет көрсетілетін RESOLVE_CACHED жалауын өту арқылы іске қосылады және жолды анықтау дискіге кіруді қажет етсе, EAGAIN қатесі қайтарылады.
    • Btrfs файлдық жүйесі аймақтарға бөлінген блоктық құрылғыларға бастапқы қолдауды қосты (қатты магниттік дискілердегі немесе NVMe SSD дискілеріндегі құрылғылар, сақтау кеңістігі блоктар немесе секторлар тобын құрайтын аймақтарға бөлінген, оларға тек деректерді дәйекті түрде қосуға рұқсат етіледі, блоктардың бүкіл тобын жаңарту). Тек оқуға арналған режимде бет (ішкі бет) кіші метадеректері мен деректері бар блоктарды қолдау жүзеге асырылады.
    • F2FS файлдық жүйесінде алгоритм мен қысу деңгейін таңдау мүмкіндігі қосылды. LZ4 алгоритмі үшін жоғары деңгейлі қысуға қолдау қосылды. Checkpoint_merge орнату опциясын іске асырды.
    • fs-verity арқылы қорғалған файлдардан метадеректерді оқу үшін FS_IOC_READ_VERITY_METADATA жаңа ioctl пәрмені жүзеге асырылды.
    • NFS клиенті «ынталы» жазу режимін жүзеге асырады (жазады = ынталы), қосылған кезде файлға жазу әрекеттері бет кэшін айналып өтіп, серверге дереу тасымалданады. Бұл режим жадты тұтынуды азайтуға мүмкіндік береді, файлдық жүйедегі бос орынның аяқталуы туралы ақпаратты лезде алуды қамтамасыз етеді және кейбір жағдайларда өнімділікті арттыруға мүмкіндік береді.
    • CIFS (SMB) жүйесіне жаңа орнату опциялары қосылды: файлды кэштеуді басқару үшін acregmax және каталог метадеректерін кэштеуді басқару үшін acdirmax.
    • XFS жүйесінде көп ағынды квотаны тексеру режимі қосылды, fsync орындалуы жеделдетілді және файлдық жүйенің өлшемін азайту функциясын жүзеге асыру үшін growfs коды дайындалды.
  • Жад және жүйелік қызметтер
    • DTMP (динамикалық жылу қуатын басқару) ішкі жүйесі қосылды, ол орнатылған жалпы температура шектері негізінде әртүрлі құрылғылардың қуат тұтынуын динамикалық реттеуге мүмкіндік береді.
    • Байланыстыру сатысында оңтайландыруларды (LTO, Link Time Optimization) қоса отырып, Clang компиляторының көмегімен ядроны құру мүмкіндігі іске асырылды. LTO оңтайландырулары құрастыру процесіне қатысатын барлық файлдардың күйін ескере отырып ерекшеленеді, ал дәстүрлі оңтайландыру режимдері әрбір файлды бөлек оңтайландырады және басқа файлдарда анықталған функцияларды шақыру шарттарын ескермейді. Мысалы, LTO көмегімен басқа файлдардағы функциялар үшін кірістірілген орналастыру мүмкін болады, пайдаланылмаған код орындалатын файлға қосылмайды, типті тексеру және жалпы оңтайландыру тұтастай жоба деңгейінде жүзеге асырылады. LTO қолдауы қазіргі уақытта x86 және ARM64 архитектураларымен шектелген.
    • Тапсырмаларды жоспарлаушыда жүктеу сатысында (алдын ала алу=жоқ/ерікті/толық) немесе отладкалар арқылы жұмыс істеу кезінде (/debug/sched_debug), егер PREEMPT_DYNAMIC параметрі ядроны құру кезінде көрсетілген болса, алдын ала таңдау режимдерін (PREEMPT) таңдауға болады. Бұрын экструзия режимін тек құрастыру параметрлері деңгейінде орнатуға болатын. Өзгеріс дистрибутивтерге PREEMPT режимі қосылған ядроларды жіберуге мүмкіндік береді, бұл шағын өткізу айыппұлы есебінен жұмыс үстелдері үшін ең аз кідірісті қамтамасыз етеді және қажет болған жағдайда PREEMPT_VOLUNTARY (жұмыс үстелі үшін аралық режим) немесе PREEMPT_NONE (серверлер үшін максималды өткізу қабілеттілігін қамтамасыз етеді) қалпына түседі. .
    • BPF ішкі жүйесіне BPF_ADD, BPF_AND, BPF_OR, BPF_XOR, BPF_XCHG және BPF_CMPXCHG атом операцияларына қолдау қосылды.
    • BPF бағдарламаларына айнымалы ығысулары бар көрсеткіштерді пайдаланып стекке деректерге қол жеткізу мүмкіндігі беріледі. Мысалы, егер бұрын стекке массивке қол жеткізу үшін тұрақты элемент индексін ғана пайдалана алсаңыз, енді өзгеретінді пайдалануға болады. Қолжетімділікті бақылау тек қолданыстағы шекараларда BPF тексерушісі арқылы жүзеге асырылады. Бұл мүмкіндік алыпсатарлық кодты орындау осалдықтарын пайдалану туралы алаңдаушылыққа байланысты тек артықшылықты бағдарламалар үшін қол жетімді.
    • BPF бағдарламаларын пайдаланушы кеңістігінде көрінетін бақылау оқиғаларымен байланысты емес жалаң бақылау нүктелеріне қосу мүмкіндігі қосылды (мұндай бақылау нүктелері үшін ABI сақталуына кепілдік берілмейді).
    • CXL 2.0 (Compute Express Link) шинасына қолдау көрсетілді, ол орталық процессор мен жад құрылғылары арасындағы жоғары жылдамдықты өзара әрекеттесуді ұйымдастыру үшін қолданылады (сыртқы жад құрылғыларын жедел жады немесе тұрақты жадтың бөлігі ретінде осы жад сияқты пайдалануға мүмкіндік береді. процессордағы стандартты жад контроллері арқылы қосылған).
    • Linux жүйесіне тікелей қол жетімді емес микробағдарламада сақталған жад аймақтарынан деректерді алу үшін nvmem драйвері қосылды (мысалы, физикалық түрде тек микробағдарлама үшін қол жетімді EEPROM жады немесе бастапқы жүктеу кезеңінде ғана қолжетімді деректер).
    • «Oprofile» профильдеу жүйесін қолдау алынып тасталды, ол кеңінен қолданылмаған және оның орнына заманауи перф механизмі келді.
    • io_uring асинхронды енгізу/шығару интерфейсі жадты пайдалануды басқаратын топтармен біріктіруді қамтамасыз етеді.
    • RISC-V архитектурасы NUMA жүйелерін, сондай-ақ kprobes және probe механизмдерін қолдайды.
    • Процесс күйінің суреттерінің (бақылау нүктесі/қалпына келтіру) функционалдылығына қарамастан kcmp() жүйелік шақыруын пайдалану мүмкіндігі қосылды.
    • Көптеген жылдар бойы іс жүзінде қолданылмаған EXPORT_UNUSED_SYMBOL() және EXPORT_SYMBOL_GPL_FUTURE() макростары жойылды.
  • Виртуализация және қауіпсіздік
    • KFence (Kernel Electric Fence) қорғаныс механизмі қосылды, ол жадпен жұмыс кезінде буфердің асып кетуі және жадты босатқаннан кейін қол жеткізу сияқты қателерді ұстайды. KASAN отладтау механизмінен айырмашылығы, KFence ішкі жүйесі жоғары жұмыс жылдамдығымен және төмен жүктемемен сипатталады, бұл тек жұмыс жүйелерінде немесе ұзақ мерзімді жұмыс кезінде пайда болатын жад қателерін ұстауға мүмкіндік береді.
    • Нақты уақыттағы тапсырмаларға дайындықты және миссиясы маңызды жүйелерде пайдалану жарамдылығын ескере отырып жазылған ACRN гипервизорына қосымша қолдау. ACRN минималды үстеме шығындарды қамтамасыз етеді, жабдықпен өзара әрекеттесу кезінде төмен кідіріс пен сәйкес жауап беруге кепілдік береді. Орталық процессор ресурстарын, енгізу/шығару жүйесін, желілік ішкі жүйені, графиканы және дыбыстық операцияларды виртуалдандыруды қолдайды. ACRN бірнеше оқшауланған виртуалды машиналарды электронды басқару блоктарында, аспаптар панелінде, автомобиль ақпараттық жүйелерінде, тұтынушылық IoT құрылғыларында және басқа ендірілген технологияларда іске қосу үшін пайдаланылуы мүмкін. ACRN қонақ жүйелерінің екі түрін қолдайды - жүйелік ресурстарды (CPU, жад, енгізу/шығару және т.б.) басқару үшін пайдаланылатын артықшылықты қызмет көрсету виртуалды құрылғылары және Linux, Android және Windows дистрибутивтерін іске қоса алатын пайдаланушының пайдаланушы виртуалды құрылғылары.
    • Файлдардың және олармен байланысты метадеректердің тұтастығын тексеруге арналған хэш дерекқорын жүргізетін IMA (Integrity Measurement Architecture) ішкі жүйесінде енді ядроның өзі деректерінің тұтастығын тексеруге, мысалы, SELinux ережелеріндегі өзгерістерді қадағалауға болады. .
    • Xen гиперқоңырауларын ұстап алу және оларды пайдаланушы кеңістігінде жұмыс істейтін эмуляторға жіберу мүмкіндігі KVM гипервизорына қосылды.
    • Hyper-V гипервизорының түбірлік ортасы ретінде Linux жүйесін пайдалану мүмкіндігі қосылды. Түбірлік ортаның аппараттық құралға тікелей қатынасы бар және қонақтық жүйелерді іске қосу үшін пайдаланылады (Xen жүйесіндегі Dom0 аналогы). Осы уақытқа дейін Hyper-V (Microsoft Hypervisor) Linux жүйесін тек қонақтық орталарда қолдады, бірақ гипервизордың өзі Windows негізіндегі ортадан басқарылатын.
    • eMMC карталары үшін кірістірілген шифрлауға қолдау қосылды, бұл енгізу/шығару мөлдір шифрлау және шифрын ашатын диск контроллеріне орнатылған шифрлау механизмдерін пайдалануға мүмкіндік береді.
    • Өзекте пайдаланылмайтын RIPE-MD 128/256/320 және Tiger 128/160/192 хэштерін қолдау, сондай-ақ ChaCha20 алгоритмімен ауыстырылған Salsa20 ағынының шифрі жойылды. криптографиялық ішкі жүйе. blake2 алгоритмі blake2s енгізу үшін жаңартылды.
  • Желілік ішкі жүйе
    • Желілік құрылғылар үшін NAPI сұрау өңдеушісін бөлек ядро ​​ағынына жылжыту мүмкіндігі қосылды, бұл жұмыс жүктемесінің кейбір түрлері үшін өнімділікті жақсартуға мүмкіндік береді. Бұрын сұрау softirq контекстінде орындалды және тапсырма жоспарлаушымен қамтылмады, бұл максималды өнімділікке қол жеткізу үшін ұсақ түйіршікті оңтайландыруларды орындауды қиындатты. Жеке ядро ​​ағынында орындау сұрау өңдеушісін пайдаланушы кеңістігінен байқауға, жеке орталық процессорлық өзектерге қосуға және тапсырманы ауыстыруды жоспарлау кезінде ескеруге мүмкіндік береді. Sysfs жүйесінде жаңа режимді қосу үшін /sys/class/net/ параметрі ұсынылады. /жіпті.
    • MPTCP (MultiPath TCP) өзегіне интеграция, әртүрлі IP мекенжайларымен байланысты әртүрлі желілік интерфейстер арқылы бірнеше маршруттар бойынша пакеттерді бір уақытта жеткізумен TCP қосылымының жұмысын ұйымдастыруға арналған TCP протоколының кеңейтілуі. Жаңа шығарылым белгілі бір ағындарға басымдық беру мүмкіндігін қосады, бұл, мысалы, бастапқы ағынмен ақаулар болған жағдайда ғана қосылатын сақтық көшірме ағындарының жұмысын ұйымдастыруға мүмкіндік береді.
    • IGMPv3 EHT (анық хостты қадағалау) механизміне қолдауды қосады.
    • Netfilter пакетін сүзу механизмі эксклюзивті басқаруға ие болу үшін белгілі бір кестелерді иелену мүмкіндігін береді (мысалы, фондық брандмауэр процесі белгілі бір кестелерді иемденіп, басқа ешкімнің оларға араласуын болдырмайды).
  • Жабдық
    • Біз ескірген және жөндеу көрмеген ARM платформаларын тазаладық. efm32, picoxcell, prima2, tango, u300, zx және c6x платформаларының коды, сондай-ақ оларға қатысты драйверлер жойылды.
    • Amdgpu драйвері Sienna Cichlid GPU (Navi 22, Radeon RX 6xxx) негізіндегі карталарды үдеткіш (OverDrive) мүмкіндігін береді. 16-ден 8-ге дейінгі DCE (дисплей контроллері қозғалтқышы) үшін FP11 пиксел пішімін қолдау қосылды. GPU Navy Flounder (Navi 21) және APU Van Gogh үшін GPU қалпына келтіру мүмкіндігі іске асырылды.
    • Intel графикалық карталарына арналған i915 драйвері өнімділікті жақсарту үшін оқшаулау және қорғау механизмдерін өшіру үшін i915.mitigations параметрін жүзеге асырады. Жолбарыс көлінен басталатын чиптер үшін VRR (Variable Rate Refresh) механизмін қолдау қамтылған, ол ойын кезінде тегістікті және бос орындардың болмауын қамтамасыз ету үшін монитордың жаңару жылдамдығын бейімді түрде өзгертуге мүмкіндік береді. Түс дәлдігін жақсарту үшін Intel Clear Color технологиясын қолдау қамтылған. DP-HDMI 2.1 үшін қосылған қолдау. eDP панельдерінің артқы жарығын басқару мүмкіндігі енгізілді. LSPCON (Level Shifter және Protocol Converter) қолдауы бар Gen9 графикалық процессорлары үшін HDR қолдауы қосылады.
    • Жаңа драйвер GA100 (Ampere) архитектурасына негізделген NVIDIA графикалық процессорларына бастапқы қолдауды қосады.
    • MSM драйвері SDM (Snapdragon) 508, 509 және 512 чиптерінде қолданылатын Adreno 630, 636 және 660 GPU қолдауын қосады.
    • Sound BlasterX AE-5 Plus, Lexicon I-ONIX FW810s және Pioneer DJM-750 дыбыс карталарына қолдау қосылды. Intel Alder Lake PCH-P аудио ішкі жүйесіне қолдау қосылды. Пайдаланушы кеңістігіндегі өңдеушілерді жөндеу үшін дыбыс қосқышын қосу және ажыратудың бағдарламалық модельдеуіне қолдау көрсетілді.
    • 64 жылдан 1996 жылға дейін шығарылған Nintendo 2003 ойын консольдеріне қолдау қосылды (Lintendo 64 жүйесіне соңғы порттарды өткізу әрекеттері аяқталмады және бу бағдарламасы ретінде жіктелді). Жиырма жылға жуық уақыт бойы шығарылмаған ескірген платформа үшін жаңа портты құрудың мотивациясы эмуляторларды дамытуды ынталандыру және ойындарды тасымалдауды жеңілдету болып табылады.
    • Sony PlayStation 5 DualSense ойын контроллеріне арналған драйвер қосылды.
    • ARM тақталарына, құрылғыларына және платформаларына қосымша қолдау: PineTab, Snapdragon 888 / SM8350, Snapdragon MTP, Two Beacon EmbeddedWorks, Intel eASIC N5X, Netgear R8000P, Plymovent M2M, Beacon i.MX8M Nano.
    • Purism Librem5 Evergreen, Xperia Z3+/Z4/Z5, ASUS Zenfone 2 Laser, BQ Aquaris X5, OnePlus6, OnePlus6T, Samsung GT-I9070 смартфондарына қолдау қосылды.
    • Broadcom VK үдеткіш тақталарына (мысалы, Valkyrie және Viper PCIe тақталары) арналған bcm-vk драйвері қосылды, оны аудио, бейне және кескінді өңдеу операцияларын, сондай-ақ шифрлауға қатысты операцияларды бөлек құрылғыға жүктеу үшін пайдалануға болады.
    • Тұрақты зарядтауды және пернетақтаның артқы жарығын басқару мүмкіндігі бар Lenovo IdeaPad платформасына қолдау қосылды. Сондай-ақ қуат тұтыну режимдерін басқару мүмкіндігі бар ThinkPad платформасының ACPI профиліне қолдау көрсетіледі. Lenovo ThinkPad X1 Tablet Gen 2 HID ішкі жүйесі үшін драйвер қосылды.
    • Raspberry Pi үшін камера модулін қолдайтын ov5647 драйвері қосылды.
    • RISC-V SoC FU740 және HiFive Unleashed тақталарына қолдау қосылды. Kendryte K210 чипіне арналған жаңа драйвер де қосылды.

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

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