Linuxi 5.12 kerneli väljalase

Pärast kahekuulist arendustööd esitles Linus Torvalds Linuxi kerneli 5.12 väljalaset. Märkimisväärsemate muudatuste hulgas: Btrfs-i tsoneeritud plokkseadmete tugi, failisüsteemi kasutajatunnuste kaardistamise võimalus, ARM-i pärandarhitektuuride puhastamine, innukas kirjutamisrežiim NFS-is, mehhanism LOOKUP_CACHED vahemälust failiteede määramiseks. , BPF-i aatomikäskude tugi, silumissüsteem KFENCE mäluga töötamisel vigade tuvastamiseks, NAPI pollimisrežiim, mis töötab võrgupinus eraldi tuumalõimes, ACRN-i hüperviisor, võimalus ülesandes käigupealt ennetava mudelit muuta planeerija ja tugi LTO optimeerimiseks Clangis ehitamisel.

Uus versioon sisaldab 14170 (eelmises versioonis 15480) parandust 1946 (1991) arendajatelt, paiga suurus on 38 MB (muudatused puudutasid 12102 (12090) faili, lisati 538599 (868025) koodirida, 333377 read kustutati). Umbes 261456% kõigist versioonis 43 tehtud muudatustest on seotud seadme draiveritega, ligikaudu 5.12% muudatustest on seotud riistvaraarhitektuurile omase koodi uuendamisega, 17% on seotud võrgupinuga, 12% on seotud failisüsteemidega ja 5% on seotud sisemiste tuuma alamsüsteemidega.

