Linux 6.3 цөмийн хувилбар

Хоёр сарын турш хөгжүүлсний дараа Линус Торвалдс Линуксийн цөмийн 6.3 хувилбарыг танилцууллаа. Хамгийн чухал өөрчлөлтүүдийн дунд: хуучин ARM платформууд болон график драйверуудыг цэвэрлэх, Rust хэлний дэмжлэгийг үргэлжлүүлэн нэгтгэх, hwnoise хэрэгсэл, BPF дахь улаан хар модны бүтцийг дэмжих, IPv4-д зориулсан BIG TCP горим, суурилуулсан Dhrystone жишиг, идэвхгүй болгох чадвар. memfd дээр гүйцэтгэх, BPF ашиглан HID драйверуудыг үүсгэхэд дэмжлэг үзүүлэх, блок бүлгүүдийн хуваагдлыг багасгахын тулд Btrfs-д өөрчлөлт оруулсан.

Шинэ хувилбарт 15637 хөгжүүлэгчийн 2055 засвар орсон; засварын хэмжээ - 76 MB (өөрчлөлтөд 14296 файл нөлөөлж, 1023183 мөр код нэмж, 883103 мөр устгагдсан). Харьцуулбал, өмнөх хувилбар нь 16843 хөгжүүлэгчээс 2178 засварыг санал болгосон; засварын хэмжээ 62 MB байна. 39 цөмд оруулсан бүх өөрчлөлтийн 6.3 орчим хувь нь төхөөрөмжийн драйверуудтай, 15 орчим хувь нь техник хангамжийн архитектурт хамаарах кодыг шинэчлэхтэй, 10 хувь нь сүлжээний стектэй, 5 хувь нь файлын системтэй холбоотой, мөн 3% нь дотоод цөмийн дэд системүүдтэй холбоотой.

