Linux ядросы 5.14

Linux ядросы 5.14

Екі айлық дамудан кейін Линус Торвальдс енгізілді ядро шығару Linux 5.14. Ең көрнекті өзгерістердің арасында: жаңа quotactl_fd() және memfd_secret() жүйелік шақырулар, ide және өңделмеген драйверлерді жою, топ тобына арналған жаңа енгізу/шығару басым контроллері, SCHED_CORE тапсырмаларын жоспарлау режимі, тексерілген BPF бағдарлама жүктеушілерін құруға арналған инфрақұрылым.

Жаңа нұсқа 15883 әзірлеушіден 2002 69 түзетуді қамтиды, патч өлшемі 12580 МБ (өзгертулер 861501 321654 файлға әсер етті, 47 5.14 код жолы қосылды, 14 13 жол жойылды). 3-те енгізілген барлық өзгерістердің шамамен 3% -ы құрылғы драйверлеріне қатысты, өзгерістердің шамамен XNUMX% -ы аппараттық архитектураға тән кодты жаңартуға, XNUMX% - желілік стекке, XNUMX% - файлдық жүйелерге және XNUMX% -ға қатысты. ішкі ядролық ішкі жүйелермен байланысты.

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

  • дискінің ішкі жүйесі, енгізу/шығару және файлдық жүйелер:
    • топ үшін жүзеге асырылды жаңа енгізу/шығару басымдылық контроллері – rq-qos, ол әрбір топ мүшелері жасаған құрылғыларды блоктауға сұраныстарды өңдеу басымдығын басқара алады. Жаңа басым контроллерге қолдау көрсету mq-deadline енгізу/шығару жоспарлаушысына қосылды;
    • ext4 файлдық жүйесінде жүзеге асырылды жаңа ioctl пәрмені EXT4_IOC_CHECKPOINT, ол журналдан және байланысты буферлерден дискіге барлық күтудегі транзакцияларды мәжбүрлейді, сонымен қатар журнал қоймасы пайдаланатын аумақты қайта жазады. Өзгеріс файлдық жүйелерден ақпараттың ағып кетуіне жол бермеу бастамасының бөлігі ретінде дайындалды;
    • Btrfs ішінде енгізілді Өнімділікті оңтайландыру: fsync орындау кезінде кеңейтілген атрибуттарды қажетсіз тіркеуді жою арқылы кеңейтілген атрибуттары бар қарқынды операциялардың өнімділігі 17%-ға дейін өсті. Сонымен қатар, ауқымдарға әсер етпейтін кесу әрекеттерін орындау кезінде толық синхрондау өшіріледі, бұл жұмыс уақытын 12% қысқартты. FS тексеру кезінде енгізу/шығару өткізу қабілеттілігін шектеу үшін sysfs параметріне қосылды. Құрылғының өлшемдерін өзгерту және жою әрекеттерін болдырмау үшін ioctl қоңыраулары қосылды;
    • XFS-де қайта өңделген буферлік кэшті іске асыру, ол пакеттік режимде жад беттерін бөлуге беріледі. Жақсартылған кэш тиімділігі;
    • F2FS тек оқуға арналған режимде жұмыс істеу опциясын қосты және кездейсоқ оқу өнімділігін жақсарту үшін қысылған блокты кэштеу режимін (compress_cache) енгізді. mmap() операциясы арқылы жадқа салыстырылған файлдарды қысу үшін қолдау жүзеге асырылды. Маска арқылы файлды қысуды таңдаулы түрде өшіру үшін nocompress орнатудың жаңа опциясы ұсынылды;
    • exFAT драйверінде кейбір сандық камераларды сақтаумен үйлесімділікті жақсарту бойынша жұмыс жасалды;
    • қосылған жүйелік қоңырау quotactl_fd(), бұл квоталарды арнайы құрылғы файлы арқылы емес, квота қолданылатын файлдық жүйемен байланыстырылған файл дескрипторын көрсету арқылы басқаруға мүмкіндік береді;
    • IDE интерфейсі бар блоктық құрылғыларға арналған ескі драйверлер ядродан жойылды, олар ұзақ уақыт бойы libata ішкі жүйесімен ауыстырылды. Ескі құрылғыларды қолдау толығымен сақталды, өзгертулер ескі драйверлерді пайдалану мүмкіндігіне ғана қатысты, оларды пайдалану кезінде дискілер /dev/sd* емес, /dev/hd* деп аталды;
    • /dev/raw интерфейсі арқылы блоктау құрылғыларына буферсіз қол жеткізуді қамтамасыз ететін «шикі» драйвер ядродан жойылды. Бұл функция O_DIRECT жалауын пайдаланатын қолданбаларда бұрыннан іске асырылған;
  • жад және жүйелік қызметтер:
    • жаңа жоспарлау режимі тапсырмаларды жоспарлаушыға енгізілді SCHED_CORE, бұл бір процессордың ядросында қандай процестер бірге жұмыс істей алатынын басқаруға мүмкіндік береді. Әрбір процеске процестер арасындағы сенімділік ауқымын анықтайтын cookie идентификаторы тағайындалуы мүмкін (мысалы, бір пайдаланушыға немесе контейнерге тиесілі). Кодтың орындалуын ұйымдастырған кезде жоспарлаушы бір процессор ядросының бір иесімен байланысты процестер арасында ғана ортақ болуын қамтамасыз ете алады, ол сенімді және сенімсіз тапсырмалардың бір SMT (Hyper Threading) ағынында орындалуына жол бермеу арқылы кейбір Spectre шабуылдарын блоктау үшін пайдаланылуы мүмкін. ;
    • cgroup механизмі үшін cgroup.kill виртуалды файлына «1» жазу арқылы топпен байланысты барлық процестерді бірден жоюға (SIGKILL жіберу) мүмкіндік беретін өлтіру операциясын қолдау жүзеге асырылды;
    • атомдық нұсқауды орындау кезінде деректер орталық процессордың екі кэш сызығын қиып өтуіне байланысты жадтағы теңестірілмеген деректерге қатынасу кезінде пайда болатын бөлінген құлыптарды («бөлінген құлыптар») анықтауға жауап беруге байланысты кеңейтілген мүмкіндіктер. Мұндай бұғаттау өнімділіктің айтарлықтай төмендеуіне әкеледі, сондықтан бұрын бұғаттауды тудырған қолданбаны күштеп тоқтату мүмкін болатын. Жаңа шығарылым ядроның пәрмен жолы параметрін қосады “split_lock_detect=ratelimit:N” секундына құлыптау операцияларының жылдамдығына жалпы жүйелік шектеуді анықтауға мүмкіндік береді, одан асып кеткеннен кейін бөлінген құлыптың көзі болған кез келген процесс тоқтатудың орнына 20 мс тоқтатуға мәжбүр болуы;
    • Әрбір топ тобына қанша процессор уақытын бөлуге болатындығын анықтайтын CFS тобының өткізу қабілеттілігін контроллері (CFS өткізу қабілеті контроллері) берілген әрекет ұзақтығымен шектелген шектеулерді анықтау мүмкіндігіне ие, бұл кешігуге сезімтал жүктемелерді жақсырақ реттеуге мүмкіндік береді. Мысалы, cpu.cfs_quota_us мәнін 50000 мәніне және cpu.cfs_period_us мәнін 100000 мәніне орнату процестер тобына әрбір 100 мс сайын 50 мс CPU уақытын ысырап етуге мүмкіндік береді;
    • қосылды бұдан әрі сенімді цифрлық кілтпен қол қойылған BPF бағдарламаларын ғана жүктеп алуға мүмкіндік беретін BPF бағдарламасын жүктеушілерді құрудың бастапқы инфрақұрылымы;
    • жаңа футекс операциясы FUTEX_LOCK_PI2 қосылды, ол күту уақытын есептеу үшін монотонды таймерді пайдаланады, ол жүйенің ұйқы режимінде жұмсаған уақытын ескереді;
    • RISC-V архитектурасы үшін үлкен жад беттерін қолдау (мөлдір үлкен беттер) және пайдалану мүмкіндігі KFENCE жадымен жұмыс істеу кезіндегі қателерді анықтау;
    • процесті жадты басқаруды оңтайландыру құралын ұсынатын madvise() жүйелік шақыруына, қосылды MADV_POPULATE_READ және MADV_POPULATE_WRITE жалаушалары нақты оқу немесе жазу әрекеттерін орындамай, оқу немесе жазу әрекеттері үшін салыстырылған барлық жад беттерінде "бет ақаулығын" генерациялайды (алдын ала). Жалаушаларды пайдалану бағдарламаның орындалуындағы кідірістерді азайту үшін пайдалы болуы мүмкін, «бет ақауы» өңдеушісін барлық бөлінбеген беттер үшін бірден, оларға нақты қол жеткізуді күтпей-ақ белсенді орындаудың арқасында;
    • бірлік тестілеу жүйесінде күніт қосылды QEMU ортасында сынақтарды орындауға қолдау көрсету;
    • жаңа трекерлер қосылды: «осноиз" үзілістерді өңдеуден туындаған қолданба кідірістерін қадағалау үшін және " timerlat " таймер сигналынан оянған кезде кешігулер туралы толық ақпаратты көрсету үшін;
  • виртуализация және қауіпсіздік:
    • қосылды жүйелік қоңырау memfd_secret(), оқшауланған мекенжай кеңістігінде жеке жад аймағын құруға мүмкіндік береді, тек иесі процессіне көрінеді, басқа процестерде көрсетілмейді және ядроға тікелей қол жетімді емес;
    • seccomp жүйелік шақыруды сүзу жүйесінде құлып өңдеушілерді пайдаланушы кеңістігіне жылжытқанда, оқшауланған тапсырма үшін файл дескрипторын жасау және жүйелік шақыруды өңдеу кезінде оны қайтару үшін бір атомдық операцияны қолдануға болады. Ұсынылған операция шешеді проблема сигнал келген кезде пайдаланушы кеңістігінде өңдеушінің үзілуімен;
    • қосылды жаңа механизм "пайдаланушы аттар кеңістігіндегі" пайдаланушыға жеке rlimit есептегіштерін байланыстыратын пайдаланушы идентификаторы аттар кеңістігіндегі ресурстарды шектеуді басқару үшін. Өзгеріс бір пайдаланушы әртүрлі контейнерлердегі процестерді іске қосқан кезде жалпы ресурс есептегіштерін пайдалану мәселесін шешеді;
    • ARM64 жүйелеріне арналған KVM гипервизоры MTE (MemTag, Memory Tagging Extension) кеңейтімін қонақтық жүйелерде пайдалану мүмкіндігін қосты, ол әрбір жадты бөлу операциясына тегтерді байланыстыруға және пайдалануды блоктау үшін көрсеткіштерді дұрыс пайдалануды тексеруді ұйымдастыруға мүмкіндік береді. әлдеқашан босатылған жад блоктарына, толып кету буферлеріне, инициализациядан бұрын қол жеткізуге және ағымдағы контекстен тыс пайдаланудан туындаған осалдықтар;
    • ARM64 платформасы қамтамасыз ететін меңзер аутентификациясы енді ядро ​​мен пайдаланушы кеңістігі үшін бөлек конфигурациялануы мүмкін. Технология көрсеткіштің пайдаланылмаған жоғарғы биттерінде сақталған цифрлық қолтаңбаларды пайдаланып қайтару мекенжайларын тексеру үшін арнайы ARM64 нұсқауларын пайдалануға мүмкіндік береді;
    • Linux пайдаланушы режимінде қосылды PCI-over-virtio драйверімен жүзеге асырылатын виртуалды PCI шинасы бар PCI құрылғылары үшін драйверлерді пайдалануды қолдау;
    • x86 жүйелері үшін virtio-iommu паравиртуалдандырылған құрылғыға қолдау қосылды, ол ATTACH, DETACH, MAP және UNMAP сияқты IOMMU сұрауларын жад беті кестелерін эмуляциялаусыз virtio тасымалдау арқылы жіберуге мүмкіндік береді;
    • Skylake отбасынан Coffee Lake-ге дейінгі Intel процессорлары үшін қажетсіз синхрондау операцияларын динамикалық түрде жою арқылы көп ағынды қолданбалардың өнімділігін жақсарту құралдарын қамтамасыз ететін Intel TSX (транзакциялық синхрондау кеңейтімдері) пайдалану әдепкі бойынша өшірілген. Кеңейтімдер шабуылдардың ықтималдығына байланысты өшірілген Zombieload, операцияларды асинхронды үзу механизмінің жұмысы кезінде пайда болатын үшінші тарап арналары арқылы ақпараттың ағып кетуін манипуляциялау (TAA, TSX Asynchronous Abort);
  • желілік ішкі жүйе:
    • MPTCP (MultiPath TCP) өзегіне интеграцияны жалғастыру, әртүрлі IP мекенжайларымен байланысты әртүрлі желілік интерфейстер арқылы бірнеше маршруттар бойынша пакеттерді бір уақытта жеткізумен TCP қосылымының жұмысын ұйымдастыруға арналған TCP протоколының кеңейтілуі. Жаңа шығарылымда қосылды IPv4 және IPv6 үшін жеке трафик хэштеу саясаттарын орнату механизмі (көп жолды хэш саясаты), жолды таңдауды анықтайтын хэшті есептеу кезінде пакеттердегі қай өрістер, соның ішінде инкапсуляцияланған өрістер пайдаланылатынын анықтауға мүмкіндік береді. пакет үшін;
    • виртуалды тасымалдау виртиосына ұяшық қолдауы қосылды SOCK_SEQPACKET (датаграммалардың ретті және сенімді берілуі);
    • SO_REUSEPORT розеткасының механизмінің мүмкіндіктері кеңейтілді, бұл SO_REUSEPORT арқылы қосылған барлық розеткалар бойынша бір уақытта кіріс сұрауларды тарату арқылы қосылымдарды қабылдау үшін бірнеше тыңдау ұяларына бір портқа бірден қосылуға мүмкіндік береді, бұл көп ағынды серверлік қосымшаларды құруды жеңілдетеді. . Жаңа нұсқада қосылды бастапқы таңдалған ұяшықпен сұрауды өңдеу кезінде сәтсіздікке ұшыраған жағдайда басқаруды басқа розеткаға беру құралдары (қызметтерді қайта іске қосу кезінде жеке қосылымдардың жоғалуымен байланысты мәселені шешеді);
  • жабдық:
    • amdgpu драйверінде жүзеге асырылды «Бежевый Гоби» (Navi 6000) және «Сары тұқы» кодтық атауы бар GPU жаңа AMD Radeon RX 24 сериясын қолдау, сондай-ақ Aldebaran GPU (gfx90a) және Ван Гог APU үшін жақсартылған қолдау. Бірнеше eDP панелімен бір уақытта жұмыс істеу мүмкіндігі қосылды. APU Renoir үшін бейне жадында (TMZ, сенімді жад аймағы) шифрланған буфермен жұмыс істеуге қолдау көрсетілді. Ыстық режимде ажыратылатын графикалық карталарға қолдау қосылды. Radeon RX 6000 (Navi 2x) графикалық процессорлары мен ескі AMD графикалық процессорлары үшін әдепкі бойынша ASPM (белсенді күйдегі қуатты басқару) қуат үнемдеу механизміне қолдау көрсетіледі, ол бұрын тек Navi 1x, Vega және Polaris графикалық процессорлары үшін қосылған;
    • AMD чиптері үшін HMM (гетерогенді жадты басқару) ішкі жүйесіне негізделген ортақ виртуалды жадқа (SVM, ортақ виртуалды жад) қолдау қосылды, ол өздерінің жадты басқару блоктары (MMU, жадты басқару блогы) бар құрылғыларды пайдалануға мүмкіндік береді, ол негізгі жадқа қол жеткізе алады. HMM пайдалануды қоса, GPU мен CPU арасында ортақ мекенжай кеңістігін ұйымдастыруға болады, онда GPU процестің негізгі жадына қол жеткізе алады;
    • бастапқы технологиялық қолдауды қосты AMD Smart Shift, ол ойын ойнау, бейне өңдеу және 3D көрсету кезінде өнімділікті арттыру үшін чипсет және AMD графикалық картасы бар ноутбуктердегі CPU және GPU қуат тұтыну параметрлерін динамикалық түрде өзгертеді;
    • Intel бейне карталарына арналған i915 драйверінде енгізілген Intel Alderlake P чиптерін қолдау;
    • Hyper-V виртуалды графикалық адаптері үшін drm/hyperv драйвері қосылды;
    • қосылды шығару үшін UEFI микробағдарламасы немесе BIOS қамтамасыз ететін EFI-GOP немесе VESA фрейм буферін пайдаланатын simpledrm графикалық драйвері. Драйвердің негізгі мақсаты - толық DRM драйверін пайдаланбас бұрын, жүктеудің бастапқы кезеңдерінде графикалық шығыс мүмкіндіктерін қамтамасыз ету. Драйверді жергілікті DRM драйверлері әлі жоқ жабдық үшін уақытша шешім ретінде де пайдалануға болады;
    • қосылды барлығы бір жерде компьютерді қолдау Raspberry Pi 400;
    • Dell ноутбуктеріне кіретін камера мен микрофон аппараттық қосқыштарын қолдау үшін dell-wmi-privacy драйвері қосылды;
    • Lenovo ноутбуктері үшін қосылды sysfs /sys/class/firmware-attributes/ арқылы BIOS параметрлерін өзгертуге арналған WMI интерфейсі;
    • кеңейтілді USB4 интерфейсі бар құрылғыларды қолдау;
    • қосылды дыбыс карталары мен AmLogic SM1 TOACODEC, Intel AlderLake-M, NXP i.MX8, NXP TFA1, TDF9897, Rockchip RK817, Qualcomm Quinary MI2 және Texas Instruments TAS2505 кодектерін қолдау. HP және ASUS ноутбуктерінде жақсартылған дыбыстық қолдау. Қосылды USB интерфейсі бар құрылғыларда дыбыс ойнатылмас бұрын кідірістерді азайту үшін патчтар.

Дереккөз – opennet.ru.

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