Lëshimi i kernelit Linux 5.19

Pas dy muajsh zhvillimi, Linus Torvalds prezantoi lëshimin e kernelit Linux 5.19. Ndër ndryshimet më të dukshme: mbështetja për arkitekturën e procesorit LoongArch, integrimi i arnimeve "BIG TCP", modaliteti sipas kërkesës në fscache, heqja e kodit për të mbështetur formatin a.out, aftësia për të përdorur ZSTD për kompresimin e firmuerit, një ndërfaqe për menaxhimi i nxjerrjes së memories nga hapësira e përdoruesit, rritja e besueshmërisë dhe performancës së gjeneratorit të numrave pseudo të rastësishëm, mbështetje për Intel IFS (Skanim në terren), AMD SEV-SNP (Secure Nested Paging), Intel TDX (Zgjerime të Domainit të Besuar) dhe ARM Zgjerime SME (Scalable Matrix Extension).

Në njoftim, Linus tha se me shumë mundësi lëshimi i ardhshëm i kernelit do të numërohet 6.0, pasi dega 5.x ka grumbulluar lëshime të mjaftueshme për të ndryshuar numrin e parë në numrin e versionit. Ndryshimi i numrave kryhet për arsye estetike dhe është një hap formal që lehtëson shqetësimin për shkak të akumulimit të një numri të madh çështjesh në seri.

Linus përmendi gjithashtu se ai përdori një laptop Apple të bazuar në arkitekturën ARM64 (Apple Silicon) me një mjedis Linux të bazuar në shpërndarjen Asahi Linux për të krijuar lëshimin. Nuk është stacioni kryesor i punës i Linusit, por ai përdori platformën për të testuar përshtatshmërinë e saj për punën e kernelit dhe për t'u siguruar që mund të prodhonte lëshime kernel ndërsa udhëtonte me një laptop të lehtë në dorë. Më parë, shumë vite më parë, Linus kishte përvojë në përdorimin e pajisjeve Apple për zhvillim - ai dikur përdori një PC të bazuar në CPU ppc970 dhe një laptop Macbook Air.

Versioni i ri përfshin 16401 rregullime nga 2190 zhvillues (në versionin e mëparshëm kishte 16206 rregullime nga 2127 zhvillues), madhësia e patch-it është 90 MB (ndryshimet prekën 13847 skedarë, u shtuan 1149456 rreshta kodi, u fshinë 349177 rreshta). Rreth 39% e të gjitha ndryshimeve të paraqitura në 5.19 janë të lidhura me drejtuesit e pajisjes, afërsisht 21% e ndryshimeve lidhen me përditësimin e kodit specifik për arkitekturat e harduerit, 11% janë të lidhura me grupin e rrjetit, 4% lidhen me sistemet e skedarëve dhe 3% janë të lidhura me nënsistemet e brendshme të kernelit.