Цөм 6.3 дахь гол шинэчлэлүүд:

  • Санах ой болон системийн үйлчилгээ
    • Хуучин болон ашиглагдаагүй ARM самбаруудтай холбоотой кодын томоохон цэвэрлэгээ хийгдсэн бөгөөд энэ нь цөмийн эх кодын хэмжээг 150 мянган мөрөөр багасгах боломжтой болгосон. 40 гаруй хуучин ARM платформуудыг устгасан.
    • BPF програм хэлбэрээр хэрэгжсэн HID (хүний ​​интерфэйс төхөөрөмж) интерфэйс бүхий оролтын төхөөрөмжүүдэд драйвер үүсгэх чадварыг хэрэгжүүлсэн.
    • Rust-for-Linux салбараас Rust хэлийг драйверууд болон цөмийн модулиудыг хөгжүүлэх хоёр дахь хэл болгон ашиглахтай холбоотой нэмэлт функцуудыг шилжүүлэх ажил үргэлжилж байна. Rust-ийн дэмжлэг нь анхдагчаар идэвхждэггүй бөгөөд Rust-г шаардлагатай цөмийн бүтээцийн хамаарал болгон оруулахад хүргэдэггүй. Өмнөх хувилбаруудад санал болгож буй функцууд нь Arc (лавлагааны тоо бүхий заагчийг хэрэгжүүлэх), ScopeGuard (хамрах хүрээнээс гарах үед цэвэрлэх) болон ForeignOwnable (C болон Rust код хооронд заагч шилжих боломжийг олгодог) төрлүүдийг дэмжих зорилгоор өргөжүүлсэн. "Зээлэх" модулийг ("Үхэр" төрөл ба "ToOwned" шинж чанар) "хуваах" багцаас хасагдсан. Цөм дэх Rust дэмжлэгийн төлөв нь Rust дээр бичигдсэн анхны модулиудыг цөмд хүлээн авч эхлэхэд аль хэдийн ойрхон байгааг тэмдэглэв.
    • x86-64 систем дээрх хэрэглэгчийн горимын Linux (цөмийг хэрэглэгчийн процесс болгон ажиллуулдаг) нь Rust хэл дээр бичигдсэн кодын дэмжлэгийг хэрэгжүүлдэг. Холбоос цагийн оновчлол (LTO) идэвхжсэн дуугаралт ашиглан хэрэглэгчийн горимын Линуксийг бүтээх дэмжлэг нэмэгдсэн.
    • Техник хангамжаас үүдэлтэй саатлыг хянах hwnoise хэрэгслийг нэмсэн. 10 минутын тооцоололд нэг микросекундээс хэтэрсэн тасалдлын боловсруулалтыг идэвхгүй болгох үед үйлдлүүдийг гүйцэтгэх хугацааны хазайлтыг (життэр) тодорхойлно.
    • Dhrystone шалгуур үзүүлэлтийг хэрэгжүүлдэг цөмийн модулийг нэмсэн бөгөөд энэ нь хэрэглэгчийн орон зайн бүрэлдэхүүн хэсэггүй (жишээлбэл, зөвхөн цөмийн ачааллыг хэрэгжүүлдэг шинэ SoC-уудын портын үе шатанд) тохиргоонд CPU-ийн гүйцэтгэлийг үнэлэхэд ашиглаж болно.
    • "cgroup.memory=nobpf" цөмийн командын мөрийн параметрийг нэмсэн бөгөөд энэ нь BPF програмын санах ойн зарцуулалтын бүртгэлийг идэвхгүй болгодог бөгөөд энэ нь тусгаарлагдсан савтай системд хэрэг болно.
    • BPF програмуудын хувьд шинэ зураглалын төрөл нэмэхийн оронд kfunc + kptr (bpf_rbtree_add, bpf_rbtree_remove, bpf_rbtree_first) ашигладаг улаан хар модны өгөгдлийн бүтцийг хэрэгжүүлэхийг санал болгож байна.
    • Дахин эхлүүлэх боломжтой дарааллын механизм (rseq, дахин эхлүүлэх боломжтой дараалал) нь CPU-ийн дугаараар тодорхойлогдсон процессуудад зэрэгцээ гүйцэтгэлийн тодорхойлогчийг (санах ойн зураглалын зэрэглэлийн ID) шилжүүлэх боломжийг нэмсэн. Rseq нь атомын аргаар үйлдлүүдийг хурдан гүйцэтгэх боломжийг олгодог бөгөөд хэрэв өөр урсгалаар тасалдвал цэвэрлэж, дахин оролдох болно.
    • ARM процессорууд SME 2 (Scalable Matrix Extension) зааврыг дэмждэг.
    • s390x болон RISC-V RV64 архитектурын хувьд "BPF trampoline" механизмын дэмжлэгийг хэрэгжүүлсэн бөгөөд энэ нь цөм болон BPF програмуудын хооронд дуудлага дамжуулах үед ачааллыг багасгах боломжийг олгодог.
    • RISC-V архитектурт суурилсан процессортой системүүд дээр мөрийн ажиллагааг хурдасгахын тулд "ZBB" зааврыг ашигладаг.
    • LoongArch зааврын багц архитектурт суурилсан системүүдийн хувьд (Loongson 3 5000 процессоруудад ашиглагдаж, MIPS болон RISC-V-тэй төстэй шинэ RISC ISA-г хэрэгжүүлдэг), цөмийн хаягийн орон зайн санамсаргүй хуваарилалтыг дэмжих (KASLR), цөмийн санах ойн байршлын өөрчлөлт (нүүлгэн шилжүүлэх) ), техник хангамжийн цэгүүдийг зогсоох ба kprobe механизмыг хэрэгжүүлдэг.
    • Санах ойн хандалтын давтамж дээр үндэслэн санах ойг суллах боломжийг олгодог DAMOS (Data Access Monitoring-based Operation Schemes) механизм нь тодорхой санах ойн хэсгүүдийг DAMOS-д боловсруулахаас хасах шүүлтүүрийг дэмждэг.
    • Nolibc minimal стандарт C номын сан нь s390 архитектур болон Arm Thumb1 зааврын багцад дэмжлэг үзүүлдэг (ARM, AArch64, i386, x86_64, RISC-V болон MIPS-ийг дэмжихээс гадна).
    • Objtool нь цөмийн угсралтыг хурдасгах, угсрах явцад хамгийн их санах ойн зарцуулалтыг бууруулах зорилгоор оновчтой болсон ("allyesconfig" горимд цөмийг бүтээх үед 32 ГБ RAM-тай систем дээрх процессуудыг албадан зогсооход ямар ч асуудал байхгүй).
    • Intel ICC хөрвүүлэгчийн цөмийн угсралтын дэмжлэгийг зогсоосон бөгөөд энэ нь удаан хугацаанд ажиллахгүй байсан бөгөөд хэн ч үүнийг засах хүсэлгүй байна.
  • Дискний дэд систем, I/O болон файлын системүүд
    • tmpfs нь холбосон гадаад хуваалт дээрх тодорхой хэрэглэгчийн файлуудыг одоогийн системийн өөр хэрэглэгчтэй тааруулахад ашигладаг холбогдсон файлын системийн хэрэглэгчийн ID-г зураглах дэмжлэгийг хэрэгжүүлдэг.
    • Btrfs-д блокуудын бүлгүүдийн хуваагдлыг багасгахын тулд блокуудыг хуваарилахдаа цар хүрээг хэмжээгээр нь хуваадаг. Ямар ч бүлэг блокууд одоо жижиг (128KB хүртэл), дунд (8 МБ хүртэл) болон их хэмжээгээр хязгаарлагддаг. Raid56-ийн хэрэгжилтийг дахин зассан. Шалгалтын дүнг шалгах кодыг дахин боловсрууллаа. Гүйцэтгэлийн оновчлолууд нь лавлахуудын utime-г кэшлэх, шаардлагатай үед л командуудыг гүйцэтгэх замаар илгээх ажиллагааг 10 дахин хурдасгах зорилгоор хийгдсэн. Хуваалцсан өгөгдөл (хормын хувилбар) -ын буцах холбоосын шалгалтыг алгасах замаар Fiemap-ийн үйлдлүүд одоо гурав дахин хурдан болсон. b модны бүтцээс түлхүүр хайх ажиллагааг оновчтой болгосноор мета өгөгдөлтэй ажиллах ажиллагааг 10%-иар хурдасгасан.
    • Онцгой түгжээний оронд хуваалцсан inode түгжээг ашиглан урьдчилан хуваарилагдсан блокууд дээр шууд оролт гаралтын үйлдлүүдийг олон процесст нэгэн зэрэг гүйцэтгэх боломжийг олгосноор ext4 файлын системийн гүйцэтгэл сайжирсан.
    • f2fs дээр код унших чадварыг сайжруулах ажил хийгдсэн. Атомын бичилт болон шинэ хэмжээний кэштэй холбоотой чухал асуудлуудыг шийдсэн.
    • Зөвхөн унших боломжтой хуваалтуудад ашиглах зориулалттай EROFS (Enhanced Read-Only File System) файлын систем нь өгөгдөлд хандах хоцролтыг багасгахын тулд шахсан файлын агуулгыг задлах үйлдлийг CPU-тэй холбох чадварыг хэрэгжүүлдэг.
    • BFQ I/O хуваарьлагч нь олон тусдаа удирдлагатай толгой хөтчүүд (Олон идэвхжүүлэгч) ашигладаг зэрэг дэвшилтэт ээрэх дискний хөтчүүдэд зориулсан дэмжлэгийг нэмсэн.
    • NFS клиент болон серверийн хэрэгжилтэд AES-SHA2 алгоритмыг ашиглан өгөгдлийн шифрлэлтийн дэмжлэг нэмэгдсэн.
    • Асуулга өргөтгөх механизмын дэмжлэгийг FUSE (Хэрэглэгчийн орон зай дахь файлын системүүд) дэд системд нэмснээр асуулгад нэмэлт мэдээлэл оруулах боломжийг олгосон. Энэ функц дээр үндэслэн FS хүсэлтэд бүлгийн таниулагч нэмэх боломжтой бөгөөд энэ нь FS-д объект үүсгэх үед хандалтын эрхийг харгалзан үзэх шаардлагатай (create, mkdir, symlink, mknod).
  • Виртуалчлал ба аюулгүй байдал
    • X86 системд зориулсан KVM гипервизор нь Hyper-V өргөтгөсөн гипер дуудлагын дэмжлэгийг нэмж, хэрэглэгчийн орон зай дахь хост орчинд ажиллаж байгаа зохицуулагч руу дамжуулах боломжийг олгосон. Энэхүү өөрчлөлт нь Hyper-V hypervisor-ийн үүрэнд хөөргөх дэмжлэгийг хэрэгжүүлэх боломжтой болсон.
    • KVM нь гүйцэтгэлийн хэмжилттэй холбоотой PMU (Performance Monitor Unit) үйл явдлуудад зочдын хандалтыг хязгаарлахад хялбар болгодог.
    • Процессуудын хооронд шилжүүлсэн файлын тодорхойлогчоор дамжуулан санах ойн хэсгийг тодорхойлох боломжийг олгодог memfd механизм нь код гүйцэтгэхийг хориглодог (гүйцэтгэх боломжгүй memfd) хэсгийг үүсгэх боломжийг нэмсэн бөгөөд ирээдүйд гүйцэтгэх эрхийг тохируулах боломжгүй юм. .
    • PR_SET_MDWE шинэ prctl үйлдлийг нэмсэн бөгөөд энэ нь санах ойд нэвтрэх эрхийг идэвхжүүлэх оролдлогыг блоклох бөгөөд энэ нь бичих болон гүйцэтгэх боломжийг нэгэн зэрэг олгодог.
    • AMD Zen 4 процессоруудад санал болгож буй автомат IBRS (Enhanced Indirect Branch Restricted Speculation) горимд тулгуурлан Specter ангиллын халдлагаас хамгаалах хамгаалалтыг анхдагчаар нэмж, идэвхжүүлсэн бөгөөд энэ нь тасалдал боловсруулах, системийн дуудлага хийх үед зааварчилгааны таамаглалыг гүйцэтгэхийг дасан зохицох, идэвхгүй болгох боломжийг олгодог. контекст шилжүүлэгч. Санал болгож буй хамгаалалт нь Retpoline хамгаалалттай харьцуулахад илүү бага зардалтай байдаг.
    • IBRS хамгаалалтын горимыг сонгохдоо STIBP (Single Thread Indirect Branch Predictors) механизмыг идэвхгүй болгосны улмаас нэгэн зэрэг олон урсгалтай технологи (SMT эсвэл Hyper-Threading) ашиглах үед Spectre v2 халдлагаас хамгаалах хамгаалалтыг давах боломжийг олгодог эмзэг байдлыг зассан.
    • ARM64 архитектурт суурилсан системүүдийн хувьд угсралтын шинэ зорилтот "virtconfig" нэмэгдсэн бөгөөд сонгосон үед зөвхөн виртуалчлалын системийг ачаалахад шаардлагатай цөмийн бүрэлдэхүүн хэсгүүдийн хамгийн бага багц идэвхждэг.
    • M68k архитектурын хувьд seccomp механизмыг ашиглан системийн дуудлагыг шүүх дэмжлэгийг нэмсэн.
    • Microsoft Pluton технологид суурилсан AMD Ryzen процессоруудад суурилуулсан CRB TPM2 (Command Response Buffer) төхөөрөмжүүдийн дэмжлэгийг нэмсэн.
  • Сүлжээний дэд систем
    • IEEE 802.3cg-2019-ийн тодорхойлолтод тодорхойлогдсон, 802.3cg (10Base-T1S) Ethernet сүлжээнд ашигладаг PLCA (Физик давхаргын мөргөлдөөнөөс зайлсхийх) дэд давхаргыг тохируулахын тулд сүлжээний интерфейс нэмэгдсэн байна. PLCA ашиглах нь хуваалцсан медиатай Ethernet сүлжээн дэх гүйцэтгэлийг сайжруулдаг.
    • WiFi 7 (802.11be) утасгүй интерфэйсийг удирдах "утасгүй өргөтгөлүүд" API-ийн дэмжлэг нь энэ API нь шаардлагатай бүх тохиргоог хамардаггүй тул зогссон. "Утасгүй өргөтгөлүүд" API-г ашиглахыг оролдох үед энэ нь дуурайлган давхарга хэлбэрээр дэмжигдсэн хэвээр байгаа бол одоо байгаа ихэнх төхөөрөмжүүдэд анхааруулга гарч ирэх болно.
    • Netlink API-ийн дэлгэрэнгүй баримт бичгийг бэлтгэсэн (үндсэн хөгжүүлэгчид болон хэрэглэгчийн орон зайн програм хөгжүүлэгчдэд). Netlink протоколын YAML техникийн үзүүлэлтүүд дээр үндэслэн C кодыг үүсгэхийн тулд ynl-gen-c хэрэглүүрийг хэрэгжүүлсэн.
    • IP_LOCAL_PORT_RANGE сонголтын дэмжлэгийг SNAT ашиглахгүйгээр хаягийн орчуулагчаар дамжуулан гарах холболтын тохиргоог хялбаршуулах зорилгоор сүлжээний залгууруудад нэмсэн. Хэд хэдэн хостууд дээр нэг IP хаягийг ашиглах үед IP_LOCAL_PORT_RANGE нь хост тус бүр дээр гарах сүлжээний өөр портуудыг ашиглах, гарц дээрх портын дугаар дээр үндэслэн пакетуудыг дамжуулах боломжийг олгодог.
    • MPTCP (MultiPath TCP)-ийн хувьд IPv4 болон IPv6 протоколуудыг ашиглан холимог урсгалыг боловсруулах чадварыг хэрэгжүүлсэн. MPTCP нь өөр өөр IP хаягуудтай холбоотой өөр өөр сүлжээний интерфэйсээр хэд хэдэн маршрутын дагуу пакетуудыг нэгэн зэрэг хүргэх TCP холболтын ажиллагааг зохион байгуулах TCP протоколын өргөтгөл юм.
    • IPv4-ийн хувьд BIG TCP өргөтгөлийг ашиглах боломжтой бөгөөд энэ нь өндөр хурдны дотоод мэдээллийн төвийн сүлжээний ажиллагааг оновчтой болгохын тулд TCP багцын дээд хэмжээг 4 ГБ хүртэл нэмэгдүүлэх боломжийг олгодог. 16 битийн толгойн талбарын хэмжээтэй пакетийн хэмжээг ижил төстэй нэмэгдүүлэх нь "jumbo" пакетуудыг хэрэгжүүлэх замаар хийгддэг бөгөөд IP толгойн хэмжээг 0 болгож, бодит хэмжээг тусдаа 32 битээр дамжуулдаг. тусдаа хавсаргасан толгой хэсэгт талбар.
    • Шинэ sysctl default_rps_mask параметр нэмэгдсэн бөгөөд түүгээр дамжуулан та өгөгдмөл RPS (Receive Packet Steering) тохиргоог тохируулах боломжтой бөгөөд энэ нь тасалдал зохицуулагчийн түвшинд ирж буй траффикийн боловсруулалтыг CPU-ийн цөмд хуваарилах үүрэгтэй.
    • CBQ (ангид суурилсан дараалал), АТМ (АТМ виртуал хэлхээ), dsmark (ялгаатай үйлчилгээний тэмдэглэгээ), tcindex (хөдөлгөөний хяналтын индекс) болон RSVP (нөөцийн захиалгын протокол) урсгалыг хязгаарлах дараалал боловсруулах салбаруудын дэмжлэгийг зогсоосон. Эдгээр хичээлүүд удаан хугацаанд орхигдсон бөгөөд тэднийг үргэлжлүүлэн дэмжих хүсэл эрмэлзэлтэй хэн ч байсангүй.
  • Тоног төхөөрөмж
    • DRI1 дээр суурилсан бүх график драйверуудыг устгасан: i810 (хуучин нэгдсэн Intel 8xx график картууд), mga (Matrox GPU), r128 (ATI Rage 128 GPU, үүнд Rage Fury, XPERT 99 болон XPERT 128 картууд), зэрлэг (S3 Savage GPU), sis (Crusty SiS GPU), tdfx (3dfx Voodoo) болон via (VIA IGP) нь 2016 онд хуучирсан бөгөөд 2012 оноос хойш Меса дээр дэмжигдээгүй.
    • Хуучин framebuffer драйверуудыг (fbdev) omap1, s3c2410, tmiofb болон w100fb устгасан.
    • Intel Meteor Lake CPU-д (14-р үеийн) нэгдсэн VPU (Versatile Processing Unit) нэгжүүдэд DRM драйвер нэмэгдсэн бөгөөд энэ нь компьютерийн хараа болон машин суралцахтай холбоотой үйл ажиллагааг хурдасгах зорилготой юм. Драйвер нь "accel" дэд системийг ашиглан хэрэгждэг бөгөөд энэ нь тооцооллын хурдасгууруудад дэмжлэг үзүүлэх зорилготой бөгөөд үүнийг бие даасан ASIC хэлбэрээр эсвэл SoC болон GPU доторх IP блок хэлбэрээр нийлүүлэх боломжтой.
    • i915 (Intel) драйвер нь салангид Intel Arc (DG2/Alchemist) график картуудын дэмжлэгийг өргөжүүлж, Meteor Lake GPU-д урьдчилсан дэмжлэг үзүүлж, Intel Xe HP 4tile GPU-ийн дэмжлэгийг агуулдаг.
    • Amdgpu драйвер нь AdaptiveSync технологийг дэмждэг бөгөөд олон дэлгэцтэй Secure Display горимыг ашиглах боломжийг олгодог. DCN 3.2 (Display Core Next), SR-IOV RAS, VCN RAS, SMU 13.x болон DP 2.1-ийн шинэчилсэн дэмжлэг.
    • SM8350, SM8450 SM8550, SDM845 болон SC8280XP платформуудын дэмжлэгийг msm драйвер (Qualcomm Adreno GPU) дээр нэмсэн.
    • Nouveau драйвер нь хуучин ioctl дуудлагыг дэмжихээ больсон.
    • Etnaviv драйвер дээр NPU VerSilicon (VeriSilicon мэдрэлийн сүлжээний процессор) туршилтын дэмжлэгийг нэмсэн.
    • Зэрэгцээ портоор холбогдсон IDE хөтчүүдэд pata_parport драйверийг хэрэгжүүлсэн. Нэмэгдсэн драйвер нь хуучин PARIDE драйверийг цөмөөс устгаж, ATA дэд системийг шинэчлэх боломжийг бидэнд олгосон. Шинэ драйверын хязгаарлалт нь принтер болон дискийг зэрэгцээ портоор нэгэн зэрэг холбох боломжгүй юм.
    • Wi-Fi 12-г дэмждэг Qualcomm чип дээрх утасгүй картуудад зориулсан ath7k драйверийг нэмсэн. RealTek RTL8188EU чип дээрх утасгүй картуудын дэмжлэгийг нэмсэн.
    • Samsung Galaxy tab A (46), Samsung Galaxy S64, BananaPi R2015, Debix Model A, EmbedFire LubanCat 5/3, Facebook Greatlakes, Orange Pi R1 Plus, Tesla FSD зэрэг ARM2 архитектурт суурилсан процессортой 1 хавтангийн дэмжлэгийг нэмсэн. Мөн Qualcomm MSM8953 (Snapdragon 610), SM8550 (Snapdragon 8 Gen 2), SDM450 ба SDM632, Rockchips RK3128 ТВ хайрцаг, RV1126 Vision, RK3588, RK3568, RK3566, RK3588, RK3328TI3 (RK642, KRKAM654) зэрэг SoC дээр суурилсан төхөөрөмжүүд /AM68 69/ AMXNUMX /AMXNUMX).

