Pärast kahte kuud arendusteline Linus Torvalds tugevdamise südamik . Olulisimad muudatused hõlmavad: uus exFAT-failisüsteemi teostus, bareudp-moodul UDP-tunnelite loomiseks, ARM64 põhine pointerite autentimisest kaitse, BPF-programmide kinnitamise võimalus LSM-käitlejatele, uus Curve25519 teostus, split-lock detektor, BPF toetamine PREEMPT_RT-ga, 80 märgi koodirida piiri kaotamine, CPU temperatuuri andmete arvestamine ülesande planeerimisel, clone() kasutamise võimalus protsesside loomiseks teises cgroupis, kaitse mälu kirjutamise eest userfaultfd abil.
Uues versioonis on 15033 parandust 1961 arendajalt,
patši maht on 39 MB (muudatused puudutasid 11590 faili, lisatud 570560 koodirea,
eemaldatud 297401 rida). Ligikaudu 41% kõikidest 5.7 versioonis
tehtud muudatustest on seotud seadme draiveritega, umbes 16% muudatustest on
seotud riistvara arhitektuurile spetsiifilise koodi uuendamisega, 13% on
seotud võrgu protokolliga, 4% — failisüsteemidega ja 4% — sisemiste
tuumasüsteemide.
:
- Disski alamsüsteem, sisend/väljund ja failisüsteemid
- Lisatud uus exFAT draiveri teostus, Samsungi Android-smartfonide jaoks arendatava «sdfat» (2.x) aktuaalses koodibaasis. Varasemalt tuuma lisatud draiver põhines Samsungi vananenud koodil (versioon 1.2.9) ja jäi uue draiveri jõudlusele ligikaudu 10% alla. Tuletame meelde, et exFAT-i toe lisamine tuuma sai võimalikuks pärast seda, kui Microsoft avalikustas spetsiifikatsioonid ja andis tasuta õiguse exFAT-i patentide kasutamiseks Linuxis.
- Btrfs-s on rakendatud uus ioctl() käsk — BTRFS_IOC_SNAP_DESTROY_V2, mis võimaldab jagu kustutada selle identifikaatori järgi. Inline-osa kloonimise tugi on täielikult tagatud. Operatsioonide ümberjaotamise tagasivõtu punkte on suurendatud, mis on lühendanud ooteaegu 'balance cancel' käsu täitmise ajal. Ekstentide tagasiviidete määramine on kiirenenud (näiteks teststsenaariumi täitmise aeg vähenes tunnist mitme minutini). Iga faili ekstentsi inode'ile on lisatud võimalus kinnituda. Jagudele kirjutamisel ja NOCOW välistamisel on taas kujundatud lukustamisplaan. fsync'i efektiivsus vahemike täitmisel on paranenud.
- XFS-is on paranenud metaandmete kontroll ja fsck täitmine aktiivsete jaotiste jaoks. Ehkki on ettepanek btree struktuuride ümberkujundamise raamatukoguks, mida tulevikus kasutatakse xfs_repair'i töötluseks ja jaotise lahti mountimisel taastamise võimaluste rakendamiseks.
- CIFS-s on lisatud eksperimentaalne tugi vahetusfailide paigutamiseks SMB3 salvestustes. Tehtud on POSIX-laiendused readdiris, nagu on määratletud SMB3.1.1 spetsifikatsioonis. Kirjutamise jõudlus suurendatud 64KB lehekülgede puhul, kui on sisse lülitatud cache=strict režiim ja kasutatakse protokolli versioone 2.1+.
- Failisüsteem EXT4 on üle viidud bmap ja iopoll kasutamiselt iomapi kasutamisele.
- F2FS-is on rakendatud valikuline andmete tihendamise tugi zstd algoritmi kasutamisega. Vaikimisi kasutatakse tihendamiseks algoritmi LZ4. Lisatud on käsu «chattr -c commit» tugi. Aeg montaažiks on nüüd nähtav. Lisatud on ioctl F2FS_IOC_GET_COMPRESS_BLOCKS kompuutritihendatud plokkide arvu saamiseks. Tihendamise andmed kuvatakse statx-i kaudu.
- Ceph failisüsteemis on lisatud võimalus faili loomise ja kustutamise (unlink) toimingute kohalikuks täitmiseks ilma serverilt vastust ootamata (asünkroonne töö). See muudatus võimaldab näiteks märkimisväärselt suurendada jõudlust rsync utiliidi töös.
- OVERLAYFS-is on lisatud virtiofs kasutamise võimalus kui ülemise taseme failisüsteem.
- VFS-is on jääkomplekside ümbersuunamine, sümboolsed lingid on ümber kirjutatud ning mount-punktide ümbersuunamine on standarditud.
- SCSI alam-süsteemis, mitteprivileegitud kasutajatele ZBC käskude täitmine.
- dm_writecache-is võimalus järk-järgult puhastada cache vastavalt parameetrile max_age, mis määrab ploki maksimaalse eluea.
- dm_integrity-is toetatakse „discard“ operatsiooni.
- null_blk-is vigade simuleerimise toetamine katsetamise käigus.
- võimalus saata udev-teateid blokeerimise seadme suuruse muutumise kohta.
- Võrgu alamsüsteem
- Netfilteris on sisse lülitatud , mis kiirendavad oluliselt suure hulga võrdlusloendite (nftables set) töötlemist, kus on vajalik alamside, võrguportide, protokolli ja MAC-aadresside kombinatsioonide kontroll.
Optimeerimised modul nft_set_pipapo (PIle PAcket POlicies) lahendab probleemi, et sobitada paketisisu filtreerimise reeglitega kehtestatud väljade olekuvahemike, nagu IP ja võrguportide vahemikud (nft_set_rbtree ja nft_set_hash manipuleerivad vahemike sobitamise ja otsese väärtuste peegeldamisega). 256-bitiste AVX2 käskude abil vektoreeritud versioon pipapo AMD Epyc 7402 protsessoriga näitas 30 000 kirje, sealhulgas port-protokollide komplektide, analüüsimisel 420% jõudluse kasvu. Alveemepide sobitamise juures alamvõrgu ja pordi numbri analüüsimisel 1000 kirje puhul oli IPv4 puhul 87% ja IPv6 puhul 128%. - modul bareudp, mis võimaldab kapseldada erinevaid L3-protokolle UDP-tunneli, nagu MPLS, IP ja NSH.
- MPTCP (MultiPath TCP) komponentide integreerimine jätkub, TCP protokolli laiendus, et korraldada TCP-ühenduse tööd, tarnides pakette samal ajal mitme marsruudi kaudu erinevate võrguliideste kaudu, mis on seotud erinevate IP-aadressidega.
- toetada Ethernet-raamide kapseldamise riistvaralise kiirendamise mehhanisme 802.11 (Wi-Fi).
- Kui seade liigub ühest võrgu alamruumist (network namespace) teise, toimub vastava faili sysfs ligipääsu õiguste ja omanike korrektuur.
- Kasutajatele, kellel ei ole root-õigusi, on antud võimalus kasutada SO_BINDTODEVICE lippu.
- Aktsepteeritud on kolmandik patše, mis viivad tööriistu ethtool ioctl() pealt uue netlink liidese kasutamisele. Uus liides lihtsustab laienduste lisamist, parandab veahaldust, võimaldab saatmist muudatuste puhul, hõlbustab suhtlemist tuuma ja kasutajaruumi vahel ning vähendab sünkroniseeritud nimekirjade arvu.
- Lisatud on võimalus kasutada spetsiaalseid riistvarakiirendajaid ühenduste jälgimise operatsioonide täitmiseks.
- Netfilteris lisati ära suunatud paketise kandjate (egress) liitmine, mis täiendab varem olemas olnud sissetulevate pakettide (ingress) hook'i.
- Netfilteris on sisse lülitatud , mis kiirendavad oluliselt suure hulga võrdlusloendite (nftables set) töötlemist, kus on vajalik alamside, võrguportide, protokolli ja MAC-aadresside kombinatsioonide kontroll.
- Virtualiseerimine ja turvalisus
- Riistvaraline rakendus osutite autentimiseks (), mis kasutab spetsialiseeritud ARM64 CPU juhiseid rünnakute kaitsmiseks, mis põhinevad tagasipöördumise orientatsiooniga programmi (ROP) tehnikatel, mille puhul ründaja ei püüa oma koodi mälus paigutada, vaid tarvitab juba laaditud teekides olevate masiinijuhiste osi, mis lõpevad juhtimise tagastamise juhisega. Kaitse seisneb digitaalsete allkirjade kasutamises tagastamisaadresside kontrollimiseks tuuma tasemel. Allkiri salvestatakse sama näitaja kasutamata ülemistes bittides. Erinevalt tarkvaralistest rakendustest luuakse ja kontrollitakse digitaalseid allkirju spetsiaalsete CPU juhiste abil.
- mälu kaitsmise võimalus kirjutamise eest süsteemikutsungi userfaultfd() abil, mis on ette nähtud lehekülgede vigu (mittejaotatud mälu lehekülgedele juurdepääs) kasutaja ruumis töötlemiseks. Idee on kasutada userfaultfd() ka juurdepääsu rikkumise jälgimiseks lehekülgedel, mis on märgitud kirjutamise eest kaitstuks, ja töötleja kutsumise tegemiseks, mis saab reageerida sellistele kirjutamisüritustele (näiteks tööprotsesside live-snapshotide loomisel, tõmmatud mälukohanduste seisundi kinnitamisel, jagatud mälu realiseerimisel, mälus muudatuste jälgimisel). Funktsionaalsus mprotect() kasutamisega koos SIGSEGV signaali töötlejaga, kuid töötab märgatavalt kiiremini.
- SELinuxis on vananenud parameeter „checkreqprot”, mis võimaldab mälu kaitse kontrolli välja lülitada reeglite töötlemise ajal (lubas kasutada täidetavaid mälu alasid, sõltumata reeglites määratud nõuetest). Sümboolsetele linkidele kernfs'is on lubatud vanema katalooge konteksti pärimine.
- Koosseis mooduli , võimaldades BPF-programme kinnitada mis tahes LSM-haakidele tuumas. Muudatus võimaldab luua LSM-mooduleid (Linux Security Module) BPF-programmide kujul, et lahendada auditi ja kohustusliku juurdepääsu kontrollimise ülesandeid.
- /dev/randomi jõudluse optimeerimine CRNG-i väärtuste pakettülekande kaudu, selle asemel et kasutada eraldi RNG-käskude kutsumist. Parandatud on getrandomi ja /dev/randomi tööd ARM64 süsteemides, mis pakuvad RNG-käsklusi.
- Elliptilise kõvera Curve25519 rakendamine raamatukogust , mille jaoks matemaatiline tõendus formaliseeritud usaldusväärsuse kontrollimiseks.
- Mälu vaba lehtede teavitamise mehhanism. Selle mehhanismi abil saavad külgsüsteemid edastada host-süsteemile teavet lehtede kohta, mida enam ei kasutata, ja need lehed saab host tagasi võtta.
- vfio/pci-s SR-IOV (Single-Root I/O Virtualization) tugi.
- Mälu ja süsteemiteenused
- 80 kuni 100 sümbolit stringi maksimaalne pikkuse piirang algsetes tekstides. Samuti on arendajatele soovitatav jääda 80 tähemärgi piiresse reas, kuid see ei ole enam ranged piirang. Lisaks toob pikem rida nüüd hoiatuse kuvamise ainult juhul, kui utiliit checkpatch käivitatakse „—strict“ valikuga. See muudatus võimaldab arendajatel mitte hajutada tähelepanu tühikute ja vabamalt tunda end koodi joondamisel ning liialt ridade jaotamist, koodi tajumist ja otsimist.
- EFI segatud laadimisrežiimi tugi, mis võimaldab laadida 64-bitist tuuma 32-bitistest püsivara, mis töötab 64-bitises CPU-s, ilma spetsialiseeritud laadijata.
- jaotatud lukustuste tuvastamise ja tõrkeotsingu süsteem ("«), mis vabaneb nende andmete üheaegseks kasutamiseks mälus, kuna atomaarse käsu täitmisel andmed ületavad kahe CPU vahemälu rida. Sellised blokeeringud toovad kaasa märkimisväärse jõudluse languse (1000 tsüklit aeglasem kui atomaarne operatsioon andmetega, mis jäävad ühte vahemällu). Sõltuvalt käivitusparameetrist „split_lock_detect” saab tuum reaalajas tuvastada selliseid blokeeringuid ja väljastada hoiatuse või saata SIGBUS signaali rakendusele, mis blokeeringu põhjustas.
- Ülesande planeerijas on tagatud temperatuuriandurite näidikute jälgimine () ja on rakendatud kuumenemise jälgimine ülesannete paigutamisel. Temperatuuriandmete põhjal saab kohaliku töötleja (thermal governor) kohandada CPU maksimaalset sagedust kuumenemise korral, samas kui ülesannete ajastaja arvestab nüüd arvutusvõimekuse vähenemist sellise sageduse kärpimise tõttu ülesannete käivitamise ajastamisel (varem reageeris ajastaja sageduse muutusele teatud viivitusega, tehakse otsuseid põhinedes liiga optimistlikel eeldustel saadaval olevate arvutusressursside kohta).
- Ülesannete ajastajas on kasutusel koormuse jälgimise süsteemid, mis võimaldavad õigesti hinnata koormust, sõltumata CPU praegusest töö sagedusest. Muudatus võimaldab täpsemalt prognoosida ülesannete käitumist dünaamiliste pinge ja CPU sageduse muutuste korral. Näiteks ülesanne, mis kasutas 1000 MHz sagedusel 1/3 CPU ressursse, tarbib 500 MHz sagedusele langemisel 2/3 ressursse, mis varem tekitas vale oletuse maksimaalsest koormusest (st ülesanded tundusid planeerimisajast suuremad ainult sageduse languse tõttu, mis viis vale otsuste tegemiseni schedutil cpufreq governoris).
- Intel P-state draiver, mis vastutab jõudlustasemete valikute eest, on ümber lülitatud kasutama .
- On rakendatud BPF alamsüsteemi kasutamise võimalus reaalajas (PREEMPT_RT) töörežiimis. Varem PREEMPT_RT sisse lülitamisel nõudis BPF väljalülitamist.
- Lisatud uus tüüp BPF-programme — BPF_MODIFY_RETURN, mida saab kinnitada tuumas olevale funktsioonile ja muuta selle funktsiooni tagastatud väärtust.
- Lisatud süsteemikõne clone3() kasutamine protsessi loomiseks eri cgroupis, mis erineb vanemast cgroupist, mis võimaldab vanemal protsessil rakendada piiranguid ja aktiveerida arveldamise kohe pärast uue protsessi või niidi genereerimist. Näiteks võib teenuse haldur otse eraldada uusi teenuseid eraldi cgroup'idesse, ning uusi protsesse paigutades "külmutatud" cgroup'idesse, peatatakse need kohe.
- Kbuildis keskkonnamuutuja "LLVM=1" toetamine, et lülituda Clang/LLVM tööriistakomplekti, kui tuum on üles ehitatud. Tõstetud binutils versiooninõuded (2.23).
- debugfs'i on lisatud sektsioon /sys/kernel/debug/kunit/ koos kunit'i testide tulemustega.
- Lisatud tuuma laadimisparameeter pm_debug_messages (analoog/sys/power/pm_debug_messages), mis aktiveerib toitesüsteemi toimimisega seotud silumisinfot (kasulik une- ja ooterežiimiga seotud probleemide silumisel).
- asünkroonse sisendi/väljundi liides on lisatud tugi ja .
- Perf'i tööriistu kasutades on parendatud cgroup'i profilimist. Varem suutis perf profileerida ülesandeid ainult teatud cgroup'is ja ei suutnud tuvastada, millisesse cgroup'i kuulub praegune proov. Nüüd saab perf iga proovide kohta cgroup'i teavet, mis võimaldab profillida rohkem kui ühte cgroup'i ja täiendada aruandeid.
cgroup'i aruannetes. - cgroupfs-i, cgroup'ide haldamiseks mõeldud psühholoogiline failisüsteem, on lisatud toe laiendatud atribuute (xattrs), mis võimaldavad näiteks jätta kasutajaruumi töötlejate jaoks täiendavat teavet.
- cgroup'i mälu kontroller toetab rekursiivset kaitset väärtusele "memory.low", mis reguleerib minimaalset mälu mahtu, mis on antud rühma liikmetele. Kui cgroup'i hierarhiat monteeritakse valikuga "memory_recursiveprot", ja "memory.low" väärtus, mis on seadistatud madalamate sõlmede jaoks, jaotatakse automaatselt kõikidele alam-sõlmedele.
- Uacce (Unified/User-space-access-intended Accelerator Framework) raamistik, mis võimaldab jagatud virtuaalsete aadresside (SVA, Shared Virtual Addressing) kasutamist CPU ja perifeersete seadmete vahel, võimaldades riistvaralistel kiirenditel pääseda peamise CPU andmestruktuuridele.
- Riistvaraarhitektuurid
- ARM arhitektuuri jaoks on rakendatud kuuma mälu eemaldamise võimalus.
- RISC-V arhitektuuri jaoks on lisatud CPU kuumatoimimise ja eemaldamise toetus (CPU hotplug). 32-bitise RISC-V jaoks on rakendatud eBPF JIT.
- Eemaldatud on 32-bitiste ARM-süsteemide kasutamine KVM külalisringkondade käitamiseks.
- Eemaldatud on "vale" NUMA rakendamine s390 arhitektuurile, mille jaoks ei ole leitud kasutusstsenaariume, mis võimaldaksid jõudluse paranemist.
- ARM64-le on lisatud AMU (Activity Monitors Unit) laienduse tugi, mis on määratletud ARMv8.4-s ja pakub täitmisloendureid, mida kasutatakse sageduse skaleerimise korrektsioonikoefitsientide arvutamiseks ülesannete ajakavad.
- Seadmed
- vDPA seadmete tugi, mis kasutab virtio spetsifikatsioonidega vastavat andmevahetuse kanalit. vDPA seadmed võivad olla nii füüsiliselt ühendatud seadmed kui ka emuleeritud tarkvara virtuaalsed seadmed.
- GPIO alamsüsteemis uus ioctl() käsk, mis jälgib muudatusi ja võimaldab protsessil olla kursis GPIO rea oleku muutumisega. Näiteks on selle uue käsu kasutamine utility gpio-watch.
- DRM-draiveris i915 Intel video kaardile on vaikimisi toetatud Tigerlake kiipe («Gen12») ja lisatud esmane tugi OLED-i taustvalgustuse juhtimiseks. Parandatud Ice Lake, Elkhart Lake, Baytrail ja Haswell kiipide tugi.
- draiveris amdgpu võimet firmware'd USB-C kiipi laadida ASIC-ile. Parandatud AMD Ryzen 4000 «Renoir» kiipide tugi. Introduseeritud OLED-paneelide juhtimise tugi. Ensure firmware'i oleku kuvamine debugfs-is.
- DRM-draiver vmwgfx VMware virtualiseerimisüsteemide jaoks on lisatud OpenGL 4 kasutamise võimalus külgmistel süsteemidel (varem toetati OpenGL 3.3).
- Lisatud uus DRM-draiver tidss TI Keystone platvormi kuvamissüsteemile.
- Lisatud draivereid LCD-paneelide jaoks: Feixin K101 IM2BA02, Samsung s6e88a0-ams452ef01, Novatek NT35510, Elida KD35T133, EDT, NewEast Optoelectronics WJFH116008A, Rocktech RK101II01D-CT, Frida FRD350H54004.
- Energiahaldussüsteemis toetatakse Intel Jasper Lake (JSL) platvormi, mis põhineb Atom-il.
- Lisatud tugi Pinebook Pro sülearvutile, mis põhineb Rockchip RK3399-l, Pine64 PineTab tahvelarvutile ja nutitelefonile mis põhineb Allwinner A64-l.
- Lisatud tugi uutele helikoodekitele ja kiipidele:
Amlogic AIU, Amlogic T9015, Texas Instruments TLV320ADCX140, Realtek RT5682, ALC245, Broadcom BCM63XX I2S, Maxim MAX98360A, Presonus Studio 1810c, MOTU MicroBook IIc. - Lisatud ARM-platvormide ja Qualcomm Snapdragon 865 (SM8250), IPQ6018, NXP i.MX8M Plus, Kontron «sl28», 11 i.MX6 TechNexion Pico plaadi varianti, kolm uut Toradex Colibri versiooni, Samsung S7710 Galaxy Xcover 2 ST-Ericsson u8500 alusel, DH Electronics DHCOM SoM ja PDK2, Renesas M3ULCB, Hoperun HiHope, Linutronix Testbox v2, PocketBook Touch Lux 3 tugi.
Allikas: opennet.ru