Risitë kryesore në kernel 5.19:

  • Nënsistemi i diskut, I/O dhe sistemet e skedarëve
    • Sistemi i skedarëve EROFS (Enhanced Read-Only File System), i destinuar për përdorim në ndarjet vetëm për lexim, është konvertuar për të përdorur nënsistemin fscache, i cili siguron ruajtjen e të dhënave në memorie. Ndryshimi përmirësoi ndjeshëm performancën e sistemeve në të cilat një numër i madh kontejnerësh lëshohen nga një imazh i bazuar në EROFS.
    • Një modalitet leximi sipas kërkesës është shtuar në nënsistemin fscache, i cili përdoret për të optimizuar EROFS. Modaliteti i ri ju lejon të organizoni memorien e leximit nga imazhet FS të vendosura në sistemin lokal. Në ndryshim nga mënyra e funksionimit fillimisht e disponueshme, e cila përqendrohet në ruajtjen në memorien e skedarëve lokalë të të dhënave të transferuara përmes sistemeve të skedarëve të rrjetit, modaliteti "sipas kërkesës" delegon funksionet e marrjes së të dhënave dhe shkrimit të tyre në cache në një të veçantë. procesi i sfondit që funksionon në hapësirën e përdoruesit.
    • XFS ofron mundësinë për të ruajtur miliarda atribute të zgjeruara në një i-node. Numri maksimal i shtrirjeve për një skedar është rritur nga 4 miliardë në 247. Është zbatuar një modalitet për përditësimin atomik të disa atributeve të skedarëve të zgjeruar menjëherë.
    • Sistemi i skedarëve Btrfs ka optimizuar punën me kyçet, gjë që lejoi një rritje afërsisht 7% të performancës kur shkruani drejtpërdrejt në modalitetin nowait. Performanca e operacioneve në modalitetin NOCOW (pa kopje-në-shkrim) është rritur me afërsisht 3%. Ngarkesa në cache-in e faqeve kur ekzekutohet komanda "dërgo" është zvogëluar. Madhësia minimale e nënfaqeve është reduktuar nga 64K në 4K (mund të përdoren nënfaqe më të vogla se faqet e kernelit). Është bërë një kalim nga përdorimi i një peme radix në algoritmin XArrays.
    • Një modalitet është shtuar në serverin NFS për të zgjatur ruajtjen e gjendjes së bllokimit të vendosur nga një klient që ka ndaluar t'u përgjigjet kërkesave. Modaliteti i ri ju lejon të vononi pastrimin e bllokimit deri në një ditë, përveç nëse një klient tjetër kërkon një bllokim konkurrues. Në modalitetin normal, bllokimi pastrohet 90 sekonda pasi klienti të ndalojë së përgjigjuri.
    • Nënsistemi i gjurmimit të ngjarjeve në fanotify FS zbaton flamurin FAN_MARK_EVICTABLE, me të cilin mund të çaktivizoni fiksimin e nyjeve i synuar në memorie, për shembull, për të injoruar nëndegët pa i fiksuar pjesët e tyre në cache.
    • Drejtuesi për sistemin e skedarëve FAT32 ka shtuar mbështetje për marrjen e informacionit për kohën e krijimit të skedarit përmes thirrjes së sistemit statx me zbatimin e një versioni më efikas dhe funksional të stat(), i cili kthen informacion të zgjeruar rreth skedarit.
    • Optimizime të rëndësishme i janë bërë drejtuesit exFAT për të lejuar pastrimin e njëkohshëm të një grupi sektorësh kur modaliteti 'dirsync' është aktiv, në vend të pastrimit të njëpasnjëshëm sektor pas sektori. Duke zvogëluar numrin e kërkesave të bllokut pas optimizimit, performanca e krijimit të një numri të madh drejtorish në kartën SD u rrit me më shumë se 73-85%, në varësi të madhësisë së grupit.
    • Kerneli përfshin përditësimin e parë korrigjues të drejtuesit ntfs3. Që kur ntfs3 u përfshi në kernel 5.15 tetorin e kaluar, drejtuesi nuk është përditësuar dhe komunikimi me zhvilluesit ka humbur, por zhvilluesit kanë rifilluar publikimin e ndryshimeve tani. Arnimet e propozuara eliminuan gabimet që çuan në rrjedhje dhe dështime të kujtesës, zgjidhën problemet me ekzekutimin e xfstests, pastruan kodin e papërdorur dhe rregulluan gabimet e shtypit.
    • Për OverlayFS, është zbatuar aftësia për të hartuar ID-të e përdoruesve të sistemeve të skedarëve të montuar, e cila përdoret për të përputhur skedarët e një përdoruesi specifik në një ndarje të huaj të montuar me një përdorues tjetër në sistemin aktual.
  • Shërbimet e kujtesës dhe sistemit
    • U shtua mbështetje fillestare për arkitekturën e grupit të instruksioneve LoongArch të përdorur në procesorët Loongson 3 5000, i cili zbaton RISC ISA të ri, të ngjashëm me MIPS dhe RISC-V. Arkitektura LoongArch është e disponueshme në tre shije: 32-bit të zhveshur (LA32R), 32-bit të rregullt (LA32S) dhe 64-bit (LA64).
    • Kodi u hoq për të mbështetur formatin e skedarit të ekzekutueshëm a.out, i cili ishte i vjetëruar në versionin 5.1. Formati a.out ka qenë prej kohësh i vjetëruar në sistemet Linux dhe gjenerimi i skedarëve a.out nuk mbështetet nga mjetet moderne në konfigurimet e paracaktuara të Linux. Ngarkuesi për skedarët a.out mund të zbatohet tërësisht në hapësirën e përdoruesit.
    • Mbështetja për opsionet specifike të nisjes x86 është ndërprerë: nosp, nosmap, nosmep, noexec dhe noclflush).
    • Mbështetja për arkitekturën e vjetëruar të CPU h8300 (Renesas H8/300), e cila ka kohë që ka mbetur pa mbështetje, është ndërprerë.
    • Aftësi të zgjeruara në lidhje me përgjigjen ndaj zbulimit të bllokimeve të ndara ("bllokime të ndara") që ndodhin kur hyni në të dhëna të pabarabarta në memorie për shkak të faktit se kur ekzekutoni një instruksion atomik, të dhënat kalojnë dy linja cache të CPU. Bllokime të tilla çojnë në një rënie të konsiderueshme të performancës. Nëse më parë, si parazgjedhje, kerneli do të lëshonte një paralajmërim me informacion në lidhje me procesin që shkaktoi bllokimin, tani procesi problematik do të ngadalësohet më tej për të ruajtur performancën e pjesës tjetër të sistemit.
    • Mbështetje e shtuar për mekanizmin IFS (In-Field Scan) i implementuar në procesorët Intel, i cili ju lejon të ekzekutoni teste diagnostikuese të nivelit të ulët të CPU që mund të identifikojnë problemet që nuk zbulohen nga mjetet standarde të bazuara në kodet e korrigjimit të gabimit (ECC) ose bitet e barazisë . Testet e kryera janë në formën e firmuerit të shkarkueshëm, të krijuar në mënyrë të ngjashme me përditësimet e mikrokodit. Rezultatet e testit janë të disponueshme përmes sysfs.
    • U shtua aftësia për të futur një skedar bootconfig në kernel, i cili lejon, përveç opsioneve të linjës së komandës, të përcaktojë parametrat e kernelit përmes një skedari cilësimesh. Përfshirja kryhet duke përdorur opsionin e montimit 'CONFIG_BOOT_CONFIG_EMBED_FILE="/PATH/TO/BOOTCONFIG/FILE"'. Më parë, bootconfig u përcaktua duke i bashkangjitur imazhit initrd. Integrimi në kernel lejon që bootconfig të përdoret në konfigurime pa initrd.
    • Është zbatuar aftësia për të shkarkuar firmware të ngjeshur duke përdorur algoritmin Zstandard. Një grup skedarësh kontrolli /sys/class/firmware/* është shtuar në sysfs, duke ju lejuar të filloni ngarkimin e firmuerit nga hapësira e përdoruesit.
    • Ndërfaqja asinkrone I/O io_uring ofron një flamur të ri, IORING_RECVSEND_POLL_FIRST, i cili, kur vendoset, së pari do të dërgojë një operacion rrjeti për t'u përpunuar duke përdorur sondazhin, i cili mund të kursejë burime në situata ku përpunimi i operacionit me njëfarë vonese është i pranueshëm. io_uring shtoi gjithashtu mbështetje për thirrjen e sistemit socket(), propozoi flamuj të rinj për të thjeshtuar menaxhimin e përshkruesve të skedarëve, shtoi një modalitet "multi-shot" për pranimin e disa lidhjeve në të njëjtën kohë në thirrjen accept() dhe shtoi operacione për përcjelljen e NVMe komandat direkt në pajisje.
    • Arkitektura Xtensa ofron mbështetje për mjetin e korrigjimit KCSAN (Kernel Concurrency Sanitizer), i krijuar për të zbuluar në mënyrë dinamike kushtet e garës brenda kernelit. Shtoi gjithashtu mbështetje për modalitetin e gjumit dhe bashkëprocesorët.
    • Për arkitekturën m68k (Motorola 68000), është implementuar një makinë virtuale (imitues i platformës) i bazuar në emulatorin Android Goldfish.
    • Për arkitekturën AArch64, është zbatuar mbështetje për zgjerimet Armv9-A SME (Scalable Matrix Extension).
    • Nënsistemi eBPF lejon ruajtjen e treguesve të shtypur në strukturat e hartës dhe gjithashtu shton mbështetje për treguesit dinamikë.
    • Propozohet një mekanizëm i ri proaktiv i rikthimit të memories që mbështet kontrollin e hapësirës së përdoruesit duke përdorur skedarin memory.reclaim. Shkrimi i një numri në skedarin e specifikuar do të përpiqet të largojë numrin përkatës të bajteve nga grupi i lidhur me cgroup.
    • Saktësia e përmirësuar e përdorimit të memories kur kompresohen të dhënat në ndarjen e shkëmbimit duke përdorur mekanizmin zswap.
    • Për arkitekturën RISC-V, ofrohet mbështetje për ekzekutimin 32-bit në sistemet 64-bit, shtohet një modalitet për të lidhur atributet kufizuese me faqet e memories (për shembull, për të çaktivizuar caching) dhe funksioni kexec_file_load() zbatohet. .
    • Zbatimi i mbështetjes për sistemet 32-bit Armv4T dhe Armv5 është përshtatur për përdorim në ndërtimet universale të kernelit me shumë platforma të përshtatshme për sisteme të ndryshme ARM.
  • Virtualizimi dhe Siguria
    • Nënsistemi EFI zbaton aftësinë për të transferuar në mënyrë konfidenciale informacione sekrete te sistemet e mysafirëve pa ia zbuluar atë sistemit pritës. Të dhënat sigurohen përmes drejtorisë së sigurisë/coco në Securityfs.
    • Modaliteti i mbrojtjes nga bllokimi, i cili kufizon aksesin e përdoruesit rrënjë në kernel dhe bllokon shtigjet e anashkalimit të UEFI Secure Boot, ka eliminuar një boshllëk që lejonte anashkalimin e mbrojtjes duke manipuluar korrigjuesin e kernelit.
    • Të përfshira janë arna që synojnë përmirësimin e besueshmërisë dhe performancës së gjeneruesit të numrave pseudo të rastësishëm.
    • Kur ndërtohet duke përdorur Clang 15, zbatohet mbështetja për mekanizmin për randomizimin e strukturave të kernelit.
    • Mekanizmi Landlock, i cili ju lejon të kufizoni ndërveprimin e një grupi procesesh me mjedisin e jashtëm, ofron mbështetje për rregullat që ju lejojnë të kontrolloni ekzekutimin e operacioneve të riemërtimit të skedarëve.
    • Nënsistemi IMA (Integrity Measurement Architecture), i krijuar për të verifikuar integritetin e komponentëve të sistemit operativ duke përdorur nënshkrime dixhitale dhe hash, është kaluar në përdorimin e modulit fs-verity për verifikimin e skedarëve.
    • Logjika e veprimeve kur çaktivizon aksesin e paprivilegjuar në nënsistemin eBPF është ndryshuar - më parë të gjitha komandat e lidhura me thirrjen e sistemit bpf() ishin çaktivizuar, dhe duke filluar nga versioni 5.19, lihet qasja në komandat që nuk çojnë në krijimin e objekteve . Kjo sjellje kërkon një proces të privilegjuar për të ngarkuar një program BPF, por më pas proceset e paprivilegjuara mund të ndërveprojnë me programin.
    • Mbështetje e shtuar për shtesën AMD SEV-SNP (Secure Nested Paging), e cila siguron punë të sigurt me tabelat e faqeve të memories së mbivendosur dhe mbron nga sulmet "undeSErVed" dhe "SEVerity" në procesorët AMD EPYC, të cilët lejojnë anashkalimin e AMD SEV (Virtualizimi i Sigurt i Enkriptuar ) mekanizmi mbrojtës.
    • Mbështetje e shtuar për mekanizmin Intel TDX (Trusted Domain Extensions), i cili ju lejon të bllokoni përpjekjet e palëve të treta për të hyrë në kujtesën e koduar të makinave virtuale.
    • Drejtuesi virtio-blk, i përdorur për të imituar pajisjet e bllokut, ka shtuar mbështetje për I/O duke përdorur polling, i cili, sipas testeve, ka reduktuar vonesën me rreth 10%.
  • Nënsistemi i rrjetit
    • Paketa përfshin një seri arnimesh BIG TCP që ju lejojnë të rritni madhësinë maksimale të paketës së një pakete TCP në 4 GB për të optimizuar funksionimin e rrjeteve të qendrave të brendshme të të dhënave me shpejtësi të lartë. Një rritje e ngjashme në madhësinë e paketës me një madhësi të fushës së kokës 16-bit arrihet përmes zbatimit të paketave "jumbo", madhësia në kokën IP të të cilave është vendosur në 0, dhe madhësia aktuale transmetohet në një 32-bit të veçantë. fushë në një kokë të veçantë të bashkangjitur. Në testimin e performancës, vendosja e madhësisë së paketës në 185 KB rriti xhiron me 50% dhe uli ndjeshëm vonesën e transferimit të të dhënave.
    • Puna vazhdoi për integrimin e mjeteve në grupin e rrjetit për të gjurmuar arsyet e hedhjes së paketave (kodet e arsyes). Kodi i arsyes dërgohet kur memoria e lidhur me paketën lirohet dhe lejon situata të tilla si heqja e paketës për shkak të gabimeve të kokës, zbulimi i mashtrimit të filtrit rp, shuma e kontrollit të pavlefshme, jashtë memorjes, aktivizimi i rregullave IPSec XFRM, numri i pavlefshëm i sekuencës TCP, etj.
    • Mbështetje e shtuar për kthimin e lidhjeve MPTCP (MultiPath TCP) për të përdorur TCP të rregullt, në situata ku disa veçori MPTCP nuk mund të përdoren. MPTCP është një zgjatim i protokollit TCP për organizimin e funksionimit të një lidhjeje TCP me dërgimin e paketave njëkohësisht përgjatë disa rrugëve përmes ndërfaqeve të ndryshme të rrjetit të lidhura me adresa IP të ndryshme. U shtua API për të kontrolluar transmetimet MPTCP nga hapësira e përdoruesit.
  • Оборудование
    • U shtuan mbi 420 mijë rreshta kodi në lidhje me drejtuesin amdgpu, nga të cilat rreth 400 mijë rreshta janë skedarë të kokës të gjeneruar automatikisht për të dhënat e regjistrit ASIC në drejtuesin e GPU-së AMD, dhe 22.5 mijë linja të tjera ofrojnë zbatimin fillestar të mbështetjes për AMD SoC21. Madhësia totale e drejtuesve për GPU-të AMD tejkaloi 4 milion linja kodi. Përveç SoC21, drejtuesi AMD përfshin mbështetje për SMU 13.x (System Management Unit), mbështetje të përditësuar për USB-C dhe GPUVM dhe përgatitjet për mbështetjen e gjeneratave të ardhshme të platformave RDNA3 (RX 7000) dhe CDNA (AMD Instinct). .
    • Shoferi i915 (Intel) ka zgjeruar aftësitë në lidhje me menaxhimin e energjisë. Identifikues të shtuar për GPU-të Intel DG2 (Arc Alchemist) të përdorura në laptopë, ofruan mbështetje fillestare për platformën Intel Raptor Lake-P (RPL-P), informacion të shtuar për kartat grafike Arctic Sound-M), ABI të implementuar për motorët kompjuterikë, shtuar për Mbështetja e kartave DG2 për formatin Tile4; për sistemet e bazuara në mikroarkitekturën Haswell, është implementuar mbështetja DisplayPort HDR.
    • Drejtuesi Nouveau ka kaluar në përdorimin e mbajtësit drm_gem_plane_helper_prepare_fb; shpërndarja statike e memories është aplikuar në disa struktura dhe variabla. Sa i përket përdorimit të moduleve të kernelit me burim të hapur nga NVIDIA në Nouveau, puna e deritanishme ka të bëjë me identifikimin dhe eliminimin e gabimeve. Në të ardhmen, firmware-i i publikuar është planifikuar të përdoret për të përmirësuar performancën e shoferit.
    • U shtua një drejtues për kontrolluesin NVMe të përdorur në kompjuterët Apple bazuar në çipin M1.

Në të njëjtën kohë, Fondacioni i Software-it të Lirë të Amerikës Latine formoi një version të kernelit plotësisht të lirë 5.19 - Linux-libre 5.19-gnu, i pastruar nga elementët e firmuerit dhe drejtuesit që përmbajnë komponentë ose seksione kodi jo të lirë, fushëveprimi i të cilit është kufizuar nga prodhuesi. Publikimi i ri pastron drejtuesit për pureLiFi X/XL/XC dhe TI AMx3 Wkup-M3 IPC. Kodi i përditësuar i pastrimit të blobit në Silicon Labs WFX, AMD amdgpu, ngarkues imazhi periferik Qualcomm WCNSS, Realtek Bluetooth, Mellanox Spectrum, Marvell WiFi-Ex, Intel AVS, IFS, drejtues dhe nënsisteme pu3-imgu. Është zbatuar përpunimi i skedarëve të pemës së pajisjes Qualcomm AArch64. Mbështetje e shtuar për skemën e re të emërtimit të komponentëve të firmuerit Sound Open. Ndaloi pastrimin e shoferit të ATM Ambassador, i cili u hoq nga kerneli. Menaxhimi i pastrimit të blobit në HDCP dhe Mellanox Core është zhvendosur në etiketa të veçanta kconfig.

Burimi: opennet.ru

Shto një koment