Pas dy muajsh zhvillimi, Linus Torvalds lëshimi i kernelit . Në mesin e ndryshimeve më të dukshme: realizimi i ri i FS exFAT, moduli bareudp për krijimin e tunelove UDP, mbrojtje e bazuar në autentifikimin e treguesve për ARM64, mundësia për të bashkangjitur programet BPF në trajtuesit e LSM, realizimi i ri i Curve25519, detektori "split-lock", kompatibiliteti BPF me PREEMPT_RT, heqja e kufizimit të madhësisë 80-shkronjëshe të vargjeve në kod, përllogaritja e temperaturës së CPU në planifikuesin e detyrave, mundësia për të përdorur clone() për të krijuar procese në një grup tjetër cgroup, mbrojtje nga shkrimi në memorje përmes userfaultfd.
Në versionin e ri janë pranuar 15033 korrigjime nga 1961 zhvillues
, madhësia e patch-it është 39 MB (ndryshimet preknin 11590 skedarë, u shtuan 570560 rreshta kodi,
u hoqën 297401 rreshta). Rreth 41% e të gjithë ndryshimeve të paraqitura në 5.7
lidhen me drejtuesit e pajisjeve, rreth 16% e ndryshimeve kanë
ka lidhje me përditësimin e kodit specifik për arkitekturat harduerike, 13%
të bëjnë me grilën e rrjetit, 4% - me sistemet e skedareve dhe 4% me të brendshmet
të kernelit.
:
- Sistemi i disqeve, hyrja/ dalje dhe sistemet e skedarëve
- U shtua një realizim i ri i drejtuesit exFAT, në bazën e kodit aktual "sdfat" (2.x), i zhvilluar nga Samsung për smartfonët e tij Android. Drejtuesi i shtuar më parë në bërthamë ishte i bazuar në kodin e vjetëruar të Samsung (versioni 1.2.9) dhe kishte performancë më të ulët se drejtuesi i ri për rreth 10%. Të kujtojmë se shtimi i mbështetjes exFAT në bërthamë bëri të mundur pasi kompania Microsoft publikoi specifikimet dhe ofroi mundësinë e përdorimit të lirë të patentave për exFAT në Linux.
- NĂ« Btrfs Ă«shtĂ« implementuar njĂ« komandĂ« e re ioctl() â BTRFS_IOC_SNAP_DESTROY_V2, qĂ« lejon fshirjen e nĂ«nndarjes sipas identifikuesit tĂ« saj. ĂshtĂ« siguruar mbĂ«shtetje e plotĂ« pĂ«r klonimin e extents inline. Numri i pikave tĂ« rikthimit tĂ« operacioneve tĂ« shpĂ«rndarjes Ă«shtĂ« zgjeruar, gjĂ« qĂ« ka lejuar uljen e pritjeve tĂ« gjata gjatĂ« ekzekutimit tĂ« komandĂ«s 'balance cancel'. ĂshtĂ« pĂ«rshpejtuar identifikimi i lidhjeve tĂ« prapme nĂ« extents (pĂ«r shembull, koha e ekzekutimit tĂ« skenarit tĂ« testimit Ă«shtĂ« zvogĂ«luar nga njĂ« orĂ« nĂ« disa minuta). ĂshtĂ« shtuar mundĂ«sia e bashkangjitjes pĂ«r çdo inode tĂ« pemĂ«s sĂ« extents tĂ« skedarit. Schemat e bllokimit tĂ« pĂ«rdorura gjatĂ« shkrimit nĂ« nĂ«nndarje dhe gjatĂ« pĂ«rjashtimit NOCOW janĂ« ripunuar. Efikasiteti i ekzekutimit tĂ« fsync pĂ«r intervalet Ă«shtĂ« rritur.
- Në XFS, përmirësimi i verifikimit të metadatanave dhe ekzekutimi i fsck për partitë aktive është realizuar. Një bibliotekë është propozuar për rindërtimin e strukturave btree, e cila do të përdoret në të ardhmen për rishikimin e xfs_repair dhe implementimin e mundësisë për rikuperim pa shkëputjen e partitions.
- Në CIFS, është shtuar mbështetje eksperimentale për vendosjen e sections swap në ruajtjet SMB3. Janë realizuar zgjerime POSIX në readdir, siç përcaktohet në specifikimin SMB3.1.1. Performanca e shkrimit për faqet me madhësi 64KB është rritur me aktivizimin e modit cache=strict dhe përdorimin e versioneve të protokollit 2.1+.
- FS EXT4 është transferuar nga bmap dhe iopoll në përdorimin e iomap.
- NĂ« F2FS Ă«shtĂ« realizuar mbĂ«shtetje opsionale pĂ«r kompresimin e tĂ« dhĂ«nave duke pĂ«rdorur algoritmin zstd. Si default, algoritmi LZ4 Ă«shtĂ« aktivizuar pĂ«r kompresim. JanĂ« shtuar mbĂ«shtetje pĂ«r komandĂ«n "chattr -c commit". ĂshtĂ« siguruar shfaqja e kohĂ«s sĂ« montimit. JanĂ« shtuar ioctl F2FS_IOC_GET_COMPRESS_BLOCKS pĂ«r marrjen e informacionit mbi numrin e blloqeve tĂ« kompresuara. JanĂ« shtuar tĂ« dhĂ«na mbi kompresimin, tĂ« cilat shfaqen pĂ«rmes statx.
- Në sistemin e skedarëve Ceph është shtuar mundësia për të ekzekutuar operacione lokale të krijimit dhe fshirjes (unlink) të skedarëve pa pritur përgjigje nga serveri (funksionimi në modalitetin asinkron). Ky ndryshim, për shembull, lejon rritjen e dukshme të performancës gjatë punës me utilitarin rsync.
- Në OVERLAYFS është shtuar mundësia e përdorimit të virtiofs si FS e nivelit të sipërm.
- kodin e kalimit të rrugëve në VFS, është riprojektuar kodi i analizës së lidhjeve simbolike dhe është unifikuar kalimi i pikave të montimit.
- Në nënsistemën scsi, përdoruesit jo të privilegjuar mund të ekzekutojnë komanda ZBC.
- Në dm_writecache është realizuar mundësia e pastrimit gradual të caches bazuar në parametrin max_age, që përcakton kohën maksimale të jetës së një blloku.
- Në dm_integrity mbështetje për operacionin "discard".
- Në null_blk mbështetje për simulimin e gabimeve për të simuluar dështimet gjatë testimit.
- mundësia e dërgimit të njoftimeve udev për ndryshimin e madhësisë së pajisjes bllokuese.
- Sistemi rrjetor
- Në Netfilter janë përfshirë , duke përshpejtuar ndjeshëm përpunimin e listave të mëdha të përputhshmërive (nftables set), ku kërkohet kontrolli i kombinimeve të subnet-eve, porteve rrjetore, protokollit dhe adresave MAC.
Optimizime Në modulimin nft_set_pipapo (Politikat e Pakove PIle PAcket), i cili zgjidh problemin e përputhjes së përmbajtjes së paketave me diapazonet e gjendjes së fushave të aplikuara në rregullat e filtrimit, si diapazonet IP dhe portet e rrjetit (nft_set_rbtree dhe nft_set_hash manipulojnë përputhjen e intervaleve dhe reflektimin e drejtpërdrejtë të vlerave). Versioni i pipapo i vectorizuar me udhëzime 256-bit AVX2 në një sistem me procesor AMD Epyc 7402 tregon një rritje të performancës prej 420% në përpunimin e 30 mijë regjistrave, duke përfshirë lidhjet port-protokoll. Rritja gjatë përputhjes së lidhjes nga nënrrjeti dhe numri i portit në përpunimin e 1000 regjistrave ishte 87% për IPv4 dhe 128% për IPv6. - Moduli bareudp, që lejon inkapsulimin në një tunel UDP të protokollave të ndryshëm L3, si MPLS, IP dhe NSH.
- Integrimi i komponentëve MPTCP (MultiPath TCP), zgjatimit të protokollit TCP për organizimin e punës së lidhjes TCP me shpërndarjen e paketave njëkohësisht nëpër disa rrugë përmes interfazave të ndryshme të rrjetit, që janë të lidhura me adresa të ndryshme IP, është vazhduar.
- Mbështetje për mekanizmat e përshpejtimit të harduerit për inkapsulimin e kornizave Ethernet në 802.11 (Wi-Fi).
- Kur pajisja zhvendoset nga një hapësirë emri të nën-sistemit të rrjetit (network namespace) në një tjetër, është e garantuar korrigjimi i të drejtave të aksesit dhe pronësisë së dosjeve përkatëse në sysfs.
- Përdoruesit që nuk kanë të drejta root tani e kanë mundësinë të përdorin flagun SO_BINDTODEVICE.
- Pranohet pjesa e tretë e patch-ëve që transferojnë mjetet ethtool nga ioctl() në përdorimin e interfesit netlink. Ky interfes lehtëson shtimin e zgjerimeve, përmirëson trajtimin e gabimeve, lejon dërgimin e njoftimeve kur ndryshon gjendja, lehtëson ndërveprimin midis bërthamës dhe hapësirës së përdoruesit dhe redukton numrin e listave të emrave të sinkronizuara.
- Shtohet mundësia e përdorimit të përshpejtuesve të veçantë të harduerit për kryerjen e operacioneve të ndjekjes së lidhjeve.
- Në netfilter një hook për lidhjen e klasifikatorëve të paketave dalëse (egress), që e plotëson atë që tashmë kishte një hook për paketat hyrëse (ingress).
- Në Netfilter janë përfshirë , duke përshpejtuar ndjeshëm përpunimin e listave të mëdha të përputhshmërive (nftables set), ku kërkohet kontrolli i kombinimeve të subnet-eve, porteve rrjetore, protokollit dhe adresave MAC.
- Virtualizimi dhe siguria
- Shtohet një implementim harduerik i autentifikimit të treguesve (), që përdor instruksione speciale CPU ARM64 për të mbrojtur kundër sulmeve që përdorin teknikat e programimit të orientuar pas kthimit (ROP), ku sulmuesi nuk përpiqet të vendosë kodin e tij në memorie, por operon me pjesë të instrukcioneve të makinerisë që janë tashmë në bibliotekat e ngarkuara, të cilat përfundojnë me një instrukcion që kthen kontrollin. Mbrojtja kufizohet në përdorimin e nënshkrimeve digjitale për të verifikuar adresat e kthimit në nivelin e kernelit. Nënshkrimi ruhet në bitët e tepërt të pointer-it të përdorur. Ndryshe nga implementimet softuerike, krijimi dhe verifikimi i nënshkrimeve digjitale bëhet përmes instruksioneve speciale të CPU.
- mundësinë për të mbrojtur zonat e memories nga shkruajtja përmes thirrjes së sistemit userfaultfd(), e cila është e destinuar për menaxhimin e page faults (qasje në faqe të pamëdha) në hapësirën e përdoruesit. Ideja është që të përdoret userfaultfd() për të ndjekur shkeljet e qasjes në faqet që janë shënuar si të mbrojtura nga shkruajtja, dhe të thërrasë një trajtues që mund të reagojë ndaj këtyre përpjekjeve për shkruajtje (p.sh., për të menaxhuar ndryshimet gjatë procesit të krijimit të live-snapshots të proceseve që punojnë, ruajtjen e gjendjes gjatë shkarkimit të dump-eve të memories në disk, implementimin e memories së ndarë, ndjekjen e ndryshimeve në memorie). Funksionaliteti me përdorimin e mprotect() në lidhje me trajtuesin e sinjalit SIGSEGV, por funksionon dukshëm më shpejt.
- Në SELinux është shpallur i papërdorshëm parametri 'checkreqprot', i cili lejonte çaktivizimin e kontrollit të mbrojtjes së memories gjatë trajtimit të rregullave (lejonte përdorimin e zonave të memories së ekzekutueshme, pavarësisht nga udhëzimet e dhëna në rregulla). Linket simbolike të kernfs lejojnë trashëgiminë e konteksteve të katalogëve prindër.
- Në përbërje moduli , që lejon lidhjen e programeve BPF me çdo LSM-hook në kernel. Ndryshimi lejon krijimin e moduleve LSM (Linux Security Module) në formën e programeve BPF për të zgjidhur çështje auditi dhe kontrolli të detyrueshëm të aksesit.
- optimizimi i performancës /dev/random përmes transmetimit të paketave të vlerave CRNG në vend të thirrjes së veçuar të instrukcioneve RNG. Funksionimi i getrandom dhe /dev/random është përmirësuar në sistemet ARM64, duke ofruar instruksione RNG.
- Implementimi i harkut eliptik Curve25519 në variantin nga biblioteka , për të cilin dëshmi matematikore e verifikimit të formalitetit të besueshmërisë.
- mekanizmi i informacionit për faqet e lira të memories. Me anë të këtij mekanizmi, sistemet mikpritëse mund të transmetojnë te sistemi mikpritës informacionin për faqet që nuk përdoren më, dhe këto faqe mikpritësi mund t'i rikthejë.
- në vfio/pci mbështetje për SR-IOV (Virtualizimi i Hyrjes me Një Root).
- Memorie dhe shërbime sistemike
- Nga 80 deri nĂ« 100 karaktere kufizimi i gjatĂ« maksimal tĂ« vargjeve nĂ« tekstet burimore. MegjithatĂ«, zhvilluesit ende rekomandohet tĂ« qĂ«ndrojnĂ« brenda kufijve tĂ« 80 karaktereve nĂ« rresht, por tani kjo nuk Ă«shtĂ« njĂ« limit strikt. PĂ«r mĂ« tepĂ«r, tejkalimi i limitit tĂ« madhĂ«sisĂ« sĂ« rreshtit tani do tĂ« çojĂ« nĂ« njĂ« paralajmĂ«rim gjatĂ« ndĂ«rtimit vetĂ«m nĂ«se puna utilitare checkpatch Ă«shtĂ« e aktivizuar me opsionin "âstrictâ. Kjo ndryshon do tĂ« ndihmojĂ« qĂ« zhvilluesit tĂ« mos shqetĂ«sohen pĂ«r me hapĂ«sira dhe tĂ« ndihen mĂ« tĂ« lirĂ« nĂ« rregullimin e kodit, si dhe ndarjen e tepĂ«rt tĂ« rreshtave, perceptimin e kodit dhe kĂ«rkimin.
- mbështetje për modin e ngarkesës së përzier EFI, i cili lehtëson ngarkimin e një bërthame 64-bits nga një firmware 32-bits, duke përdorur një CPU 64-bits.
- sistemi për identifikimin dhe zgjidhjen e bllokimeve të ndara (""), që ndodhin gjatë qasjes në të dhëna të pakonsoliduara në kujtesë për shkak se gjatë ekzekutimit të një komande atomike, të dhënat kalojnë përmes dy linjave të caches të CPU. Këto bllokime çojnë në një rënie të konsiderueshme të performancës (më 1000 cikle më të ngadalta se një operacion atomik me të dhëna që bien në një linjë cash). Varësisht nga parametri i ngarkesës "split_lock_detect", bërthama mund të identifikojë në kohë reale këto bllokime dhe të japë paralajmërime ose të dërgojë një sinjal SIGBUS aplikacionit që shkaktoi bllokimin.
- Në planifikuesin e detyrave është siguruar monitorimi i treguesve të sensorëve të temperaturës () dhe është realizuar llogaritja e temperaturës gjatë shpërndarjes së detyrave. Duke përdorur statistikat e ofruara, menaxhuesi i temperaturës (thermal governor) mund të korrigjojë frekuencën maksimale të CPU-së në rast të mbinxehjes, dhe planifikuesi i detyrave tani merr parasysh uljen e fuqisë llogaritemi për shkak të reduktimit të tillë të frekuencës kur planifikon nisjen e detyrave (më parë planifikuesi reagonte ndaj ndërrimit të frekuencës me një vonesë të caktuar, duke bërë vendime mbi supozime të tepruara në lidhje me burimet e llogaritura të disponueshme).
- Në planifikuesin e detyrave janë angazhuar të ngarkesës, të cilat lejojnë një vlerësim të saktë të ngarkesës, pavarësisht nga frekuenca aktuale e punës së CPU-së. Ndryshimi lejon parashikimin më të saktë të sjelljes së detyrave në kushte dinamike të ndërrimit të tensionit dhe frekuencës së CPU-së. Për shembull, një detyrë që konsumonte 1/3 të burimeve të CPU-së me frekuencë 1000 MHz, do të konsumojë 2/3 të burimeve kur frekuenca të ulet në 500 MHz, e cila më parë krijonte një supozim të gabuar për punën me kapacitet të plotë (dmth. detyrat për planifikuesin dukeshin më të mëdha vetëm për shkak të uljes së frekuencës, gjë që shkaktonte marrjen e vendimeve të gabuara në menaxherin schedutil cpufreq).
- Drejtpërdrejtori Intel P-state, përgjegjës për zgjedhjen e modove të performancës, është kaluar në përdorimin .
- është realizuar mundësia për të përdorur nënstrukturën BPF ndërsa bërthama punon në mënyrë reale (PREEMPT_RT). Më parë, kur aktivizohej PREEMPT_RT, rekomandohej çaktivizimi i BPF.
- PĂ«r tĂ« shtuar njĂ« lloj tĂ« ri programi BPF â BPF_MODIFY_RETURN, tĂ« cilĂ«t mund tĂ« lidhen me njĂ« funksion nĂ« bĂ«rthamĂ« dhe tĂ« ndryshojnĂ« vlerĂ«n e kthyer nga ky funksion.
- Shtuar përdorimin e thirrjes së sistemit clone3() për të krijuar një proces në cgroup, të cilin e ndan nga cgroup i prindit, duke lejuar procesin prind të aplikojë kufizime dhe të aktivizojë llogaritjen menjëherë pas lindjes së procesit ose fijeve të reja. Për shembull, menaxheri i shërbimeve mund të alokojë drejtpërdrejt shërbime të reja në cgroup të veçantë, dhe proceset e reja që vendosen në cgroup të
- nĂ« Kbuild mbĂ«shtetje e ndryshores mjedisore âLLVM=1â pĂ«r tĂ« kaluar nĂ« veglat Clang/LLVM gjatĂ« ndĂ«rtimit tĂ« bĂ«rthamĂ«s. KĂ«rkesat pĂ«r versionin e binutils janĂ« rritur (2.23).
- Në debugfs është shtuar një seksion /sys/kernel/debug/kunit/ me rezultatet e testeve kunit.
- Shtesa e parametrave për ngarkimin e bërthamës pm_debug_messages (analog /sys/power/pm_debug_messages), e cila përfshin tregimin e informacionit për debugimin e funksionimit të sistemit të menaxhimit të energjisë (e dobishme për debugimin e problemeve me modalitetin gjumë dhe pritje).
- Në interface-n e input/output asinkron është shtuar mbështetje për dhe .
- Përmirësuar profilizimi cgroup me ndihmën e mjetit perf. Më parë, perf mund të profilizonte detyrat vetëm në një cgroup të caktuar dhe nuk mund të mësonte se cilës cgroup i përkiste mostrës aktuale. Tani perf merr informacion rreth cgroup për çdo mostër, duke lejuar profilizimin e më shumë se një cgroup dhe duke aplikuar renditjen sipas
cgroup në raportet. - Në cgroupfs, sistemin e falsifikimit për menaxhimin e cgroups, është shtuar mbështetje për atributet e zgjeruara (xattrs) me ndihmën e të cilave, për shembull, mund të lihen informacione shtesë për trajtuesit në hapësirën e përdoruesit.
- Në kontrolluesin e memories cgroup është shtuar mbështetje për mbrojtjen recursive të vlerës "memory.low", e cila rregullon sasinë minimale të memorjes RAM të dhënë pjesëmarrësve në grup. Kur montohet një hierarki cgroup me opsionin "memory_recursiveprot", vlera "memory.low" e vendosur për nodet e poshtme do të shpërndahet automatikisht për të gjitha nodet fëmijë.
- korniza Uacce (Unified/User-space-access-intended Accelerator Framework) për ndarjen e adresave virtuale (SVA, Shared Virtual Addressing) mes CPU dhe pajisjeve periferike, duke lejuar që akceleratorët harduerik të kenë qasje në struktura të dhënash në CPU-në kryesore.
- Arkitekturat harduerike
- Për arkitekturën ARM është realizuar mundësia e nxjerrjes së nxehtë të memories.
- Për arkitekturën RISC-V është shtuar mbështetje për lidhjen dhe nxjerrjen e nxehtë të CPU (CPU hotplug). Për RISC-V 32-bit është realizuar eBPF JIT.
- ĂshtĂ« hequr mundĂ«sia e pĂ«rdorimit tĂ« sistemeve ARM 32-bit pĂ«r ekzekutimin e mjediseve tĂ« mysafirĂ«ve KVM.
- ĂshtĂ« hequr implementimi âi rremeâ i NUMA pĂ«r arkitekturĂ«n s390, pĂ«r tĂ« cilĂ«n nuk janĂ« gjetur skenare pĂ«rdorimi qĂ« tĂ« çojnĂ« nĂ« rritjen e performancĂ«s.
- Për ARM64 është shtuar mbështetje për zgjerimin AMU (Activity Monitors Unit), i përcaktuar në ARMv8.4 dhe që ofron numërues përformancash, të cilët përdoren për të llogaritur koeficientët e korrigjimit të shkallëzimit të frekuencës në planifikuesin e detyrave.
- Pajisje
- mbështetje për pajisjet vDPA, në të cilat përdoret një kanal transmetimi të dhënash që përputhet me specifikimet virtio. Pajisjet vDPA mund të jenë si pajisje të lidhura fizikisht, ashtu edhe pajisje virtuale që emulohen nga softueri.
- Në nën-sistemin GPIO komanda e re ioctl() për monitorimin e ndryshimeve, e cila lejon njoftimin e procesit për ndonjë ndryshim në gjendjen e çdo linje GPIO. Si një shembull i përdorimit të kësaj komande të re uta e gpio-watch.
- NĂ« drejtuesin DRM i i915 pĂ«r kartat grafike Intel me mbĂ«shtetje tĂ« paracaktuar pĂ«r çipat Tigerlake ("Gen12") dhe Ă«shtĂ« shtuar mbĂ«shtetje fillestare pĂ«r menaxhimin e ndriçimit OLED. ĂshtĂ« pĂ«rmirĂ«suar mbĂ«shtetja pĂ«r çipat Ice Lake, Elkhart Lake, Baytrail dhe Haswell.
- NĂ« drejtuesin amdgpu mundĂ«sia pĂ«r ngarkimin e firmware-ve nĂ« çipin USBC pĂ«r ASIC. ĂshtĂ« pĂ«rmirĂ«suar mbĂ«shtetja pĂ«r çipat AMD Ryzen 4000 "Renoir". ĂshtĂ« shtuar mbĂ«shtetje pĂ«r menaxhimin e paneleve OLED. ĂshtĂ« siguruar paraqitja e gjendjes sĂ« firmware nĂ« debugfs.
- Në drejtuesin DRM vmwgfx për sistemet e virtualizimit VMware është shtuar mundësia për përdorimin e OpenGL 4 në sistemet mikpritëse (më parë mbështetej OpenGL 3.3).
- ĂshtĂ« shtuar drejtuesi i ri DRM tidss pĂ«r sistemin e shfaqjes sĂ« platformĂ«s TI Keystone.
- Janë shtuar drejtuesit për panelet LCD: Feixin K101 IM2BA02, Samsung s6e88a0-ams452ef01, Novatek NT35510, Elida KD35T133, EDT, NewEast Optoelectronics WJFH116008A, Rocktech RK101II01D-CT, Frida FRD350H54004.
- Në sistemin e menaxhimit të energjisë mbështetje për platformën Intel Jasper Lake (JSL) të bazuar në Atom.
- është shtuar mbështetje për laptopin Pinebook Pro të bazuar në Rockchip RK3399, tabletin Pine64 PineTab dhe smartphone të bazuar në Allwinner A64.
- Janë shtuar mbështetje për kodekët dhe çipat e rinj të zërit:
Amlogic AIU, Amlogic T9015, Texas Instruments TLV320ADCX140, Realtek RT5682, ALC245, Broadcom BCM63XX I2S, Maxim MAX98360A, Presonus Studio 1810c, MOTU MicroBook IIc. - është shtuar mbështetje për platformat ARM dhe platformat Qualcomm Snapdragon 865 (SM8250), IPQ6018, NXP i.MX8M Plus, Kontron "sl28", 11 variante të pllakës i.MX6 TechNexion Pico, tre variante të reja Toradex Colibri, Samsung S7710 Galaxy Xcover 2 të bazuar në ST-Ericsson u8500, DH Electronics DHCOM SoM dhe PDK2, Renesas M3ULCB, Hoperun HiHope, Linutronix Testbox v2, PocketBook Touch Lux 3.
Burimi: opennet.ru
