Pas dy muajsh zhvillimi, Linus Torvalds publikoi versionin e kernel-it Linux 5.14. Disa nga ndryshimet më të dukshme përfshijnë: thirrjet e reja sistemore quotactl_fd() dhe memfd_secret(), heqjen e drejtorive ide dhe raw, një kontrollues të ri prioriteteve të hyrjes/daljes për cgroup, dhe modalitetin e planifikimit të detyrave SCHED_CORE, si dhe infrastrukturën për krijimin e ngarkuesve të verifikuar për programet BPF.
Versioni i ri përfshin 15883 korigjime nga 2002 zhvillues, madhësia e patch-it është 69 MB (ndryshimet prekin 12580 skedarë, janë shtuar 861501 rreshta kodi, dhe janë fshirë 321654 rreshta). Rreth 47% e të gjitha ndryshimeve të paraqitura në 5.14 lidhen me drejtuesit e pajisjeve, rreth 14% e ndryshimeve kanë të bëjnë me përditësimin e kodit specifik për arkitekturën harduerike, 13% lidhen me grumbullin e rrjetit, 3% me sistemet e skedarëve dhe 3% me nën-sistemet e brendshme të kernel-it.
Novitetet kryesore:
- Sistemi i disqeve, hyrja/ dalje dhe sistemet e skedarëve
- PĂ«r cgroup Ă«shtĂ« implementuar njĂ« kontrollues i ri pĂ«r prioritizimin e hyrjes/daljes â rq-qos, i cili mund tĂ« menaxhojĂ« prioritetin e pĂ«rpunimit tĂ« kĂ«rkesave pĂ«r pajisjet bllokuese, tĂ« gjeneruara nga pjesĂ«marrĂ«sit e çdo cgroup. MbĂ«shtetje pĂ«r kontrolluesin e ri tĂ« prioriteteve Ă«shtĂ« shtuar nĂ« planifikuesin e hyrjes/daljes mq-deadline.
- Në sistemin e skedarëve ext4 është implementuar një komandë e re ioctl EXT4_IOC_CHECKPOINT, e cila shtrydh në disk të gjitha transaksionet e pritura nga ditari dhe tamponet përkatëse, si dhe riprogramon zonën e përdorur nga journali në ruajtje. Ky ndryshim është përgatitur në kuadër të iniciativës për parandalimin e shkarkimeve të informacionit nga sistemet e skedarëve.
- Në Btrfs janë bërë optimizime të performancës: duke përjashtuar regjistrimin e panevojshëm të atributeve të zgjeruara gjatë ekzekutimit të fsync, performanca e operacioneve intensive me atribute të zgjeruara është rritur deri në 17%. Për më tepër, gjatë kryerjes së operacioneve të shkurtimeve që nuk prekin ekzistencat, është çaktivizuar ekzekutimi i sinkronizimit të plotë, duke reduktuar kohën e ekzekutimit të operacionit me 12%. Në sysfs është shtuar një konfigurim për të kufizuar kapacitetin e hyrjes/daljes gjatë kontrollit të FS. Janë shtuar thirrjet ioctl për anulimin e operacioneve të ndryshimit të madhësisë dhe fshirjes së pajisjes.
- Në XFS është riparuara implementimi i caches buffer, i cili është kaluar në alokimin e faqeve të memories në modalitetin paketë. Efikasiteti i punës së caches është rritur.
- NĂ« F2FS Ă«shtĂ« shtuar mundĂ«sia pĂ«r tĂ« punuar nĂ« modalitetin vetĂ«m pĂ«r lexim dhe Ă«shtĂ« realizuar njĂ« modalitet memorie ndihmĂ«s pĂ«r blloqet e kompresuara (compress_cache) pĂ«r tĂ« rritur performancĂ«n e leximit tĂ« rastĂ«sishĂ«m. ĂshtĂ« implementuar mbĂ«shtetje pĂ«r kompresimin e skedarĂ«ve tĂ« reflektuar nĂ« memory pĂ«rmes operacionit mmap(). PĂ«r çaktivizimin selektiv tĂ« kompresimit tĂ« skedarĂ«ve sipas maskĂ«s Ă«shtĂ« propozuar njĂ« opsion i ri montimi nocompress.
- Në drejtuesin exFAT është punuar për përmirësimin e përputhshmërisë me depozitat e disa kamerave digjitale.
- ĂshtĂ« shtuar thirrja sistemike quotactl_fd(), e cila lejon menaxhimin e kuotave jo pĂ«rmes skedarit tĂ« pajisjes speciale, por pĂ«rmes pĂ«rcaktimit tĂ« descriptorit tĂ« skedarit qĂ« lidhet me sistemin e skedarĂ«ve pĂ«r tĂ« cilin aplikohet kuota.
- Drejtuesit e vjetër për pajisjet bllokuese me ndërfaqe IDE janë hequr nga bërthama, të cilave prej kohësh u është ndërruar në sistemin libata.
- Drejtuesi 'raw', që ofron qasje të pa-buferizuar në pajisjet bllokuese përmes ndërfaqes /dev/raw, është hequr nga bërthama. Kjo funksionalitet është implementuar prej kohësh në aplikacione përmes flag-ut O_DIRECT.
- Memorie dhe shërbime sistemike
- NĂ« planifikuesin e detyrave Ă«shtĂ« implementuar njĂ« modalitet i ri planifikimi SCHED_CORE, i cili lejon menaxhimin e proceseve qĂ« mund tĂ« ekzekutohen sĂ« bashku nĂ« njĂ« bĂ«rthamĂ« CPU. Ădo proces mund t'i caktohet njĂ« identifikues cookie, i cili pĂ«rcakton fushĂ«n e besimit midis proceseve (p.sh., pĂ«rkatĂ«sia ndaj njĂ« pĂ«rdoruesi ose kontejneri). GjatĂ« organizimit tĂ« ekzekutimit tĂ« kodit, planifikuesi mund tĂ« sigurojĂ« ndarjen e njĂ« bĂ«rthame CPU vetĂ«m pĂ«r proceset qĂ« lidhin me njĂ« pronar, gjĂ« qĂ« mund tĂ« pĂ«rdoret pĂ«r tĂ« bllokuar disa sulme tĂ« klasĂ«s Spectre duke parandaluar ekzekutimin nĂ« njĂ« kĂ«nd tĂ« besueshĂ«m dhe tĂ« pa-besueshĂ«m pĂ«rgjatĂ« SMT (Hyper Threading).
- Për cgroup është realizuar mbështetje për operacionin kill, që lejon përfundimin e menjëhershëm të të gjitha proceseve të lidhura me grupin (dërgimin e SIGKILL), përmes shkruarjes '1' në skedarin virtual cgroup.kill.
- Janë zgjeruar mundësitë për reagimin ndaj zbulimit të bllokimeve të ndara ("split lock"), që ndodhin gjatë qasjes në të dhëna të paangazhuara në memorie për shkak se, gjatë ekzekutimit të një instrukcioni atomik, të dhënat kalojnë nëpër dy linja CPU cache. Bllokime të tilla shkaktojnë një rënie të konsiderueshme të performancës, prandaj më parë ishte ofruar mundësia për të mbyllur me forcë aplikacionin që kishte shkaktuar bllokimin. Në versionin e ri është shtuar një parameter i linjës së komandës për bërthamën "split_lock_detect=ratelimit:N", që lejon përcaktimin e një kufiri të përgjithshëm për intensitetin e operacioneve të bllokimit për sekondë, pas kalimit të të cilit çdo proces, që bëhet burim i një bllokimi të ndarë, do të ndalet me forcë për 20 ms në vend që të mbyllet.
- Në kontrollorin e grupit cgroup të kapacitetit CFS (CFS bandwidth controller), i cili përcakton sa shumë kohë procesori mund t'i jepet çdo cgroup, është realizuar mundësia për të përcaktuar kufij, të kufizuar nga një periudhë kohore e caktuar, që lejon rregullimin më të mirë të ngarkesave të ndjeshme ndaj vonesave. Për shembull, vendosja e vlerës cpu.cfs_quota_us në 50000 dhe cpu.cfs_period_us në 100000 do t'i japë mundësinë një grupi procesesh të shpenzojë 50 ms kohë CPU çdo 100 ms.
- ĂshtĂ« shtuar infrastruktura fillestare pĂ«r krijimin e ngarkuesve tĂ« BPF programeve, e cila mĂ« vonĂ« do tĂ« lejojĂ« ngarkimin vetĂ«m tĂ« programeve BPF, tĂ« nĂ«nshkruara me njĂ« çelĂ«s digjital tĂ« besueshĂ«m.
- ĂshtĂ« shtuar njĂ« operacion i ri futex FUTEX_LOCK_PI2, qĂ« pĂ«rdor njĂ« timer monoton pĂ«r tĂ« llogaritur afatin, i cili merr parasysh kohĂ«n e kaluar nga sistemi nĂ« gjumĂ«.
- Për arkitekturën RISC-V është realizuar mbështetje për faqe të mëdha memorie (Transparent Huge-Pages) dhe mundësia e përdorimit të mekanizmit KFENCE për zbulimin e gabimeve gjatë punës me memorie.
- Në thirrjen sistemore madvise(), e cila ofron mjete për optimizimin e menaxhimit të memories, janë shtuar flamujt MADV_POPULATE_READ dhe MADV_POPULATE_WRITE për të gjeneruar «page fault» në të gjitha faqet e memories, të reflektuara për operacionet e leximit ose shkruarjes, pa kryer faktikisht lexim ose shkruarje (prefault). Përdorimi i flamujve mund të jetë i dobishëm për të reduktuar vonesat gjatë punës së programit, falë ekzekutimit parashikues të trajtuesit të «page fault» të gjitha për faqet e papërkushtuar, pa pritur qasjen faktike ndaj tyre.
- Në sistemin e testimit unit-kunit u shtua mbështetje për ekzekutimin e testeve në ambientin QEMU.
- Janë shtuar të rinj gjurmues: «osnoise» për të ndjekur vonesat në aplikacione, të shkaktuar nga përpunimi i ndërprerjeve, dhe «timerlat» për të ofruar informacion të detajuar mbi vonesat gjatë zgjimeve nga sinjali i timer-it.
- Virtualizimi dhe siguria
- U shtua thirrja sistemore memfd_secret(), e cila lejon krijimin e një hapësire private memories në një hapësirë adresash të izoluara, e dukshme vetëm për procesin-pronar, e pa-reflektuar në proceset e tjera dhe e papërshtatshme drejtpërdrejt për bërthamën.
- Në sistemin e filtrimit të thirrjeve sistemore seccomp, gjatë nxjerrjes së trajtuesve të bllokimit në hapësirën e përdoruesit, u ofrua mundësia e përdorimit të një operacioni atomik për të krijuar një descriptor skedari për detyrën e izoluar dhe për ta kthyer atë gjatë përpunimit të thirrjes sistemore. Operacioni i propozuar zgjidh problemin me ndërprerjen e trajtuesit në hapësirën e përdoruesit kur mbërrin një sinjal.
- U shtua një mekanizëm i ri për menaxhimin e kufizimit të burimeve në hapësirën e emrave të identifikuesve të përdoruesve, i cili lidh numëruesit e veçantë të rlimit me përdoruesin në «user namespace». Ndryshimi zgjidh problemin me përdorimin e numëruesve të përbashkët të burimeve kur një përdorues drejton procese në konteinerë të ndryshëm.
- Në hipervizorin KVM Për sistemet ARM64 është shtuar mundësia e përdorimit në sistemet mysafire të zgjatimeve MTE (MemTag, Memory Tagging Extension), e cila lejon lidhjen e etiketimeve me çdo operacion alokimi të memories dhe organizimin e kontrollit të saktësisë së përdorimit të treguesve për të bllokuar shfrytëzimin e dobësive, të shkaktuara nga qasja në blloqe memories të liruara, mbushjeve të tamponëve, qasjeve para inicializimit dhe përdorimit jashtë kontekstit aktual.
- Mjetet e ofruara nga platforma ARM64 për autentifikimin e pointerëve tani mund të konfigurohen veçmas për bërthamën dhe hapësirën e përdoruesit. Teknologjia lejon përdorimin e instruktimeve të specializuara ARM64 për verifikimin e adresave të kthimit duke përdorur nënshkrime digjitale, të cilat ruhen në bitët e papërdorur më të lartë të vetë pointerit.
- Në User-mode Linux është shtuar mbështetje për përdorimin e shoferëve për pajisjet PCI me një autobus virtual PCI, i realizuar nga shoferi PCI-over-virtio.
- Për sistemet x86, është shtuar mbështetje për pajisjen paravirtualizuar virtio-iommu, e cila lejon dërgimin e kërkesave IOMMU, si ATTACH, DETACH, MAP dhe UNMAP, mbi transportin virtio pa emulim të tabelave të faqeve të memories.
- Për CPU-të Intel, duke filluar nga familja Skylake deri te Coffee Lake, përdorimi i zgjerimeve Intel TSX (Transactional Synchronization Extensions), që ofrojnë mjete për përmirësimin e performancës së aplikacioneve me shumë këndvështrime përmes përjashtimeve të dinamikisht të operacioneve të panevojshme të sinkronizimit, është çaktivizuar si parazgjedhje. Zgjerimet janë çaktivizuar për shkak të mundësisë së sulmeve Zombieload, që manipulojnë rrjedhjen e informacionit përmes kanaleve të tjera, të cilat ndodhin gjatë funksionimit të mekanizmit të ndalesës asinkrone të operacioneve (TAA, TSX Asynchronous Abort).
- Sistemi rrjetor
- Integrimi në bërthamën MPTCP (MultiPath TCP) është vazhduar, një zgjerim i protokollit TCP për organizimin e funksionimit të lidhjes TCP me dorëzim paketash njëkohësisht përmes disa rrugëve përmes ndërfaqeve të ndryshme rrjetore, të lidhura me ndryshme. IP adresat. Në versionin e ri është shtuar një mekanizëm për krijimin e politikave të personalizuara të hash-it të trafikut për IPv4 dhe IPv6 (multipath hash policy), duke i dhënë mundësinë që nga hapësira e përdoruesit të përcaktojë cilat prej fushave në paketat, përfshirë ato të inkapsuluara, do të përdoren për llogaritjen e hash-it, që përcakton zgjedhjen e rrugës për paketën.
- Në transportin virtual virtio është shtuar mbështetje për soketët SOCK_SEQPACKET (dërgesa e renditur dhe e besueshme e datagramëve).
- Janë zgjeruar mundësitë e mekanizmit të soketeve SO_REUSEPORT, i cili lejon që disa sokete që dëgjojnë njëkohësisht të lidhen me një port për të pranuar lidhje me shpërndarjen e kërkesave që vijnë në mënyrë të barabartë në të gjitha soketet e lidhura përmes SO_REUSEPORT, duke e bërë më të lehtë krijimin e aplikacioneve serverike me shumë fibra. Në versionin e ri janë shtuar mjete për të transferuar kontrollin te një soket tjetër në rast dështimi gjatë përpunimit të një kërkese nga soketi fillestar i zgjedhur (zgjidh një problem me humbjen e lidhjeve individuale gjatë riaktivizimit të shërbimeve).
- Pajisje
- Në drejtuesin amdgpu është implementuar mbështetje për seritë e reja të GPU-ve AMD Radeon RX 6000, të zhvilluara nën emrat kodor «Beige Goby» (Navi 24) dhe «Yellow Carp», si dhe është përmirësuar mbështetja për GPU Aldebaran (gfx90a) dhe APU Van Gogh. Shtuar mundësia e punës njëkohësisht me disa panely eDP. Për APU Renoir është implementuar mbështetje për punën me buffer të koduar në memorien video (TMZ, Trusted Memory Zone). Shtuar mbështetje për nxjerrjen e nxehtë të kartave grafike (hot-unplug). Për GPU Radeon RX 6000 (Navi 2x) dhe GPU të vjetra AMD është aktivizuar mbi baza të parazgjedhura mbështetja për mekanizmin e kursimit të energjisë ASPM (Active State Power Management), i cili më parë ishte aktivizuar vetëm për GPU Navi 1x, Vega dhe Polaris.
- Për çipit AMD është shtuar mbështetje për memorien virtuale të ndarë (SVM, shared virtual memory) mbi bazën e nën-sistemit HMM (Heterogeneous memory management), që lejon përdorimin e pajisjeve me blloqe të vetëkontrollit të memories (MMU, memory management unit), të cilat mund të kenë qasje në memorien kryesore. Po ashtu, me ndihmën e HMM mund të organizohet një hapësirë e përbashkët adresash midis GPU dhe CPU, ku GPU ka qasje në memorien kryesore të procesit.
- Shtuar mbështetje fillestare për teknologjinë AMD Smart Shift, e cila ndryshon dinamik parametrat e konsumit të energjisë CPU dhe GPU në laptopët me çip dhe kartë grafike AMD për të forcuar performancën gjatë lojërave, redaktimit të videove dhe 3D-renderimit.
- Në drejtuesin i915 për kartat grafike Intel është përfshirë mbështetje për çipat Intel Alderlake P.
- Shtuar drejtuesi drm/hyperv për adaptorin grafik virtual Hyper-V.
- Shtuar mbështetje për kompjuterin-monoblok Raspberry Pi 400.
- Shtuar drejtuesi dell-wmi-privacy për mbështetje për ndihmës të pajisur në laptopët Dell për të fikur kamerën dhe mikrofonin.
- Për laptopët Lenovo është shtuar WMI-interface për të ndryshuar parametrat e BIOS-it përmes sysfs /sys/class/firmware-attributes/.
- E zgjeruar mbështetje për pajisje me ndërfaqen USB4.
- Shtuar mbështetje për kartat e tingullit dhe kodekët AmLogic SM1 TOACODEC, Intel AlderLake-M, NXP i.MX8, NXP TFA1, TDF9897, Rockchip RK817, Qualcomm Quinary MI2 dhe Texas Instruments TAS2505. Përmirësuar mbështetje për tingullin në laptopë HP dhe ASUS. Shtuar patches për të ulur vonesat para fillimit të përshtatjes së tingullit në pajisje me ndërfaqen USB.
Burimi: opennet.ru
