Pas dy muajsh zhvillimi, Linus Torvalds prezantoi lëshimin e bërthamës Linux 6.14. Ndër ndryshimet më të dukshme janë: drejtuesi ntsync me primitivë të sinkronizimit Windows NT, rregullimi i balancimit të operacioneve të leximit në Btrfs RAID1, mbështetje për reflink në XFS në mënyrë reale, mundësia e hyrjes/jeshjes buffer pa cache, dmem cgroup për limitimin e memories GPU, angazhimi i io_uring në FUSE, delegimi i atributeve në NFS, mbështetje për regjistrim të atomike në Device mapper, përshpejtimi i lidhjeve simbolike, menaxhimi i mundësisë për ekzekutimin e skriptive, mbështetje për çipat Qualcomm Snapdragon 8 Elite, dhe drejtuesi për NPU AMD.
Në versionin e ri janë pranuar 12115 korrigjime nga 1984 zhvillues, madhësia e patch-it është 39 MB (ndryshimet prekin 10170 dosje, janë shtuar 531586 rreshta kodi, dhe janë fshirë 235999 rreshta). Në lëshimin e kaluar ishin 14172 korrigjime nga 2086 zhvillues, madhësia e patch-it ishte 46 MB. Rreth 41% e të gjitha ndryshimeve të paraqitura në 6.14 lidhen me drejtuesit e pajisjeve, rreth 13% e ndryshimeve kanë të bëjnë me përditësimin e kodit specifik për arkitekturat harduerike, 14% lidhen me grykat e rrjetit, 7% me sistemet e skedarëve dhe 4% me nën-sistemat e brendshme të bërthamës.
Kryesore të reja në bërthamën 6.14:
- Sistemi i disqeve, hyrja/ dalje dhe sistemet e skedarëve
- Në sistemin e skedarëve Btrfs është shtuar mbështetje për metoda të reja të balancimit të operacioneve të leximit midis depozitave që janë pjesë e sistemit RAID1. Përveç shpërndarjes së ngarkesës bazuar në identifikuesit e proceseve (pid), versioni i ri ofron tri moda të reja balancimi: "rotation" (shpërndarje e barabartë e ngarkesës në të gjitha depozitë, modaliteti është aktivuar si parazgjedhje); "latency" (shpërndarje me marrjen parasysh të vonesave, e cila mund të jetë e dobishme gjatë defekteve ose punës jo të qëndrueshme të depozitave); devid (menaxhim manual). Për të ndryshuar modalitetin e balancimit është shtuar ndërfaqja "/sys/fs/btrfs//read_policy". Ndër ndryshimet e tjera në Btrfs është realizimi i ioctl FS_IOC_READ_VERITY_METADATA.
- Shtesa e një mënyre të pa-cache për futje/dalje, ku të dhënat hiqen nga kujtesa e faqes menjëherë pasi të përfundojnë operacionet për leximin ose shkrimin e tyre. Ky ndryshim mund të jetë i dobishëm kur përdoren pajisje ruajtjeje shumë të shpejta, ku caching i operacioneve në kujtesë është i tepërt. Për këto pajisje, mënyra e re lejon përjashtimin e shpenzimeve të tepruara të kujtesës nga cache i faqes pa përdorur një API të komplikueshme për futje/dalje të drejtpërdrejtë (Direct I/O).
- Në fsnotify, mekanizmi për ndjekjen e ndryshimeve në FS, është shtuar një ngjarje e re FS_PRE_ACCESS, e cila gjenerohet në fazën përpara aksesit në përmbajtjen e skedarit. Ngjarja përpunohen në mënyrë sinkrone, dmth. bërthama dërgon ngjarjen dhe pret përgjigjen. Nëse përgjigjia merret, operacioni ekzekutohet, dhe nëse ndodh një dështim, thirrja sistemike kthehet në hapësirën e përdoruesit me një kod gabimi. Me ndihmën e FS_PRE_ACCESS, një proces në hapësirën e përdoruesit mund të organizojë mbushjen e skedarit ndërsa të dhënat janë gati në një ruajtje të ngadaltë.
- Në nën-sistemin FUSE, që lejon krijimin e implementimeve të sistemeve të skedarëve në hapësirën e përdoruesit, është shtuar mbështetje për shkëmbimin e të dhënave midis bërthamës dhe trajtuesit në hapësirën e përdoruesit duke përdorur mekanizmin e futjes/daljes io_uring. Ky ndryshim lejon përmirësimin e performancës së FUSE duke reduktuar kalimet e kontekstit midis bërthamës dhe hapësirës së përdoruesit.
- Në sistemin e skedarëve XFS është shtuar mundësia e përdorimit të back mapping (rmap, reverse-mapping) në modalitetin e punës me vonesa të parashikueshme („realtime device“). Back mapping lejon të përcaktohet për ruajtjen e cilit skedar përdoret blloku i caktuar në pajisjen e ruajtjes. Me ndihmën e rmap në XFS, për modalitetin realtime është implementuar mbështetje për operacionin reflink, i cili lejon krijimin e kopjeve të skedarëve duke klonuar metadat dhe krijuar një lidhje me të dhënat që tashmë janë në dispozicion pa i kopjuar ato në mënyrë efektive.
- Në VFS është implementuar një cache për madhësinë e lidhjeve simbolike, e cila ka lejuar një rritje prej 1.5% në shpejtësinë e ekzekutimit të operacionit readlink (në testin me /initrd.img në ext4). Cache është aktivizuar në FS ext4 dhe tmpfs.
- Në implementimin e NFSv4.2 është shtuar mbështetje për delegimin e atributeve të skedarëve, e cila lejon menaxhimin e atributeve të tilla si koha e modifikimit (mtime) në anën e klientit NFS, pa pasur nevojë të rikthehen ndryshimet në server. Në NFS gjithashtu është përmirësuar mbështetja për protokollin "LOCALIO", e cila përcakton nëse klienti dhe serveri NFS ndodhen në të njëjtin host, për të aktivizuar optimizime përkatëse, si përdorimi i input/output direkt (Direct I/O) nga klienti.
- Përmirësuar performanca e operacioneve të leximit në sistemet e skedarëve NETFS, CIFS dhe AFS (Andrew File System).
- Në Squashfs është përfshirë një mod i ngarkimit direkt të bllokimeve në cached letër (SQUASHFS_FILE_DIRECT), i cili lejon të anashkalohet një cached ndarës read_page. Ky ndryshim ka lejuar të reduktohet madhësia e memories së përdorur gjatë punës me Squashfs.
- Në thirrjen e sistemit statx() është implementuar flaga STATX_DIO_READ_ALIGN, për të përcaktuar kërkesën për rregullimin e operacioneve të leximit nga skedari.
- Në sistemin e skedarëve Bcachefs është përmirësuar dhe stabilizuar formati i strukturave të diskut. Çdo ndryshim i mëtejshëm i formatit do të konsiderohet si opsional dhe do të implementohet në formën e shtesave opsionale. Shpejtësia e verifikimit të integritetit të FS është rritur ndjeshëm. Përveç kësaj, në Bcachefs është përmirësuar funksionimi në modin vetëm për lexim; janë eliminuar problemet që çojnë në qasje në memorie pas lirimit të saj (use after free); janë zgjidhur problemet me referencat reflink në fsck; është rregulluar trajtimi i rinisjes së transaksionit.
- Moduli md-linear është rikthyer, i destinuar për të bashkuar pajisjet e bllokut. Ky modul ishte shpallur më parë si i vjetruar dhe ishte fshirë nga bërthama 6.8, por siç duket, ishte kërkuar dhe prandaj tani është rikthyer.
- Sistemet e skedarëve F2FS dhe SQUASHFS janë kaluar në përdorimin e fletëve të faqes së memories (page folios).
- Sistemet e skedarëve OCFS2 dhe DLMFS janë kaluar në përdorimin e API-t të ri për montimin e pjesëve.
- Në driverin null_blk është implementuar atributi "rotational", i cila vendoset përmes configfs dhe lejon simulimin e punës me një pajisje të bazuar në disqe rotative për të thjeshtuar testimin e funksioneve të bërthamës.
- Në sistemin e mapimit të pajisjeve dhe në modulet dm-mirror, dm-io, dm-table, dm-linear, dm-stripe dhe dm-raid1 është implementuar mbështetje për shkruarjen atomike.
- Memorie dhe shërbime sistemike
- Integrimi në thelbin e driver-it ntsync është përfunduar, i cili implementon pajisjen simbolike /dev/ntsync dhe një grup primitivash për sinkronizimin e përdorur në thelbin e Windows NT. Realizimi i këtyre primitiveve në nivelin e thelbit lejon një rritje të dukshme të performancës së lojërave Windows që ekzekutohen me ndihmën e Wine. Rritja e performancës arrihet duke eliminuar shpenzimet e lidhura me përdorimin e RPC në hapësirën e përdoruesit. Krijimi i një driver-i të veçantë për thelbin e Linux shpjegohet nga vështirësia e implementimit të saktë të API-së së sinkronizimit NT mbi primitive ekzistuese në thelb.
- Shtuar një kontrolues të ri cgroup DMEM për llogaritjen e ndarë të zonave të memories së pajisjeve, siç është GPU. DMEM lejon krijimin e cgroup-eve të veçanta për detyra të ndryshme që punojnë me GPU, në mënyrë që ato të mund të ekzekutohen pa ndikim mbi njëra-tjetrën. Kjo mundësi e re zgjidh problemin e përfundimit të detyrave me GPU kur memorja e disponueshme përfundon, duke llogaritur ndihmën e reflektuar të memories së GPU dhe memories së përdorur nga driver-at e CPU në cgroup-e të veçanta.
- Optimizimet janë bërë në skalimin e operacionit të pastrimit (flush) të caches TLB (Translation Lookaside Buffer), që përdoret për të përshpejtuar konvertimin e adresave virtuale në fizike. Optimizimet e reja përfshijnë përditësimin e vonuar të disa strukturave të dhënash gjatë kalimit të kontekstit, duke lejuar përmirësimin e performancës gjatë kalimit të disa provave.
- Performanca e mekanizmit MGLRU (Multi-Generational LRU) është rritur, i cili përdoret për të identifikuar cilat faqe memorije përdoren dhe cilat mund të shkarkohen në hapësirën e shkarkimit.
- Nuk është vazhduar transferimi i ndryshimeve nga dega Rust-for-Linux, që lidhen me përdorimin e gjuhës Rust si gjuhë e dytë për zhvillimin e drejtpërsëdrejti dhe moduleve të bërthamës (mbështetje Rust nuk është aktivizuar nga parazgjedhja, dhe nuk çon në përfshirjen e Rust në varësitë e detyrueshme ndërtuese për bërthamën). Është ofruar mundësia e përdorimit në kodin e bërthamës të makros "derive(CoercePointee)", që lejon përdorimin e treguesve të mençur me objekte trait. Në bërthamë janë përfshirë mbështetje Rust për PCI, platforma, Open Firmware, pajisje simbolike dhe disa funksione hyrëse/dalëse. Greg Kroah-Hartman, përgjegjës për mbështetje e degës stabile të bërthamës Linux, e karakterizoi gjendjen aktuale si "gati për të shkruar një drejtues të vërtetë në Rust".
- Në skenarët e ndërtimit është propozuar një kod i ri për gjenerimin e versioneve të simboleve të debugimit për modulët e ngarkueshëm, i cili tani përdor informacion nga regjistrat e debugimit në formatin DWARF, në vend që të analizojë kodin burimor drejtpërdrejt. Ky ndryshim lejon aplikimin e versionimit të simboleve të debugimit për modulët e shkruar në gjuhën Rust. Implementimi i vjetër gjithashtu është lënë në bërthamë, dhe zgjedhja e gjeneratorit bëhet në nivelin e mundësive të ndërtimit.
- Për arkitekturën PowerPC është realizuar mbështetje për modin e shpërndarjes së ngadalshme të detyrave (PREEMPT_LAZY, heqje e ngadaltë), i cili korrespondon me modin e plotë të shpërndarjes («full preemption») për detyrat realtime (RR/FIFO/DEADLINE), por vonon shpërndarjen e detyrave të zakonshme (SCHED_NORMAL) deri në kufirin e tikave.
- Në nën-sistemin e profilizimit të performancës "perf" është shtuar mbështetje për numëruesit e konsumit të energjisë për procesorët AMD. Është ofruar mundësia e punës në sisteme me deri në 2048 bërthama CPU.
- Është ofruar mundësia e përdorimit të parametrave sysctl pid_max me hapësira identitetesh të procesit (ID namespace). Parametri pid_max është i destinuar për të kufizuar vlerën maksimale të identifikatorëve të proceseve (PID) dhe tani mund të përdoret për të kufizuar numrin maksimal të proceseve të ekzekutuara në hapësirën e caktuar identitetesh. Trajtimi i parametrave kryhet në mënyrë hierarkike, dmth. kufizimet në hapësirat e jashtme identitetesh zgjaten në hapësirat e brendshme identitetesh.
- Kur përdoret për të nisur procesin e thirrjes sistemike execveat në sistemin e skedarëve /proc, tani do të shfaqet emri i skedarit të nisur, jo numri i descriptor-it të skedarit.
- Në kodin burimor të bërthamës (në katalogun samples/vfs) është shtuar utilitarja mountinfo, e cila demostrim përdorimin e thirrjeve sistemike statmount() dhe listmount().
- Në nën-sistemin BPF janë propozuar funksionet e reja bpf_local_irq_save() dhe bpf_local_irq_restore() për të çaktivizuar përkohësisht ndërprerjet në CPU-në lokale. Funksionet mund të përdoren për të implementuar struktura, trajtimi i të cilave nuk pezullohet nga ndërprerjet.
- Në thirrjen sistemike madvise() me përdorimin e flagjeve MADV_DONTNEED dhe MADV_FREE, është siguruar çlirimi i tabelave të faqeve të memories që lidhen me intervalin e adresave që po çlirohen, pasi në disa situata faqet e zbrazëta të memories mund të zënë një sasi të konsiderueshme memorjeje.
- Për arkitekturën OpenRISC është implementuar mbështetje për mekanizmin e sekuencave të ri-nisura (rseq, restartable sequences), i cili është i destinuar për realizimin e shpejtë të operacioneve atomike, të cilat në rastin e një ndërprerjeje nga një proces tjetër pastrohen dhe përpiqen sërish për të u ekzekutuar.
- Është bërë një reorganizim i kodit me implementimin e algoritmave CRC32 dhe CRC-T10DIF, i cili nuk përplaset më me nën-sistemin crypto dhe thirret drejtpërdrejt nga interfaci i bibliotekës. Ndryshimi ka mundësuar thjeshtimin e kodit dhe rritjen e efikasitetit të tij.
- Në sistemin e hyrjes/shtypjes asinkrone io_uring është shtuar një ndërfaqe për të transmetuar metadatat shtesë mbi integritetin gjatë ekzekutimit të operacioneve të leximit dhe shkruarjes.
- Virtualizimi dhe siguria
- Në thirrjen sistemore execveat është shtuar flagu AT_EXECVE_CHECK, i cili lejon të kontrollohet lejueshmëria e ekzekutimit të skedarëve pa i nisur ata në të vërtetë, por duke marrë parasysh politike të sigurisë, të drejtat e qasjes dhe modulet aktive LSM. Për t'u përdorur në kombinim me AT_EXECVE_CHECK, janë propozuar flagët securebit SECBIT_EXEC_RESTRICT_FILE dhe SECBIT_EXEC_DENY_INTERACTIVE, të cilat mund të përdoren për të kufizuar ekzekutimin e skedarëve me skripte në gjuhë programimi të interpretuara. Flagi SECBIT_EXEC_RESTRICT_FILE kërkon nga kompiluesit dhe interpretuësit të përdorin opsionin AT_EXECVE_CHECK për të kontrolluar lejueshmërinë e ekzekutimit, ndërsa flagi SECBIT_EXEC_DENY_INTERACTIVE ndalon përpunimin e komandave interaktive. Ideja kryesore e ndryshimit qëndron në mundësinë e aplikimit të politikave të sigurisë jo vetëm për skedarët tradicionalë ekzekutues, por edhe për skedarët tekstualë me skripte, që mund të ngarkohen përmes nisjes së interpretorit (dmth. ndalimi i ekzekutimit mund të realizohet jo vetëm gjatë nisjes '. /script.sh' por edhe gjatë ekzekutimit në formën 'sh script.sh').
- Në sistemet x86 është realizuar mbështetje për numra të mbrojtur të kohës për sistemet mysafir, të cilat nuk lejojnë të ndryshojnë oraret sistemore të sistemit mysafir nga ambienti pritës. Ky mundësi është realizuar mbi bazën e mekanizmit AMD SEV (Secure Encrypted Virtualization), i përdorur në sistemet e virtualizimit për mbrojtje makinat virtuale nga ndërhyrja e hipervizorit ose administratori të sistemit pritës.
- Në sistemin e kontrollit të aksesit me mandat SELinux është shtuar mbështetje për rregullat xperm, të cilat lejojnë lidhjen e politikave SELinux me thirrje të caktuara ioctl() ose mesazhe netlink.
- Për nënshkrimin e moduleve të bërthamës me nënshkrim digjital, algoritmi SHA512 është aktivizuar si standard në vend të SHA1.
- Në driverat për sistemet mysafir VirtualBox është përfshirë mbështetje për arkitekturën ARM64.
- Në hipervizor KVM është vazhduar puna për angazhimin e mekanizmit Intel TDX (Trusted Domain Extensions) për enkriptimin e memories së sistemeve mysafir.
- Në virtio_blk është shtuar mbështetje për modalitetin e rikuperimit të gabimeve.
- Sistemi rrjetor
- Në realizimin e protokollit RxRPC ka lindur mundësia e përdorimit të kadrove të mëdha UDP për të rritur kapacitetin e kalimit.
- Për TCP është shtuar mbështetje për algoritmin RACK-TLP për identifikimin e humbjeve të paketeve.
- Shtesa e parametrit të ri sysctl tcp_tw_reuse_delay, i cili vepron në lidhje me hapësirën e emrave (network namespace) dhe lejon përcaktimin e vonesës që krijohet para se sistemi të mund të përdorë përsëri numrin e portit rrjetit pas mbylljes së soketit TCP.
- Shtesa e mundësisë për të zgjedhur ofruesin e saktë të kohës (PTP) për formimin e vulave të kohës në nivelet PHY dhe MAC.
- Për IPsec është implementuar mbështetje për mekanizmin e agregatizimit dhe fragmentimit të paketave IP të inkapsuluara — IP-TFS/AGGFRAG (IP Traffic Flow Security/Aggregation and Fragmentation Mode for Encapsulating Security Payload).
- Në sistemin e soketeve rrjet, është shtuar mbështetje për transmetimin e informacionit mbi prioritetin (SO_PRIORITY) në formën e mesazheve kontrolluese (cmsg — control messages). Për soketet rrjet është shtuar opsioni SO_RCVPRIORITY, i cili përfshin në funksionet recvmsg() transmetimin e informacionit mbi prioritetin e soketit.
- Pajisje
- Shtesa e drejtorit amdxdna për akceleratorët e integruar NPU (Neural Processing Unit) në CPU-në AMD, të bazuar në arkitekturën XDNA, të destinuar për të aceleruar operacionet e lidhura me mësimin e makinerive. NPU e bazuar në arkitekturën XDNA ofrohet në seritë 7040 dhe 8040 të proceseve AMD Ryzen, akeleratorët AMD Alveo V70 dhe SoC AMD Versal.
- Në drejtorin i915 janë shtuar identifikatorët e GPU-ve të reja, është realizuar një trajtim për dështimet në iniciimin e HDMI-së, dhe është përmirësuar qëndrueshmëria e rindizjes së motorëve të GPU-ve në sistemet Haswell dhe më të vjetra.
- Punimet mbi drejtorin drm (Direct Rendering Manager) Xe për GPU-të e bazuara në arkitekturën Intel Xe vazhdojnë, e cila përdoret në kartat grafike Intel të familjes Arc dhe grafikën e integruar, duke filluar nga procesorët Tiger Lake.
- Në drejtorin Nouveau është shtuar mundësia për të transmetuar buferët me logjet GSP-RM përmes debugfs.
- Në drejtorin AMDGPU është implementuar mbështetje për mekanizmin DRM panic, i cili tregon një pamje të ngjashme me «ekranin blu të vdekjes» në rast dështimi. Punimet vazhdojnë për mbështetje të serisë së ardhshme të kartave grafike Radeon RX 9000 të bazuara në arkitekturën RDNA4. Është përmirësuar mbështetja për DCN 3.5, GG 9.5, IH 4.4, PSP 13.x, SMU 13.x, VCN 5.x, JPEG 5.x, GC 12.x, DC FAMS, RAS dhe ISP.
- Në drejtorin DRM msm (GPU Qualcomm Adreno) është shtuar mbështetje për platformën Qualcomm SM6150 (QCS615).
- Në drejtorin DRM panfrost është shtuar mbështetje për SoC MediaTek MT8188 me GPU Mali-G57.
- Në drejtorin DRM vc4 është shtuar mbështetje për SoC Broadcom BCM2712 (Raspberry Pi 5).
- Në drejtorin vfio nvgrace-gpu është shtuar mbështetje për çipet NVIDIA Grace Blackwell 200.
- Në përbërje është përfshirë një drejtues për kontrollet Intel THC (Touch Host Controller), i përdorur për ndërveprimin me ekrane Prej dhe touchpad në disa laptopë. Është shtuar mbështetje për pajisjet Wacom me ndërfaqe PCI. Është shtuar mbështetje për kontrollet e lojërave QH Electronics.
- Është shtuar mbështetje për platformat ARM, SoC dhe pajisje: Qualcomm Snapdragon 8 Elite (SM8750), Qualcomm Snapdragon AR2 (SAR2130P), Qualcomm IQ6/IQ8, Snapdragon 425 (MSM8917), Samsung Exynos 9810, Blaize BLZP1600, Microchip SAMA7D65, Renesas R-Car V4H ES3.0, Renesas RZ/G3E. Është shtuar mbështetje për SoC SpacemiT K1 mbi arkitekturën RISC-V.
- Në sistemin audio ALSA për MIDI 2.0 janë zgjeruar API-të rawmidi dhe sequencer. Në API për të jashtme operacioneve të kompresionit është shtuar mbështetje për ASRC (Asynchronous Sample Rate Conversion).
- Është shtuar mbështetje për sistemet audio të pajisjeve Allwinner suinv F1C100s, Awinc AW88083, Realtek ALC5682I-VE, TAS2781, Focusrite Scarlett 4th Gen 16i16, 18i16 dhe 18i20. Është shtuar mbështetje për kufjet wireless SteelSeries Arctis 9.
Burimi: opennet.ru
