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

Екі айлық дамудан кейін Линус Торвалдс Linux 6.3 ядросын шығарды. Ең көрнекті өзгерістердің арасында: ескірген ARM платформалары мен графикалық драйверлерді тазалау, Rust тілін қолдауды жалғастыру интеграциясы, hwnoise утилитасы, BPF-де қызыл-қара ағаш құрылымдарын қолдау, IPv4 үшін BIG TCP режимі, кірістірілген Dhrystone эталоны, өшіру мүмкіндігі. memfd-де орындау, BPF көмегімен HID драйверлерін құруға қолдау, блок тобының фрагментациясын азайту үшін Btrfs-ге өзгертулер енгізілді.

Жаңа нұсқа 15637 әзірлеушіден 2055 түзетуді қабылдады; патч өлшемі - 76 МБ (өзгерістер әсер етті 14296 файл, 1023183 жол код қосылды, 883103 жол жойылды). Салыстыру үшін, алдыңғы нұсқада 16843 әзірлеушіден 2178 түзету ұсынылды; патч өлшемі - 62 МБ. 39 ядросына енгізілген барлық өзгерістердің шамамен 6.3% құрылғы драйверлеріне қатысты, өзгерістердің шамамен 15% аппараттық архитектураларға тән кодты жаңартуға, 10% желілік стекке, 5% файлдық жүйелерге және 3 % ішкі ядролық ішкі жүйелерге.

