Lëshimi i kernelit Linux 6.0

Pas dy muajsh zhvillimi, Linus Torvalds prezantoi lëshimin e kernelit Linux 6.0. Ndryshimi i rëndësishëm në numrin e versionit është për arsye estetike dhe është një hap formal për të lehtësuar shqetësimin e grumbullimit të një numri të madh çështjesh në seri (Linus tha me shaka se arsyeja e ndryshimit të numrit të degës kishte më shumë gjasa se atij po i mbaronin gishtat dhe gishtat e këmbëve për të numëruar numrat e versioneve) . Ndër ndryshimet më të dukshme: mbështetja për shkrimin me bufer asinkron në XFS, drejtuesi i bllokut ublk, optimizimi i planifikuesit të detyrave, një mekanizëm për verifikimin e funksionimit të saktë të kernelit, mbështetje për shifrën e bllokut ARIA.

Risitë kryesore në kernel 6.0:

  • Nënsistemi i diskut, I/O dhe sistemet e skedarëve
    • Sistemi i skedarëve XFS ka shtuar mbështetje për shkrimet asinkrone të buferuara duke përdorur mekanizmin io_uring. Testet e performancës të kryera duke përdorur mjete fio (1 fije, madhësia e bllokut 4 kB, 600 sekonda, shkrimi vijues) tregojnë një rritje të operacioneve hyrëse/dalëse për sekondë (IOPS) nga 77k në 209k, shpejtësia e transferimit të të dhënave nga 314MB/s në 854MB/s, dhe një rënie në latente nga 9600ns në 120ns (80 herë).
    • Sistemi i skedarëve Btrfs zbaton një version të dytë të protokollit për komandën "dërgo", i cili zbaton mbështetje për meta të dhëna shtesë, duke dërguar të dhëna në blloqe më të mëdha (më shumë se 64K) dhe duke transmetuar shtrirje në formë të ngjeshur. Performanca e operacioneve të leximit të drejtpërdrejtë është rritur ndjeshëm (deri në 3 herë) për shkak të leximit të njëkohshëm të deri në 256 sektorë. Reduktoi mosmarrëveshjen e bllokimit dhe përshpejtoi kontrollin e meta të dhënave duke reduktuar meta të dhënat e rezervuara për elementët e shtyrë.
    • Operacionet e reja ioctl EXT4_IOC_GETFSUUID dhe EXT4_IC_SETFSUUID janë shtuar në sistemin e skedarëve ext4 për të tërhequr ose vendosur UUID të ruajtur në superblock.
    • Sistemi i skedarëve F2FS ofron një modalitet të ulët të konsumit të memories, i cili optimizon funksionimin në pajisjet me një sasi të vogël RAM dhe ju lejon të zvogëloni konsumin e kujtesës me koston e reduktimit të performancës.
    • Mbështetje e shtuar për vërtetimin e disqeve NVMe.
    • Serveri NFSv4 zbaton një kufi në numrin e klientëve aktivë, i cili vendoset si 1024 klientë të vlefshëm për çdo gigabajt RAM në sistem.
    • Zbatimi i klientit CIFS ka përmirësuar performancën në mënyrën e transmetimit me shumë kanale.
    • Një flamur i ri FAN_MARK_IGNORE është shtuar në nënsistemin e gjurmimit të ngjarjeve në fanotify FS për të injoruar ngjarje specifike.
    • Në Overlayfs FS, kur montohet në krye të një FS me hartën e ID-së së përdoruesit, ofrohet mbështetje e saktë për listat e kontrollit të aksesit në përputhje me POSIX.
    • U shtua drejtuesi i bllokut ublk, i cili lëviz logjikën specifike në anën e procesit të sfondit në hapësirën e përdoruesit dhe përdor nënsistemin io_uring.
  • Shërbimet e kujtesës dhe sistemit
    • Karakteristika të reja janë shtuar në nënsistemin DAMON (Data Access MONitor), duke lejuar jo vetëm monitorimin e aksesit të procesit në RAM nga hapësira e përdoruesit, por edhe të ndikojë në menaxhimin e kujtesës. Në veçanti, është propozuar një modul i ri "LRU_SORT", i cili siguron rigrupimin e listave LRU (më së paku të përdorura së fundmi) për të rritur përparësinë e faqeve të caktuara të memories.
    • Aftësia për të krijuar rajone të reja memorie është zbatuar duke përdorur aftësitë e autobusit CXL (Compute Express Link), i përdorur për të organizuar ndërveprimin me shpejtësi të lartë midis CPU-së dhe pajisjeve të memories. CXL ju lejon të lidhni rajone të reja memorie të ofruara nga pajisjet e jashtme të memories dhe t'i përdorni ato si burime shtesë të hapësirës fizike të adresave për të zgjeruar kujtesën e sistemit me akses të rastësishëm (DDR) ose kujtesën e përhershme (PMEM).
    • Zgjidhën problemet e performancës me procesorët AMD Zen të shkaktuara nga kodi i shtuar 20 vjet më parë për të zgjidhur një problem harduer në disa çipa (një udhëzim shtesë WAIT u shtua për të ngadalësuar procesorin, në mënyrë që çipseti të kishte kohë të kalonte në gjendje boshe). Ndryshimi rezultoi në reduktim të performancës nën ngarkesat e punës që shpesh alternojnë midis gjendjeve të papunë dhe të zënë. Për shembull, pas çaktivizimit të zgjidhjes, rezultatet mesatare të testit tbench u rritën nga 32191 MB/s në 33805 MB/s.
    • Kodi me heuristikë që siguron migrimin e proceseve në CPU-të më pak të ngarkuara, duke marrë parasysh fitimin e parashikuar në konsumin e energjisë, është hequr nga planifikuesi i detyrave. Zhvilluesit arritën në përfundimin se heuristika nuk ishte aq e dobishme sa duhet të ishte dhe se ishte më e lehtë për ta hequr atë dhe për të migruar proceset pa vlerësim shtesë sa herë që një migrim i tillë mund të rezultojë në konsum më të ulët të energjisë (për shembull, kur CPU-ja e synuar është në niveli më i ulët i fuqisë). Çaktivizimi i heuristikës çoi në një ulje të konsumit të energjisë gjatë kryerjes së detyrave intensive, për shembull, në testin e dekodimit të videos, konsumi i energjisë u ul me 5.6%.
    • Shpërndarja e detyrave nëpër bërthamat e CPU-së në sisteme të mëdha është optimizuar, gjë që ka përmirësuar performancën për lloje të caktuara të ngarkesës së punës.
    • Ndërfaqja asinkrone I/O io_uring ofron një flamur të ri, IORING_RECV_MULTISHOT, i cili ju lejon të përdorni modalitetin multi-shot me thirrjen e sistemit recv() për të kryer operacione të shumta leximi nga e njëjta prizë rrjeti menjëherë. io_uring gjithashtu mbështet transferimin e rrjetit pa buferim të ndërmjetëm (zero-kopje).
    • Zbatoi aftësinë për të vendosur programet BPF të bashkangjitura me uprobe në gjendje gjumi. BPF shton gjithashtu një ksym të ri iterator për të punuar me tabelat e simboleve të kernelit.
    • Ndërfaqja e vjetëruar "efivars" në sysfs, e destinuar për qasje në variablat e nisjes UEFI, është hequr (FS virtuale efivarfs tani përdoret universalisht për të hyrë në të dhënat EFI).
    • Programi perf ka raporte të reja për analizimin e konflikteve të bllokimit dhe kohën e kaluar nga procesori për ekzekutimin e komponentëve të kernelit.
    • Cilësimi CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3 është hequr, gjë që lejoi që kerneli të ndërtohej në modalitetin e optimizimit "-O3". Vërehet se eksperimentet me mënyrat e optimizimit mund të kryhen duke kaluar flamuj gjatë montimit ("bëni KCFLAGS=-O3") dhe shtimi i një cilësimi në Kconfig kërkon një profilim të përsëritshëm të performancës, duke treguar se shpërbërja e lakut të përdorur në modalitetin "-O3" jep një përfitim në krahasim me nivelin e optimizimit “-O2”.
    • Një ndërfaqe e korrigjimit të gabimeve është shtuar për të marrë informacion në lidhje me funksionimin e "tkurrësve të memories" individuale (trajtuesit thirren kur nuk ka memorie të mjaftueshme dhe strukturat e të dhënave të paketimit të kernelit për të reduktuar konsumin e memories së tyre).
    • Për arkitekturat OpenRISC dhe LoongArch, është implementuar mbështetja për autobusin PCI.
    • Për arkitekturën RISC-V, shtesa "Zicbom" është zbatuar për të menaxhuar pajisjet me DMA që nuk është koherente me cache.
  • Virtualizimi dhe Siguria
    • Një mekanizëm verifikimi RV (Runtime Verification) është shtuar për të verifikuar funksionimin e saktë në sisteme shumë të besueshme që garantojnë asnjë dështim. Verifikimi kryhet në kohën e ekzekutimit duke i bashkangjitur mbajtësit në pikat e gjurmimit që kontrollojnë progresin aktual të ekzekutimit kundrejt një modeli deterministik referimi të paracaktuar të makinës që përcakton sjelljen e pritshme të sistemit. Verifikimi me modelin në kohën e ekzekutimit pozicionohet si një metodë më e lehtë dhe e lehtë për t'u zbatuar për të konfirmuar korrektësinë e ekzekutimit në sistemet kritike, duke plotësuar metodat klasike të verifikimit të besueshmërisë. Ndër avantazhet e RV është aftësia për të siguruar verifikim të rreptë pa një zbatim të veçantë të të gjithë sistemit në një gjuhë modelimi, si dhe përgjigje fleksibël ndaj ngjarjeve të paparashikuara.
    • Komponentët e integruar të kernelit për menaxhimin e enklavave bazuar në teknologjinë Intel SGX2 (Software Guard eXtensions), e cila lejon aplikacionet të ekzekutojnë kodin në zona të izoluara të koduara të memories, në të cilat pjesa tjetër e sistemit ka akses të kufizuar. Teknologjia Intel SGX2 mbështetet në çipat Intel Ice Lake dhe Gemini Lake dhe ndryshon nga Intel SGX1 në udhëzimet shtesë për menaxhimin dinamik të memories së enklavave.
    • Për arkitekturën x86, është zbatuar aftësia për të transferuar farën për gjeneruesin e numrave pseudorandom përmes cilësimeve të ngarkuesit.
    • Moduli SafeSetID LSM tani ka aftësinë për të menaxhuar ndryshimet e bëra përmes thirrjes setgroups(). SafeSetID lejon shërbimet e sistemit të menaxhojnë në mënyrë të sigurt përdoruesit pa privilegje të përshkallëzuara (CAP_SETUID) dhe pa fituar privilegje rrënjësore.
    • Mbështetje e shtuar për shifrën e bllokut ARIA.
    • Moduli i menaxhimit të sigurisë i bazuar në BPF ofron mundësinë për të bashkangjitur mbajtësit në procese individuale dhe grupe procesesh (cgrupe).
    • Një mekanizëm me një implementim mbikëqyrës është shtuar për të zbuluar problemet e sistemeve të ftuar bazuar në monitorimin e aktivitetit të vCPU.
  • Nënsistemi i rrjetit
    • Trajtuesit për gjenerimin dhe kontrollin e kukive SYN janë shtuar në nënsistemin BPF. Gjithashtu është shtuar një grup funksionesh (kfunc) për aksesin dhe ndryshimin e gjendjes së lidhjeve.
    • Stacki me valë ka shtuar mbështetje për mekanizmin MLO (Multi-Link Operation), i përcaktuar në specifikimin WiFi 7 dhe i lejon pajisjet të marrin dhe dërgojnë njëkohësisht të dhëna duke përdorur breza dhe kanale të ndryshme frekuencash, për shembull, për të vendosur njëkohësisht disa kanale komunikimi midis një pikë aksesi në një pajisje klienti.
    • Performanca e protokollit TLS të integruar në kernel është përmirësuar.
    • U shtua një opsion i linjës së komandës kernel "hostname=" për të lejuar që emri i hostit të vendoset në fillim të procesit të nisjes, përpara se të nisin komponentët e hapësirës së përdoruesit.
  • Оборудование
    • Drejtuesi i i915 (Intel) ofron mbështetje për kartat video diskrete Intel Arc (DG2/Alchemist) A750 dhe A770. Është propozuar një zbatim fillestar i mbështetjes për GPU-të Intel Ponte Vecchio (Xe-HPC) dhe Meteor Lake. Puna vazhdon për të mbështetur platformën Intel Raptor Lake.
    • Drejtuesi amdgpu vazhdon të ofrojë mbështetje për platformat AMD RDNA3 (RX 7000) dhe CDNA (Instinct).
    • Shoferi Nouveau ka ripunuar kodin e mbështetjes për motorët e ekranit GPU NVIDIA nv50.
    • U shtua drejtues i ri logicvc DRM për ekranet LogiCVC.
    • Drejtuesi v3d (për Broadcom Video Core GPU) mbështet bordet Raspberry Pi 4.
    • Mbështetje e shtuar për Qualcomm Adreno 619 GPU në drejtuesin e msm.
    • Mbështetja e shtuar për ARM Mali Valhall GPU në drejtuesin Panfrost.
    • U shtua mbështetje fillestare për procesorët Qualcomm Snapdragon 8cx Gen3 të përdorur në laptopët Lenovo ThinkPad X13s.
    • U shtuan drejtues zëri për platformat AMD Raphael (Ryzen 7000), AMD Jadeite, Intel Meteor Lake dhe Mediatek MT8186.
    • Mbështetje e shtuar për përshpejtuesit e mësimit të makinerisë Intel Habana Gaudi 2.
    • Mbështetje e shtuar për ARM SoC Allwinner H616, NXP i.MX93, Sunplus SP7021, Nuvoton NPCM8XX, Marvell Prestera 98DX2530, Google Chameleon v3.

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ë 6.0 - Linux-libre 6.0-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 çaktivizon përdorimin e blobs në drejtuesin CS35L41 HD-audio dhe drejtuesin UCSI për mikrokontrolluesit STM32G0. Skedarët DTS për çipat Qualcomm dhe MediaTek janë pastruar. Çaktivizimi i blobs në drejtuesin MediaTek MT76 është ripunuar. Kodi i përditësuar i pastrimit të blobit në drejtuesit dhe nënsistemet AMDGPU, Adreno, Tegra VIC, Netronome NFP dhe Habanalabs Gaudi2. Ndaloi pastrimin e drejtuesit të VXGE, i cili u hoq nga kerneli.

Burimi: opennet.ru

Shto një koment