Peamised uuendused:

  • Ketta alamsüsteem, I/O ja failisüsteemid
    • Rakendatud on võimalus kaardistada ühendatud failisüsteemide kasutajatunnuseid (saate vastendada ühe kasutaja faile ühendatud välispartitsioonil teise kasutajaga praeguses süsteemis). Kaardistamine on toetatud FAT-, ext4- ja XFS-failisüsteemide jaoks. Kavandatav funktsionaalsus muudab failide jagamise erinevate kasutajate vahel ja erinevates arvutites lihtsamaks, sealhulgas kasutatakse kaardistamist systemd-homed kaasaskantava kodukataloogi mehhanismis, mis võimaldab kasutajatel teisaldada oma kodukatalooge välisele meediumile ja kasutada neid erinevates arvutites, kaardistades kasutajatunnused, millega ei ühti. Veel üks kasulik rakendus on korraldada välise hosti failidele jagatud juurdepääsu pakkumist, muutmata tegelikult failisüsteemis olevate failide omanike andmeid.
    • LOOKUP_CACHED paigad on kernelisse võetud, võimaldades toimingutel määrata failitee kasutajaruumist ilma blokeerimiseta, ainult vahemälus saadaolevate andmete põhjal. Režiim LOOKUP_CACHED aktiveeritakse openat2()-kutses, edastades lipu RESOLVE_CACHED, kus andmeid serveeritakse ainult vahemälust ja kui tee määramine nõuab juurdepääsu draivile, tagastatakse EAGAIN-tõrge.
    • Btrfs failisüsteem on lisanud esialgse toe tsoneeritud plokkseadmetele (kõvamagnetketastel või NVMe SSD-del olevad seadmed, mille salvestusruum on jagatud tsoonideks, mis moodustavad plokkide või sektorite rühmad, millele on lubatud ainult järjestikune andmete lisamine, kogu plokkide rühma värskendamine). Kirjutuskaitstud režiimis on rakendatud metaandmete ja lehest (alamlehest) väiksemate andmetega plokkide tugi.
    • F2FS-failisüsteemis on lisatud algoritmi ja tihendustaseme valimise võimalus. Lisatud LZ4 algoritmi kõrgetasemelise tihendamise tugi. Rakendatud on checkpoint_merge paigaldusvõimalus.
    • Rakendatud on uus ioctl käsk FS_IOC_READ_VERITY_METADATA metaandmete lugemiseks fs-verityga kaitstud failidest.
    • NFS-klient rakendab “agar” kirjutamisrežiimi (writes=eager), kui see on lubatud, kantakse faili kirjutamistoimingud kohe serverisse, minnes mööda lehe vahemälust. See režiim võimaldab teil vähendada mälutarbimist, võimaldab koheselt saada teavet failisüsteemi vaba ruumi lõppemise kohta ja mõnes olukorras võimaldab saavutada suuremat jõudlust.
    • CIFS-i (SMB) on lisatud uued ühendamisvalikud: acregmax failide vahemällu salvestamiseks ja acdirmax kataloogi metaandmete vahemällu juhtimiseks.
    • XFS-is on lubatud mitme lõimega kvootide kontrollimise režiim, fsynci täitmine on kiirendatud ja failisüsteemi suuruse vähendamise funktsiooni rakendamiseks on ette valmistatud growfs-kood.
  • Mälu- ja süsteemiteenused
    • Lisatud on DTMP (Dynamic Thermal Power Management) alamsüsteem, mis võimaldab dünaamiliselt reguleerida erinevate seadmete voolutarbimist lähtuvalt seatud üldistest temperatuuripiirangutest.
    • Rakendatud on võimalus ehitada kernel Clangi kompilaatori abil koos optimeerimiste kaasamisega linkimisfaasis (LTO, Link Time Optimization). LTO optimeerimised erinevad kõigi koostamisprotsessis osalevate failide olekuga, samas kui traditsioonilised optimeerimisrežiimid optimeerivad iga faili eraldi ega võta arvesse teistes failides määratletud funktsioonide kutsumise tingimusi. Näiteks LTO-ga on muude failide funktsioonide jaoks võimalik sisemine juurutamine, täitmisfaili ei lisata kasutamata koodi, tüübikontroll ja üldine optimeerimine viiakse läbi projekti tasandil tervikuna. LTO tugi on praegu piiratud x86 ja ARM64 arhitektuuriga.
    • Kui kerneli ehitamisel määrati säte PREEMPT_DYNAMIC, on võimalik valida tegumiplaneerijas alglaadimisetapis (preempt=none/voluntary/full) või silumisfunktsiooniga töötamise ajal (/debug/sched_debug). Varem sai ekstrusioonirežiimi seadistada ainult koosteparameetrite tasemel. Muudatus võimaldab distributsioonidel tarnida tuumasid sisse lülitatud PREEMPT-režiimiga, mis tagab lauaarvutitele minimaalse latentsusaega väikese läbilaskevõimega trahvi hinnaga, ja vajadusel langeb tagasi režiimile PREEMPT_VOLUNTARY (lauaarvutite vahepealne režiim) või PREEMPT_NONE (pakkub serveritele maksimaalset läbilaskevõimet) .
    • BPF-i alamsüsteemi on lisatud aatomioperatsioonide BPF_ADD, BPF_AND, BPF_OR, BPF_XOR, BPF_XCHG ja BPF_CMPXCHG tugi.
    • BPF-programmidele antakse võimalus pääseda juurde virna andmetele muutuva nihkega osutite abil. Näiteks kui varem sai pinus olevale massiivile juurdepääsuks kasutada ainult konstantse elemendi indeksit, siis nüüd saad kasutada muutuvat indeksit. Juurdepääsu kontrollib ainult olemasolevates piirides BPF-i tõendaja. See funktsioon on saadaval ainult privilegeeritud programmidele, kuna on mures koodi spekulatiivse käivitamise haavatavuste ärakasutamise pärast.
    • Lisatud võimalus kinnitada BPF-programme paljastele jälituspunktidele, mis ei ole seotud kasutajaruumis nähtavate jälitussündmustega (selliste jälituspunktide puhul pole ABI säilimine garanteeritud).
    • Rakendatud on CXL 2.0 (Compute Express Link) siini tugi, mida kasutatakse CPU ja mäluseadmete vahelise kiire interaktsiooni korraldamiseks (võimaldab kasutada välismäluseadmeid RAM-i või püsimälu osana, justkui see mälu olid ühendatud protsessori standardse mälukontrolleri kaudu).
    • Lisatud nvmem-draiver andmete toomiseks püsivara reserveeritud mälupiirkondadest, mis pole Linuxile otseselt juurdepääsetavad (näiteks EEPROM-mälu, mis on füüsiliselt juurdepääsetav ainult püsivarale või andmed, millele pääseb juurde ainult varases alglaadimisfaasis).
    • Eemaldatud on “oprofiil” profileerimissüsteemi tugi, mida ei kasutatud laialdaselt ja see on asendatud kaasaegsema perf-mehhanismiga.
    • Asünkroonne I/O liides io_uring pakub integratsiooni c-rühmadega, mis juhivad mälukasutust.
    • RISC-V arhitektuur toetab NUMA süsteeme, samuti kprobe ja uprobes mehhanisme.
    • Lisatud võimalus kasutada süsteemikutset kcmp() sõltumata protsessi oleku hetktõmmiste (kontrollpunkt/taastamine) funktsionaalsusest.
    • Makrod EXPORT_UNUSED_SYMBOL() ja EXPORT_SYMBOL_GPL_FUTURE(), mida pole praktikas palju aastaid kasutatud, on eemaldatud.
  • Virtualiseerimine ja turvalisus
    • Lisatud on kaitsemehhanism KFence (Kernel Electric Fence), mis püüab mäluga töötamisel kinni vead, nagu puhvri ülekoormus ja juurdepääs pärast mälu vabastamist. Erinevalt KASAN-i silumismehhanismist iseloomustab KFence'i alamsüsteemi suur töökiirus ja madal üldkulu, mis võimaldab tabada mäluvigu, mis ilmnevad ainult töötavates süsteemides või pikaajalisel töötamisel.
    • Lisatud tugi ACRN-i hüpervisorile, mis on kirjutatud silmas pidades valmisolekut reaalajas ülesanneteks ja sobivust kasutamiseks missioonikriitilistes süsteemides. ACRN pakub minimaalset lisakulu, tagab madala latentsuse ja piisava reageerimisvõime seadmetega suhtlemisel. Toetab protsessori ressursside, I/O, võrgu alamsüsteemi, graafika ja helioperatsioonide virtualiseerimist. ACRN-i saab kasutada mitme isoleeritud virtuaalmasina käitamiseks elektroonilistes juhtplokkides, armatuurlaudades, autode infosüsteemides, tarbija IoT-seadmetes ja muus manustatud tehnoloogias. ACRN toetab kahte tüüpi külalissüsteeme – privilegeeritud Service VM-e, mida kasutatakse süsteemiressursside (CPU, mälu, I/O jne) haldamiseks, ja kohandatud kasutaja VM-e, mis võivad käitada Linuxi, Androidi ja Windowsi distributsioone.
    • Alamsüsteemis IMA (Integrity Measurement Architecture), mis haldab failide ja nendega seotud metaandmete terviklikkuse kontrollimiseks räsiandmebaasi, on nüüd võimalik kontrollida ka tuuma enda andmete terviklikkust, näiteks jälgida SELinuxi reeglite muudatusi. .
    • KVM-i hüperviisorisse on lisatud võimalus Xeni hüperkõnede pealtkuulamiseks ja kasutajaruumis töötavale emulaatorile edastamiseks.
    • Lisati võimalus kasutada Linuxit Hyper-V hüperviisori juurkeskkonnana. Juurkeskkonnal on otsene juurdepääs riistvarale ja seda kasutatakse külalissüsteemide käitamiseks (analoogselt Dom0-ga Xenis). Seni toetas Hyper-V (Microsoft Hypervisor) Linuxit ainult külaliskeskkondades, kuid hüperviisorit ennast juhiti Windowsi-põhisest keskkonnast.
    • Lisatud eMMC-kaartide sisese krüptimise tugi, mis võimaldab teil kasutada draivikontrollerisse sisseehitatud krüpteerimismehhanisme, mis läbipaistvalt krüpteerivad ja dekrüpteerivad I/O.
    • Tuumikust on eemaldatud tugi räsidele RIPE-MD 128/256/320 ja Tiger 128/160/192, mida tuumas ei kasutata, samuti Salsa20 voo šifri, mis asendati ChaCha20 algoritmiga. krüpto alamsüsteem. Blake2 algoritmi on värskendatud, et rakendada blake2s.
  • Võrgu alamsüsteem
    • Lisati võimalus teisaldada võrguseadmete NAPI küsitlustöötleja eraldi kerneli lõimele, mis võimaldab teatud tüüpi töökoormuse puhul parandada jõudlust. Varem viidi küsitlus läbi softirqi kontekstis ja seda ei hõlmanud ülesannete planeerija, mistõttu oli maksimaalse jõudluse saavutamiseks keeruline teostada peeneteralisi optimeerimisi. Eraldi kerneli lõimes käivitamine võimaldab jälgida küsitluskäitlejat kasutajaruumist, ühendada see üksikute CPU tuumadega ja arvestada ülesannete vahetamise ajastamisel. Uue režiimi lubamiseks sysf-is on pakutud parameeter /sys/class/net//threaded.
    • Integratsioon MPTCP (MultiPath TCP) tuuma, mis on TCP-protokolli laiendus TCP-ühenduse toimimise korraldamiseks koos pakettide samaaegse edastamisega mitmel marsruudil erinevate IP-aadressidega seotud erinevate võrguliideste kaudu. Uus väljalase lisab teatud lõimedele prioriteedi määramise võimaluse, mis võimaldab näiteks organiseerida varulõimede tööd, mis lülituvad sisse ainult siis, kui esmase lõimega on probleeme.
    • IGMPv3 lisab EHT (Explicit Host Tracking) mehhanismi toe.
    • Netfilteri pakettide filtreerimise mootor annab võimaluse omada teatud tabeleid, et saada eksklusiivne kontroll (näiteks taustal töötav tulemüür võib teatud tabelite omandiõiguse omandada, takistades teistel neid segamast).
  • Оборудование
    • Puhastasime vananenud ja hooldamata ARM-platvorme. Platvormide efm32, picoxcell, prima2, tango, u300, zx ja c6x kood ning nendega seotud draiverid on eemaldatud.
    • Amdgpu draiver pakub võimalust kiirendada (OverDrive) kaarte, mis põhinevad Sienna Cichlid GPU-l (Navi 22, Radeon RX 6xxx). Lisatud FP16 pikslivormingu tugi DCE-le (kuvakontrolleri mootor) 8. kuni 11. põlvkonna jaoks. GPU Navy Flounderi (Navi 21) ja APU Van Goghi puhul on GPU lähtestamise võimalus rakendatud.
    • Inteli graafikakaartide i915 draiver rakendab parameetrit i915.mitigations, et keelata isolatsiooni- ja kaitsemehhanismid parema jõudluse kasuks. Tiger Lake'ist algavate kiipide puhul on kaasas VRR (Variable Rate Refresh) mehhanismi tugi, mis võimaldab kohandavalt muuta monitori värskendussagedust, et tagada sujuvus ja mängude ajal tühikute puudumine. Värvitäpsuse parandamiseks on kaasas Intel Clear Color tehnoloogia tugi. Lisatud tugi DP-HDMI 2.1-le. Rakendatud on eDP-paneelide taustvalgustuse juhtimise võimalus. LSPCON-i (Level Shifter and Protocol Converter) toega Gen9 GPU-de puhul on HDR-i tugi lubatud.
    • Uus draiver lisab esialgse toe NVIDIA GPU-dele, mis põhinevad GA100 (Ampere) arhitektuuril.
    • MSM-draiver lisab toe Adreno 508, 509 ja 512 GPU-dele, mida kasutatakse SDM (Snapdragon) 630, 636 ja 660 kiipides.
    • Lisatud on Sound BlasterX AE-5 Plus, Lexicon I-ONIX FW810 ja Pioneer DJM-750 helikaartide tugi. Lisatud Intel Alder Lake PCH-P heli alamsüsteemi tugi. Helipistiku ühendamise ja lahtiühendamise tarkvara simulatsiooni tugi on rakendatud kasutajaruumis olevate töötlejate silumiseks.
    • Lisati tugi aastatel 64–1996 toodetud Nintendo 2003 mängukonsoolidele (varasemad katsed Linuxit Nintendo 64-le portida ei lõpetatud ja klassifitseeriti Vaporwareks). Peaaegu paarkümmend aastat välja andmata aegunud platvormile uue pordi loomise ajendiks on soov stimuleerida emulaatorite arengut ja lihtsustada mängude portimist.
    • Lisatud draiver Sony PlayStation 5 DualSense mängukontrollerile.
    • Lisatud tugi ARM-plaatidele, seadmetele ja platvormidele: PineTab, Snapdragon 888 / SM8350, Snapdragon MTP, Two Beacon EmbeddedWorks, Intel eASIC N5X, Netgear R8000P, Plymovent M2M, Beacon i.MX8M Nano, NanoPi M4B.
    • Lisatud on Purism Librem5 Evergreen, Xperia Z3+/Z4/Z5, ASUS Zenfone 2 Laser, BQ Aquaris X5, OnePlus6, OnePlus6T, Samsung GT-I9070 nutitelefonide tugi.
    • Lisatud on bcm-vk draiver Broadcom VK kiirendiplaatidele (näiteks Valkyrie ja Viper PCIe plaadid), mida saab kasutada heli-, video- ja pilditöötlustoimingute ning krüpteerimisega seotud toimingute eraldi seadmesse mahalaadimiseks.
    • Lisatud tugi Lenovo IdeaPad platvormile koos võimalusega juhtida pidevat laadimist ja klaviatuuri taustvalgustust. Pakutakse ka ThinkPadi platvormi ACPI profiili tuge koos võimalusega juhtida energiatarbimise režiime. Lisatud draiver Lenovo ThinkPad X1 Tablet Gen 2 HID alamsüsteemile.
    • Lisatud ov5647 draiver, mis toetab Raspberry Pi kaameramoodulit.
    • Lisatud tugi RISC-V SoC FU740 ja HiFive Unleashed plaatidele. Lisatud on ka Kendryte K210 kiibi uus draiver.

Allikas: opennet.ru

Lisa kommentaar