6.3 ядросындағы негізгі инновациялар:

  • Жад және жүйелік қызметтер
    • Ескі және пайдаланылмаған ARM тақталарына қатысты кодты айтарлықтай тазарту жүргізілді, бұл ядро ​​көздерінің көлемін 150 мың жолға қысқартты. 40-тан астам ескі ARM платформалары жойылды.
    • BPF бағдарламалары түрінде іске асырылған HID (адамдық интерфейс құрылғысы) интерфейсі бар енгізу құрылғылары үшін драйверлерді құру мүмкіндігін іске асырды.
    • Rust тілін драйверлер мен ядро ​​модульдерін әзірлеуге арналған екінші тіл ретінде пайдалануға қатысты қосымша функционалдылықтың Rust-for-Linux тармағынан тасымалдауды жалғастыру. Rust қолдауы әдепкі бойынша қосылмаған және Rust ядроны құрудың міндетті тәуелділігі ретінде қосылуына әкелмейді. Алдыңғы шығарылымдарда ұсынылған функционалдылық Arc түрлерін (анықтама саны бар көрсеткіштерді жүзеге асыру), ScopeGuard (ауқымнан тыс орындалған кезде тазартады) және ForeignOwnable (C және Rust коды арасында көрсеткіш қозғалысын қамтамасыз етеді) қолдауымен кеңейтілді. . «alloc» бумасынан «қарыз алу» модулі жойылды («Cow» теріңіз және «ToOwned» белгісі). Ядродағы Rust-ті қолдау жағдайы Rust-та жазылған алғашқы модульдерді ядроға қабылдауға жақын екені атап өтілді.
    • x86-64 жүйелеріндегі Linux пайдаланушы режимі (ядроны пайдаланушы процесі ретінде іске қосады) Rust тілінде жазылған кодты қолдайды. Сілтеме уақытын оңтайландыру қосылған (LTO) кленг арқылы пайдаланушы режимі Linux құруға қолдау қосылды.
    • Аппараттық құрал әрекетінен туындаған кідірістерді бақылау үшін hwnoise утилитасы қосылды. Операциялардың орындалу уақытындағы ауытқулар (життер) есептеулердің 10 минутында бір микросекундтан асатын үзілістерді өңдеу өшірілген кезде анықталады.
    • Пайдаланушы-кеңістік құрамдастары жоқ конфигурациялардағы CPU өнімділігін бағалау үшін пайдалануға болатын Dhrystone эталондық іске асыруымен ядро ​​модулі қосылды (мысалы, тек ядроны жүктеуді жүзеге асыратын жаңа SoC үшін тасымалдау кезеңінде).
    • Оқшауланған контейнерлері бар жүйелер үшін пайдалы болуы мүмкін BPF бағдарламалары үшін жадты тұтынуды есепке алуды өшіретін «cgroup.memory=nobpf» ядро ​​пәрмен жолы параметрі қосылды.
    • BPF бағдарламалары үшін жаңа салыстыру түрін қосудың орнына kfunc + kptr (bpf_rbtree_add, bpf_rbtree_remove, bpf_rbtree_first) қолданатын қызыл-қара ағаш деректер құрылымын іске асыру ұсынылады.
    • Қайта іске қосылатын тізбектер механизмінде (rseq, қайта іске қосылатын тізбектер) процестерге орталық процессор нөмірімен анықталған параллель орындалу идентификаторларын (жад картасының параллельдік идентификаторы) беру мүмкіндігі қосылды. Rseq басқа ағынмен үзілсе, тазартылып, қайталанатын операцияларды атомдық түрде жылдам орындауға арналған құралды қамтамасыз етеді.
    • ARM процессорлары SME 2 (Scalable Matrix Extension) нұсқауларын қолдайды.
    • s390x және RISC-V RV64 архитектуралары үшін ядро ​​мен BPF бағдарламалары арасында қоңырауларды тасымалдау кезінде үстеме шығындарды азайтуға мүмкіндік беретін «BPF батут» механизмін қолдау жүзеге асырылады.
    • RISC-V архитектурасына негізделген процессорлары бар жүйелерде жолдық операцияларды жылдамдату үшін «ZBB» нұсқауларын қолдану жүзеге асырылды.
    • LoongArch нұсқаулар жинағы архитектурасына негізделген жүйелер үшін (Loongson 3 5000 процессорларында пайдаланылады және MIPS және RISC-V ұқсас жаңа RISC ISA жүзеге асырады), ядроның мекенжай кеңістігін рандомизациялауды қолдау (KASLR), жадтағы ядроның орнын ауыстыру (қайта орналастыру). ), аппараттық нүктелерді тоқтату және kprobe механизмі.
    • Жадқа қол жеткізу жиілігі негізінде жадты босатуға мүмкіндік беретін DAMOS (Data Access Monitoring-based Operation Schemes) механизмі жадтың белгілі бір аймақтарын DAMOS жүйесінде өңдеуден шығару үшін сүзгілерді қолдайды.
    • Nolibc минималды стандартты C кітапханасы s390 архитектурасына және Arm Thumb1 нұсқаулар жинағына қолдауды жүзеге асырады (ARM, AArch64, i386, x86_64, RISC-V және MIPS қолдауына қосымша).
    • Objtool ядроны құруды жылдамдату және құрастыру кезінде ең жоғары жадты тұтынуды азайту үшін оңтайландырылған («allyesconfig» режимінде ядроны құру кезінде 32 ГБ жедел жады бар жүйелерде процестерді мәжбүрлеп тоқтату проблемалары болмайды).
    • Intel ICC компиляторының ядроны құрастыруын қолдау тоқтатылды, ол ұзақ уақыт бойы жұмыс істемеді және оны жөндеуге ешкім ниет білдірмеді.
  • Дискінің ішкі жүйесі, енгізу/шығару және файлдық жүйелер
    • tmpfs орнатылған шетелдік бөлімдегі белгілі бір пайдаланушының файлдарын ағымдағы жүйедегі басқа пайдаланушыға салыстыру үшін пайдаланылатын орнатылған файлдық жүйе пайдаланушы идентификаторын салыстыруды қолдайды.
    • Btrfs-де блоктар топтарының фрагментациясын азайту үшін блоктарды бөлу кезінде экстенттер өлшемі бойынша бөлінеді, яғни. блоктардың кез келген тобы енді шағын (128 КБ дейін), орташа (8 МБ дейін) және үлкен көлемде шектеледі. raid56 бағдарламасы қайта өңделді. Бақылау сомасын тексеруге арналған қайта жобаланған код. Каталогтар үшін utime кэштеу және қажет болғанда ғана пәрмендерді орындау арқылы жіберу әрекетін 10 есеге дейін жылдамдату үшін өнімділікті оңтайландырулар жасалды. Ортақ деректер (суреттер) үшін кері байланыс тексерулерін өткізіп жіберу арқылы 10 есе жылдамырақ fiemap операциялары. Метадеректермен операциялар b-ағаш құрылымдарындағы кілттерді іздеуді оңтайландыру арқылы XNUMX% -ға жеделдетіледі.
    • Эксклюзивті құлыптардың орнына ортақ инод құлыптарын пайдалана отырып, бірнеше процестерге алдын ала бөлінген блоктарға тікелей енгізу/шығару әрекеттерін бір уақытта орындауға мүмкіндік беру арқылы ext4 FS өнімділігі жақсарды.
    • f2fs-де кодтың оқылуын жақсарту бойынша жұмыс жасалды. Атомдық жазуға және жаңа кэш көлеміне қатысты маңызды мәселелер түзетілді.
    • Тек оқуға арналған бөлімдерге арналған EROFS (Жетілдірілген тек оқуға арналған файлдық жүйе) деректерге қол жеткізудің кідірісін азайту үшін қысылған файлды ашу операцияларын орталық процессорға байланыстыру мүмкіндігіне ие.
    • BFQ енгізу/шығару жоспарлаушысы бірнеше бөлек басқарылатын дискілерді (Multi Actuator) пайдаланатындар сияқты кеңейтілген айналдыру дискілеріне қолдауды қосты.
    • AES-SHA2 алгоритмі арқылы деректерді шифрлауды қолдау NFS клиенті мен серверін іске асыруға қосылды.
    • FUSE (Пайдаланушы кеңістігіндегі файлдық жүйелер) ішкі жүйесі сұрауға қосымша ақпаратты қоюға мүмкіндік беретін сұрау кеңейтім механизміне қолдауды қосты. Осы мүмкіндіктің негізінде ТЖ сұрауына топтық идентификаторларды қосу жүзеге асырылады, олар ФЖ-да объектілерді құру кезінде қол жеткізу құқықтарын ескеру үшін қажет (create, mkdir, symlink, mknod).
  • Виртуализация және қауіпсіздік
    • X86 жүйелеріне арналған KVM гипервизоры кеңейтілген Hyper-V гиперқоңырауларына қолдауды қосады және оларды пайдаланушы кеңістігі хост ортасында жұмыс істейтін өңдеушіге қайта жіберуді қамтамасыз етеді. Өзгеріс Hyper-V гипервизорының кірістірілген іске қосылуын қолдауды жүзеге асыруға мүмкіндік берді.
    • KVM өнімділікті өлшеуге қатысты PMU (Performance Monitor Unit) оқиғаларына қонақ жүйесінің қатынасын шектеуді жеңілдетеді.
    • Процестер арасында өтетін файл дескрипторы арқылы жад аймағын анықтауға мүмкіндік беретін memfd механизміне кодты орындауға тыйым салынған аймақтарды құру мүмкіндігі қосылды (орындалмайтын memfd) және файлда орындау құқықтарын орнату мүмкін емес. келешек.
    • Жаңа PR_SET_MDWE prctl әрекеті бір уақытта жазуға және орындауға мүмкіндік беретін жадқа кіру құқықтарын қосу әрекеттерін блоктау үшін қосылды.
    • AMD Zen 4 процессорларында ұсынылған IBRS (Enhanced Indirect Branch Restricted Speculation) автоматты режимі негізінде жүзеге асырылатын Spectre класының шабуылдарынан әдепкі бойынша қосылған және қосылған қорғаныс, үзіліс кезінде нұсқаулардың алыпсатарлық орындалуын адаптивті қосуға және өшіруге мүмкіндік береді. өңдеу, жүйелік қоңыраулар және контекстік ауыстырғыштар. Ұсынылған қорғаныс Retpoline қорғанысымен салыстырғанда үстеме шығындарды азайтады.
    • Бір уақыттағы көп ағын технологиясын (SMT немесе Hyper-Threading) пайдаланған кезде Spectre v2 шабуылдан қорғауды айналып өтуі мүмкін және IBRS қорғау режимін таңдаған кезде STIBP (Бір ағынды жанама тармақ болжаушылары) өшіруінен туындаған осалдықты қарастырады.
    • ARM64 негізіндегі жүйелер үшін жаңа "virtconfig" құрастыру мақсаты қосылды, ол таңдалған кезде виртуалдандыру жүйелерінде жүктеуге қажетті ядро ​​құрамдастарының ең аз жиынтығын ғана белсендіреді.
    • m68k архитектурасына арналған seccomp механизмі арқылы жүйелік қоңырауларды сүзуге қолдау қосылды.
    • Microsoft Pluton технологиясына негізделген AMD Ryzen процессорларының кірістірілген CRB TPM2 (Command Response Buffer) құрылғыларына қолдау қосылды.
  • Желілік ішкі жүйе
    • IEEE 802.3cg-2019 спецификациясында анықталған және Интернет заттары құрылғылары мен өнеркәсіптік жүйелерді қосу үшін оңтайландырылған 802.3cg (10Base-T1S) Ethernet желілерінде қолданылатын PLCA (Физикалық қабаттың соқтығысуына жол бермеу) ішкі деңгейін конфигурациялау үшін netlink интерфейсі қосылды. PLCA пайдалану ортақ медиа Ethernet желілеріндегі өнімділікті жақсартады.
    • WiFi 7 (802.11be) сымсыз интерфейстерін басқаруға арналған "сымсыз кеңейтімдер" API қолдауы тоқтатылды, себебі бұл API барлық қажетті параметрлерді қамтымайды. Эмуляцияланған қабат ретінде қолдауды жалғастыратын "сымсыз кеңейтімдер" API интерфейсін пайдалануға әрекет жасағанда, қазір көптеген ағымдағы құрылғылар үшін ескерту көрсетіледі.
    • Netlink API бойынша егжей-тегжейлі құжаттама дайындалды (ядро әзірлеушілері және пайдаланушы-кеңістік қолданбаларын әзірлеушілер үшін). ynl-gen-c утилитасы Netlink протоколының YAML спецификацияларына негізделген C-кодын жасау үшін іске асырылды.
    • IP_LOCAL_PORT_RANGE опциясына қолдау SNAT қолданбай мекенжай аудармашылары арқылы шығыс қосылымдарды конфигурациялауды жеңілдету үшін желілік ұяшықтарға қосылды. Бірнеше хосттарда бірдей IP мекенжайын пайдаланған кезде, IP_LOCAL_PORT_RANGE әрбір хостқа шығыс желі порттарының өз ауқымын пайдалануға және порт нөмірлеріне негізделген пакеттерді жіберу шлюзінде пайдалануға мүмкіндік береді.
    • MPTCP (MultiPath TCP) үшін IPv4 және IPv6 протоколдарын пайдаланатын аралас ағындарды өңдеу мүмкіндігі жүзеге асырылады. MPTCP – әртүрлі IP мекенжайларына байланыстырылған әртүрлі желі интерфейстері арқылы бірнеше маршруттар бойынша пакеттерді бір уақытта жеткізумен TCP қосылымының жұмысын ұйымдастыруға арналған TCP протоколының кеңейтімі.
    • IPv4 үшін деректер орталықтарының жоғары жылдамдықты ішкі желілерінің жұмысын оңтайландыру үшін TCP пакетінің максималды өлшемін 4 ГБ дейін ұлғайтуға мүмкіндік беретін BIG TCP кеңейтімін пайдалану мүмкіндігі іске асырылды. 16-биттік тақырып өрісі бар пакет өлшемін бұл ұлғайту IP тақырыбының өлшемі 0-ге орнатылған және бөлек тіркелген тақырыптағы бөлек 32-биттік өрісте жіберілген нақты өлшемі бар «jumbo» пакеттерді енгізу арқылы қол жеткізіледі.
    • Жаңа sysctl default_rps_mask параметрі қосылды, ол арқылы кіріс трафикті процессордың өзектері бойынша өңдеуді үзу өңдеушісі деңгейінде таратуға жауап беретін әдепкі RPS (Packet Steering) конфигурациясын орнатуға болады.
    • CBQ (сыныпқа негізделген кезек), ATM (банкомат виртуалды схемалары), dsmark (дифференциалданған қызмет көрсету маркері), tcindex (трафикті басқару индексі) және RSVP (ресурстарды брондау протоколы) трафигін шектеу үшін кезекке тұру пәндерін қолдау тоқтатылды. Бұл пәндер ұзақ уақыт бойы бас тартылды және ешкім оларды қолдауды жалғастырғысы келмеді.
  • Жабдық
    • DRI1 негізіндегі барлық графикалық драйверлер жойылды: i810 (ескі Intel 8xx біріктірілген графикалық карталары), mga (Matrox GPU), r128 (ATI Rage 128 GPU, соның ішінде Rage Fury, XPERT 99 және XPERT 128 карталары), wild (S3 Savage GPU), sis ( Crusty SiS GPU), tdfx (3dfx Voodoo) және via (VIA IGP), олар 2016 жылы ескірген және 2012 жылдан бері Mesa жүйесінде қолдау көрсетілмейді.
    • Омаp1, s3c2410, tmiofb және w100fb ескірген фрейм буферінің (fbdev) драйверлері жойылды.
    • Intel Meteor Lake (14-ші ұрпақ) процессорларына біріктірілген VPU (жан-жақты өңдеу блогы) үшін DRM драйвері қосылды, ол компьютерлік көруді және машиналық оқыту операцияларын жеделдетуге арналған. Драйвер бөлек ASIC түрінде де, SoC және GPU ішіндегі IP блоктары ретінде де жеткізілуі мүмкін есептеу үдеткіштеріне қолдау көрсетуге бағытталған «accel» ішкі жүйесі арқылы жүзеге асырылады.
    • i915 (Intel) драйвері дискретті Intel Arc (DG2/Alchemist) графикалық карталарына қолдауды кеңейтеді, Meteor Lake графикалық процессорларына алдын ала қолдау көрсетеді және Intel Xe HP 4tile графикалық процессорларына қолдауды қамтиды.
    • Amdgpu драйвері AdaptiveSync технологиясын қолдауды және бірнеше дисплейлермен Secure Display режимін пайдалану мүмкіндігін қосады. DCN 3.2 (Display Core Next), SR-IOV RAS, VCN RAS, SMU 13.x және DP 2.1 үшін жаңартылған қолдау.
    • msm драйверіне (GPU Qualcomm Adreno) SM8350, SM8450 SM8550, SDM845 және SC8280XP платформаларына қолдау қосылды.
    • Nouveau драйвері ескі ioctl қоңырауларына қолдау көрсетуді тоқтатты.
    • NPU VerSilicon (VeriSilicon нейрондық желі процессоры) үшін эксперименттік қолдау etnaviv драйверіне қосылды.
    • Параллель порт арқылы қосылған IDE дискілеріне арналған pata_parport драйвері жүзеге асырылды. Қосылған драйвер ескі PARIDE драйверін ядродан алып тастауға және ATA ішкі жүйесін жаңартуға мүмкіндік берді. Жаңа драйвердің шектеуі принтер мен дискіні параллель порт арқылы бір уақытта қосу мүмкін еместігі болып табылады.
    • Wi-Fi 12 қолдауы бар Qualcomm чиптеріне негізделген сымсыз карталарға арналған ath7k драйвері қосылды. RealTek RTL8188EU чиптеріне негізделген сымсыз карталарға қолдау қосылды.
    • ARM46 архитектурасына негізделген 64 тақтаға қолдау қосылды, соның ішінде Samsung Galaxy tab A (2015), Samsung Galaxy S5, BananaPi R3, Debix Model A, EmbedFire LubanCat 1/2, Facebook Greatlakes, Orange Pi R1 Plus, Tesla FSD, сондай-ақ құрылғылар SoC Qualcomm MSM8953 (Snapdragon 610), SM8550 (Snapdragon 8 Gen 2), SDM450 және SDM632, Rockchips RK3128 теледидар қорабы, RV1126 Vision, RK3588, RK3568, RK3566, KRK3588/K3328/KK3/KK642/KK654/, SoC негізінде 68/AM69 / AMXNUMX).

Сонымен қатар, Латын Америкасының еркін бағдарламалық қамтамасыз ету қоры толығымен бос ядроның 6.3 нұсқасын - Linux-libre 6.3-gnu нұсқасын құрады, ол еркін емес құрамдас бөліктерді немесе код бөлімдерін қамтитын микробағдарлама мен драйвер элементтерінен тазартылды, оның қолданылу аясы шектеулі. өндіруші. 6.3 шығарылымында блоктар жаңа ath12k, aw88395 және peb2466 драйверлерінде, сондай-ақ AArch64 негізіндегі qcom құрылғыларына арналған жаңа devicetree файлдарында тазартылды. Amdgpu, xhci-rcar, qcom-q6v5-pas, sp8870, av7110 драйверлері мен ішкі жүйелерінде, сондай-ақ бағдарламалық құрал декодтауы бар DVB-карталарына арналған драйверлерде және алдын ала құрастырылған BPF файлдарында жаңартылған blobs тазалау коды. mga, r128, tm6000, cpia2 және r8188eu драйверлерін тазарту тоқтатылды, өйткені олар ядродан жойылды. Жақсартылған i915 драйверін тазарту.

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

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