Pas dy muajsh zhvillimi, Linus Torvalds prezantoi lëshimin e kernelit Linux 5.19. Disa nga ndryshimet më të dukshme janë: mbështetje për arkitekturën e procesorëve LoongArch, integrimi i patch-eve "BIG TCP", regjimi "on-demand" në fscache, heqja e kodit për mbështetje të formatit a.out, mundësia e përdorimit të ZSTD për kompresimin e firmuerëve, një ndërfaqe për menaxhimin e dëbimit të memories nga hapësira e përdoruesit, rritja e besueshmërisë dhe performancës së gjeneratorit të numrave të rastit, mbështetje për zgjerimet Intel IFS (In-Field Scan), AMD SEV-SNP (Secure Nested Paging), Intel TDX (Trusted Domain Extensions) dhe ARM SME (Scalable Matrix Extension).
Në njoftim, Linus tha se me sa duket lëshimit të ardhshëm të kernelit do t'i jepet numri 6.0, pasi në degën 5.x janë akumuluar mjaft lëshime për të ndërruar numrin e parë në numrin versionit. Ndryshimi i numerimit bëhet për arsye estetike dhe është një hap formalisht që heq pakënaqësinë nga akumulimi i numrit të madh të lëshimeve në seri.
Gjithashtu, Linus përmendi se përdori për formimin e lëshimit një laptop Apple të bazuar në arkitekturën ARM64 (Apple Silicon) me një mjedis Linux të bazuar në distribucionin Asahi Linux. Kjo nuk është stacioni i tij kryesor i punës, por ai përdori këtë platformë për të provuar përshtatshmërinë e saj për punën mbi kernelin dhe për t'u siguruar se mund të formonte lëshimet e kernelit gjatë udhëtimit, duke pasur në dorë një laptop të lehtë. Më parë, shumë vite më parë, Linus kishte përvojë në përdorimin e pajisjeve Apple për zhvillim - një herë ai kishte përdorur një kompjuter të bazuar në CPU ppc970 dhe një laptop Macbook Air.
Në versionin e ri janë përfshirë 16401 korrigjime nga 2190 zhvillues (në lëshimin e kaluar kishim 16206 korrigjime nga 2127 zhvillues), madhësia e patch-it është 90 MB (ndryshimet preku 13847 skedarë, u shtuan 1149456 rreshta kodi, u fshin 349177 rreshta). Rreth 39% e të gjithë ndryshimeve të paraqitura në 5.19 lidhen me drejtuesit e pajisjeve, rreth 21% e ndryshimeve kanë të bëjnë me përditësimin e kodit specifik për arkitekturën harduerike, 11% lidhen me grumbullin e rrjetit, 4% me sistemet e skedarëve dhe 3% me nën-sistemet e brendshme të kernelit.
Një nga veçoritë kryesore në kernelin 5.19:
- Sistemi i disqeve, hyrja/ dalje dhe sistemet e skedarëve
- Sistemi i skedarëve EROFS (Enhanced Read-Only File System), i destinuar për përdorim në seksionet që janë në modin vetëm për lexim, është transferuar për shfrytëzimin e nën-sistemit fscache, që ofron ndihmë për ruajtjen e të dhënave. Ky ndryshim ka lejuar një rritje të dukshme të performancës së sistemeve në të cilat një numër i madh kontejnerësh nis nga një imazh i bazuar në EROFS.
- Nën-sistemi fscache ka marrë një mod të leximit sipas kërkesës («on-demand»), i cili është aktivizuar për optimizimin e EROFS. Ky mod i ri mundëson organizimin e ruajtjes së leximit nga imazhet e Sistemit të Skedarëve që ndodhen në sistemin lokal. Në krahasim me modin fillestar të punës, i orientuar drejt ruajtjes së të dhënave në sistemin e skedarëve lokal, të kaluar përmes sistemeve të skedarëve në rrjet, mod i «on-demand» delegon funksionet e nxjerrjes së të dhënave dhe ruajtjes së tyre në një proces pasiv të vepruar në hapësirën e përdoruesit.
- Në XFS është siguruar mundësia e ruajtjes së miliarda atributeve të zgjeruara në i-node. Numri maksimal i ekstensioneve për një skedar është rritur nga 4 miliard në 247. Është realizuar një mod për përditësimin atomik të disa atributeve të zgjeruara të skedarit në të njëjtën kohë.
- Në sistemin e skedarëve Btrfs është optimizuar puna me bllokadave, duke arritur një rritje të performancës prej rreth 7% gjatë shkrimit të drejtpërdrejtë në modin nowait. Performanca e operacioneve në modin NOCOW (pa copy-on-write) është rritur afërsisht me 3%. Ngarkesa në memorie është reduktuar gjatë punës së komandës «send». Madhësia minimale e nën-bllokave është reduktuar nga 64K në 4K (mund të përdoren nën-blloka më të vogla se blloqet e kernelit). Është kryer kalimi nga përdorimi i pemës bazë (radix tree) në algoritmin XArrays.
- Në serverin NFS është shtuar një mod për zgjatjen e ruajtjes së gjendjes së bllokadës, të vendosur nga klienti, i cili ka ndaluar përgjigjen ndaj kërkesave. Ky mod i ri lejon vonimin e pastrimit të bllokadës deri në një ditë, nëse një klient tjetër nuk kërkon një bllokadë konkurruese. Në modin standard, bllokada pastruohet pas 90 sekondash nga momenti kur klienti ka ndaluar përgjigjen.
- Në nën-sistemin për mbikëqyrjen e ngjarjeve në FS fanotify është realizuar një flamur FAN_MARK_EVICTABLE, me anë të cilit mund të çaktivizohet mbajtja e i-node-ve të synuar në cache, për shembull, për të injoruar degët pa i mbajtur pjesët e tyre në cache.
- Në driverin për FS FAT32 është shtuar mbështetje për marrjen e informacionit në lidhje me kohën e krijimit të skedarëve përmes thirrjes sistemore statx me implementimin e një varianti më eficient dhe funksional të stat(), i cili kthen informacion të zgjeruar mbi skedarin.
- Janë bërë optimizime të mëdha në driverin exFAT, të lidhura me sigurimin e pastrimit të përbashkët të grupeve të sektorëve gjatë modit aktiv 'dirsync', përveç pastrimit sekondar. Duke shkurtruar numrin e kërkesave për blloqe pas optimizimit, performanca e krijimit të numrit të madh të katalogëve në SD kartën është rritur me më shumë se 73-85% në varësi të madhësisë së klasterit.
- Në bërthamë është përfshirë përditësimi i parë korrigjues për driverin ntfs3. Që nga përfshirja e ntfs3 në bërthamën 5.15 në tetor të vitit të kaluar, driveri nuk është përditësuar dhe lidhjet me zhvilluesit janë humbur, por tani zhvilluesit e kanë rikthyer publikimin e ndryshimeve. Në patch-in e propozuar janë zgjidhur gabimet që shkaktojnë rrjedhje të memories dhe përfundime të papritura, janë zgjidhur çështjet me ekzekutimin e xfstests, është bërë pastrimi i kodit të pa përdorur dhe janë korrigjuar gabimet e shtypit.
- Për OverlayFS është realizuar mundësia e mapimit të identifikuesve të përdoruesve të sistemeve të montuara të skedarëve, të aplikuar për të lidhur skedarët e një përdoruesi të caktuar në një seksion të huaj të montuar me një përdorues tjetër në sistemin aktual.
- Memorie dhe shërbime sistemike
- Është shtuar mbështetje fillestare për arkitekturën e grupit të komandave LoongArch, e cila përdoret në procesorët Loongson 3 5000 dhe implementon një ISA të re RISC, e ngjashme me MIPS dhe RISC-V. Arkitektura LoongArch është e disponueshme në tre variante: të prerë 32-bit (LA32R), të zakonshëm 32-bit (LA32S) dhe 64-bit (LA64).
- Është hequr kodi për mbështetje të formatit të skedave ekzekutues a.out, i cili është klasifikuar si i vjetruar në lëshimin 5.1. Formati a.out ka kohë që nuk përdoret në sistemet me Linux, dhe gjenerimi i skedave a.out nuk mbështetet nga mjetet moderne në konfigurimet për Linux siç është parazgjedhja. Boot-loaderi për skedarët a.out mund të realizohet gjithnjë në hapësirën e përdoruesit.
- Është ndaluar mbështetja për opsionet e ngarkesës, specifike për arkitekturën x86: nosep, nosmap, nosmep, noexec dhe noclflush).
- Është ndaluar mbështetja për arkitekturën e vjetër të CPU h8300 (Renesas H8/300), e cila ka kohë që nuk është mbështetur.
- Janë zgjeruar mundësitë që lidhen me reagimin ndaj zbulimit të bllokimeve të ndara ("split lock"), që ndodhin kur aksesohet të dhënat e pavendosura në kujtesë për shkak se, gjatë ekzekutimit të një instruksioni atomik, të dhënat kalojnë nëpër dy linja të cache CPU-së. Ky lloj bllokimi çon në një rënie të konsiderueshme të performancës. Nëse më parë, si parazgjedhje, bërthama jepte një paralajmërim me informacion rreth procesit që shkaktoi bllokimin, tani, procesi problematik do të ngadalsohet më tej për të ruajtur performancën e pjesës tjetër të sistemit.
- Është shtuar mbështetje për mekanizmin IFS (In-Field Scan) të realizuar në procesorët Intel, i cili lejon kryerjen e testeve diagnostike të nivelit të ulët të CPU-së, të cilat janë në gjendje të identifikojnë probleme që nuk përcaktohen nga mjetet standarde mbi bazën e kodeve të korrigjimit të gabimeve (ECC) ose bitëve të paritetit. Testet e kryera paraqiten në formën e një firmueri të ngarkueshëm, të formuar në mënyrë analogjike me përditësimet e mikroproçesorit. Rezultatet e testeve janë të qasshme përmes sysfs.
- Është shtuar mundësia për të inkorporuar në bërthamë skedarin bootconfig, që lejon përcaktimin e parametrave të funksionimit të bërthamës përmes një skedari të konfigurimit, përveç opsioneve të komandës së linjës. Inkorporimi realizohet përmes opsionit të ndërtimit ‘CONFIG_BOOT_CONFIG_EMBED_FILE="/PATH/TO/BOOTCONFIG/FILE"‘. Më parë, bootconfig përcaktohej përmes bashkëngjitjes në imazhin initrd. Inkorporimi në bërthamë lejon përdorimin e bootconfig në konfigurimet pa initrd.
- Është realizuar mundësia e ngarkimit të firmuerëve të kompresuar duke përdorur algoritmin Zstandard. Në sysfs është shtuar një grup skedash kontrolli /sys/class/firmware/*, që lejon iniciimin e ngarkimit të firmuerëve nga hapësira e përdoruesit.
- Në ndërfaqen e hyrjes/asynchronic output io_uring është ofruar një flamur i ri IORING_RECVSEND_POLL_FIRST, duke e vendosur atë, operacioni rrjetë do t'i kalojë fillimisht për përpunim me përdorimin e polling-ut, që mund të kursejë burime në situata kur është e pranueshme përpunimi i operacionit me një vonesë të caktuar. Në io_uring është shtuar gjithashtu mbështetje për thirrjen sistemike socket(), janë propozuar flamuj të rinj për thjeshtimin e menaxhimit të descriptorëve të skedarëve, është shtuar moda "multi-shot" për pranimin në thirrjen accept() e disa lidhjeve njëherësh, janë shtuar operacione për kalimin e komandave NVMe direkt në pajisje.
- Për arkitekturën Xtensa është siguruar mbështetje për mjetin e gjurmimit KCSAN (Kernel Concurrency Sanitizer), i cili është i destinuar për identifikimin dinamik të kushteve të garës brenda bërthamës. Po ashtu, është shtuar mbështetje për modalitetin e gjumit dhe koprocessorët.
- Për arkitekturën m68k (Motorola 68000) është implementuar makina virtuale (simulatori i platformës), i bazuar në emulatorin Android Goldfish.
- Për arkitekturën AArch64 është implementuar mbështetje për zgjerimet Armv9-A SME (Scalable Matrix Extension).
- Në nënsiatën e eBPF është lejuar ruajtja e treguesve të tipizuar në struktura map, si dhe është shtuar mbështetje për tregues dinamikë.
- Është propozuar një mekanizëm i ri parashikues për zëvendësimin e memories, që mbështet menaxhimin nga hapësira e përdoruesit përmes skedarit memory.reclaim. Shkruarja e një numri në skedarin e caktuar do të vijë në një përpjekje për zëvendësimin e një numri përkatës bajtash nga grupi i lidhur me cgroup.
- Është rritur saktësia e mbajtjes së përdorimit të memories gjatë kompresimit të të dhënave në divizorin e frymëmarrjes përmes mekanizmit zswap.
- Për arkitekturën RISC-V është siguruar mbështetje për ekzekutimin e skedarëve të ekzekutueshëm 32-bitësh në sisteme 64-bitësh, është shtuar një modalitet për lidhjen e atribuzioneve kufizuese me faqet e memories (p.sh., për të ndaluar caching) dhe është implementuar funksioni kexec_file_load().
- Implementimi i mbështetjes për sisteme 32-bitëshe Armv4T dhe Armv5 është adaptuar për t'u përdorur në ndërtimet universale multikosh të bërthamës, të përshtatshme për sisteme të ndryshme ARM.
- Virtualizimi dhe siguria
- Në nënsiatën EFI është realizuar mundësia e transmetimit të besueshëm të informacionit sekret te sistemet nikoqire pa e zbuluar atë sistemit nikoqir. Të dhënat ofrohen përmes katalogut security/coco në securityfs.
- Në modalitetin e mbrojtjes Lockdown, i cili kufizon aksesin e përdoruesit root në bërthamë dhe bllokon rrugët e anashkalimit të UEFI Secure Boot, është eliminuar një vrimë që lejonte anashkalimin e mbrojtjes përmes manipulimit me gjurmuesin e bërthamës.
- Janë përfshirë patches që synojnë të rrisin besueshmërinë dhe performancën e gjeneratorit të numrave të rastësishëm.
- Gjatë ndërtimit me Clang 15 është realizuar mbështetje për mekanizmin e rastësisë së strukturave të bërthamës.
- Në mekanizmin Landlock, i cili lejon kufizimin e ndërveprimit të një grupi procesesh me ambientin e jashtëm, është siguruar mbështetje për rregulla që lejojnë kontrollin e ekzekutimit të operacioneve të ndryshimit të emrit të skedarëve.
- Sistemi IMA (Arkitektura e Matjes së Integritetit), i destinuar për verifikimin e integritetit të komponentëve të sistemit operativ përmes nënshkrimeve digjitale dhe hash-it, është përshtatur për të përdorur modul TFS-verity për verifikimin e skedarëve.
- Logjika e veprimeve është ndryshuar në lidhje me ndalesën e qasjes jo privilegjuese në sistemin e eBPF — më parë, të gjitha komandat lidhur me thirrjen sistemike bpf() ishin ndaluar, ndërsa nga versioni 5.19 është ruajtur qasja në komandat që nuk çojnë në krijimin e objekteve. Me këtë sjellje, për të ngarkuar programin BPF është e nevojshme një proces me privilegje, por më pas proceset pa privilegje mund të ndërveprojnë me këtë program.
- Është shtuar mbështetje për zgjatimin AMD SEV-SNP (Përfaqësimi i Shkallës së Sigurt), i cili siguron punë të sigurt me tabela të ndara përfaqësimi dhe mbrojtje nga sulmet “undeSErVed” dhe “SEVerity” ndaj CPU-ve AMD EPYC, duke lejuar anashkalimin e mekanizmit të mbrojtjes AMD SEV (Virtualizimi i Koduar të Sigurt).
- Është shtuar mbështetje për mekanizmin Intel TDX (Zgjatjet e Domainit të Besueshëm), i cili ndalon përpjekjet e aksesit të palëve të treta në memorie të koduar. makinat virtuale.
- Në drajverin virtio-blk, i cili përdoret për të emuluar pajisje bllokuese, është shtuar mbështetje për hyrje/dalje duke përdorur polling, i cili në testet e kryera lejoi reduktimin e vonesave me rreth 10%.
- Sistemi rrjetor
- Janë përfshirë një seri patch-e BIG TCP që lejojnë rritjen e madhësisë maksimale të paketës TCP deri në 4GB për optimizimin e funksionimit të rrjeteve të brendshme me shpejtësi të lartë në qendrat e të dhënave. Ky rritje e madhësisë së paketës me fushë 16-bit në krye arrin përmes implementimit të paketave “jumbo”, ku madhësia në krye të IP është 0, ndërsa madhësia reale kalon në një fushë të veçantë 32-bit në një krye të bashkangjitur. Gjatë testimit të performancës, vendosja e madhësisë së paketës në 185 KB lejoi rritjen e kapacitetit të kalimit me 50% dhe reduktimin e dukshëm të vonesave të transfertës së të dhënave.
- Puna vazhdon mbi integrimin në strukturën rrjetore të mjeteve për gjurmimin e shkakut të humbjes së pakove (kodet e shkakut). Kodi i shkakut dërgohet gjatë çlirimit të memories të lidhur me paketën dhe lejon marjen në konsideratë të situatave të tilla si humbja e paketës për shkak të gabimeve në plotësimin e fushave në kokë, zbulimi i spofingut nga filtri rp_filter, llogaritja e gabuar, mungesa e memories, aktivizimi i rregullave IPSec XFRM, numri i gabuar i sekuencës TCP dhe të tjera.
- Shtuar mbështetje për rikthimin e lidhjeve MPTCP (MultiPath TCP) në përdorimin e TCP-së standarde, në situatat kur disa mundësi MPTCP nuk mund të përdoren. MPTCP është një zgjatje e protokollit TCP për organizimin e funksionimit të lidhjes TCP me dorëzimin e pakove në të njëjtën kohë përmes disa rrugëve përmes ndërfaqeve të ndryshme rrjetë, të lidhura me adresa të ndryshme IP. Shtuar një API për menaxhimin e rrjedhave MPTCP nga hapësira e përdoruesit.
- Pajisje
- Shtuar më shumë se 420 mijë rreshta kodi të lidhur me drejtorin amdgpu, nga të cilat rreth 400 mijë rreshta janë për skedarët e titujve të gjeneruar automatikisht me të dhëna për regjistrat ASIC në drejtorin për GPU-të AMD, dhe 22.5 mijë rreshta sigurojnë implementimin fillestar të mbështetjes për AMD SoC21. Madhësia totale e drejtorit për GPU-të AMD ka kaluar 4 milion rreshta kodi. Përveç SoC21, në drejtorin AMD është përfshirë mbështetje për SMU 13.x (Njësia e Menaxhimit të Sistemit), është rinovuar mbështetje për USB-C dhe GPUVM, është bërë përgatitja për mbështetje të gjeneratave të ardhshme të platformave RDNA3 (RX 7000) dhe CDNA (AMD Instinct).
- Në drejtorin i915 (Intel) janë zgjeruar mundësitë që lidhen me menaxhimin e konsumit të energjisë. Shtuar identifikuesit GPU Intel DG2 (Arc Alchemist), të përdorura në laptopë, është siguruar mbështetje fillestare për platformën Intel Raptor Lake-P (RPL-P), është shtuar informacion për kartat grafike Arctic Sound-M), është realizuar ABI për motorët e llogaritjes, për kartat DG2 është shtuar mbështetje për formatin Tile4, për sistemet e bazuara në mikroarkitekturën Haswell është realizuar mbështetje për DisplayPort HDR.
- Në driverin Nouveau është realizuar kalimi në përdorimin e handler-it drm_gem_plane_helper_prepare_fb, duke aplikuar alokim statik të memories për disa struktura dhe variabla. Sa i përket përdorimit të kodeve burimore nga NVIDIA në Nouveau, puna aktualisht përqendrohet në identifikimin dhe eliminimin e gabimeve. Në të ardhmen, versioni i publikuar i firmware-it pritet të përdoret për të rritur performancën e driverit.
- Shtuar driveri për kontrolluesin NVMe, që përdoret në kompjuterët Apple të bazuar në çipin M1.
Në po atë kohë, Fondi i Lirë të Softuerit të Amerikës Latine formoi një variant të plotë të lirë të kernelit 5.19 — Linux-libre 5.19-gnu, i pastër nga elementet e firmware-it dhe driverave që përmbajnë komponente ose seksione kodi jo të lira, të cilat kanë kufizime nga prodhuesi. Në versionin e ri është bërë pastrimi i driverave për pureLiFi X/XL/XC dhe TI AMx3 Wkup-M3 IPC. Është përditësuar kodi i pastrimit të blob-eve në drivera dhe nën-sisteme si Silicon Labs WFX, AMD amdgpu, Qualcomm WCNSS Peripheral Image Loader, Realtek Bluetooth, Mellanox Spectrum, Marvell WiFi-Ex, Intel AVS, IFS, pu3-imgu. Është realizuar përpunimi i skedarëve devicetree për Qualcomm AArch64. Shtuar mbështetje për skemën e re të emërtimeve të komponentëve Sound Open Firmware. Është ndalur pastrimi i driverit ATM Ambassador, i cili u hoq nga kernel-i. Menaxhimi i pastrimit të blob-eve në HDCP dhe Mellanox Core është transferuar në etiketa të veçanta kconfig.
Burimi: opennet.ru