Үүний зэрэгцээ, Латин Америкийн Чөлөөт Програм хангамжийн Сан нь бүрэн үнэгүй цөмийн 6.3 хувилбарыг - Linux-libre 6.3-gnu хувилбарыг бүрдүүлж, програм хангамжийн элементүүд болон үнэгүй бүрэлдэхүүн хэсгүүд эсвэл кодын хэсгүүдийг агуулсан драйверуудаас цэвэрлэсэн бөгөөд хамрах хүрээ нь хязгаарлагдмал. үйлдвэрлэгчээс. 6.3 хувилбарт шинэ ath12k, aw88395 болон peb2466 драйверууд, мөн AArch64 архитектурт суурилсан qcom төхөөрөмжүүдийн шинэ төхөөрөмжийн мод файлууд дээр толбоуудыг цэвэрлэв. Amdgpu, xhci-rcar, qcom-q6v5-pas, sp8870, av7110 драйверууд болон дэд системүүд, түүнчлэн програм хангамжийн код тайлах DVB картны драйверууд болон урьдчилан эмхэтгэсэн BPF файлууд дахь blob цэвэрлэх кодыг шинэчилсэн. mga, r128, tm6000, cpia2, r8188eu драйверуудыг цөмөөс хассанаас хойш цэвэрлэх ажиллагаа зогссон. Сайжруулсан i915 драйверын blob цэвэрлэгээ.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх