Linuxi 5.15 kerneli väljalase

Pärast kahekuulist arendustööd esitles Linus Torvalds Linuxi kerneli 5.15 väljalaset. Märkimisväärsed muudatused hõlmavad järgmist: uus kirjutamistoega NTFS-draiver, SMB-serveri juurutusega ksmbd-moodul, DAMON-i alamsüsteem mälu juurdepääsu jälgimiseks, reaalajas lukustusprimitiivid, fs-verity tugi Btrfs-is, protsessi_mrelease süsteemikutse nälgimisele reageerimise süsteemide mälu jaoks, kaugsertifitseerimismoodul dm-ima.

Uus versioon sisaldab 13499 1888 parandust 42 arendajalt, paiga suurus on 10895 MB (muudatused puudutasid 632522 299966 faili, lisati 45 5.15 koodirida, 14 14 rida kustutati). Umbes 6% kõigist versioonis 3 sisse viidud muudatustest on seotud seadme draiveritega, ligikaudu XNUMX% muudatustest on seotud riistvaraarhitektuurile omase koodi uuendamisega, XNUMX% on seotud võrgupinuga, XNUMX% on seotud failisüsteemidega ja XNUMX% on seotud sisemiste tuuma alamsüsteemidega.

Peamised uuendused:

  • Ketta alamsüsteem, I/O ja failisüsteemid
    • Kernel võttis kasutusele NTFS-failisüsteemi uue teostuse, mille avas Paragon Software. Uus draiver võib töötada kirjutusrežiimis ja toetab kõiki NTFS 3.1 praeguse versiooni funktsioone, sealhulgas laiendatud failiatribuute, juurdepääsuloendeid (ACL), andmete tihendamise režiimi, tõhusat tööd tühjade ruumidega failides (hõre) ja muudatuste taasesitamist logi terviklikkuse taastamiseks pärast rikkeid.
    • Btrfs-failisüsteem toetab fs-verity mehhanismi, mida kasutatakse üksikute failide terviklikkuse ja autentsuse läbipaistvaks kontrollimiseks, kasutades metaandmete alasse salvestatud failidega seotud krüptograafilisi räsi või võtmeid. Varem oli fs-verity saadaval ainult Ext4 ja F2fs failisüsteemide jaoks.

      Btrfs lisab ka toe ühendatud failisüsteemide kasutajatunnuste vastendamiseks (varem toetati FAT-, ext4- ja XFS-failisüsteemide jaoks). See funktsioon võimaldab võrrelda ühendatud välispartitsioonil oleva konkreetse kasutaja faile praeguse süsteemi teise kasutajaga.

      Muud Btrfsi muudatused hõlmavad järgmist: võtmete kiirem lisamine kataloogiindeksisse, et parandada faili loomise jõudlust; võimalus töötada raid0 ühe seadmega ja raid10 kahega (näiteks massiivi ümberkonfigureerimise ajal); valik "rescue=ibadroots", et ignoreerida vale ulatuse puud; toimingu "saatmine" kiirendamine; lukustuskonfliktide vähendamine ümbernimetamistoimingute ajal; võimalus kasutada 4K sektoreid süsteemides, mille mälu lehe suurus on 64K.

    • XFS-is on stabiliseerunud võimalus kasutada failisüsteemis kuupäevi pärast 2038. aastat. Rakendatud on mehhanism viivitatud inode deaktiveerimiseks ja tugi viivitatud installimiseks ja failiatribuutide eemaldamiseks. Probleemide kõrvaldamiseks on juba ühendatud partitsioonide kettakvootide keelamise võimalus eemaldatud (saate kvoodid sunniviisiliselt keelata, kuid nendega seotud arvutamine jätkub, seega on nende täielikuks keelamiseks vaja uuesti installida).
    • EXT4-s on tehtud tööd delalloci puhvrite kirjutamise ja orbfailide töötlemise jõudluse suurendamiseks, mis on endiselt olemas, kuna need jäävad avatuks, kuid ei ole kataloogiga seotud. Loobumistoimingute töötlemine on jbd2 kthreadi lõimest välja viidud, et vältida toimingute blokeerimist metaandmetega.
    • F2FS lisas suvandi "discard_unit=block|segment|section", et siduda hülgamistoimingud (märgib vabastatud plokid, mida ei pruugita enam füüsiliselt salvestada) ploki, sektori, segmendi või sektsiooniga joondamisele. Lisatud tugi I/O latentsusaja muutuste jälgimiseks.
    • EROFS (Extendable Read-Only File System) failisüsteem lisab tihendamiseta salvestatud failidele otsese I/O-toe, aga ka fiemap-toe.
    • OverlayFS rakendab paigalduslippude "muutmatu", "ainult lisatav", "sünkroonimine" ja "noatime" õiget käsitlemist.
    • NFS on parandanud olukordade käsitlemist, kus NFS-server lõpetab päringutele vastamise. Lisatud on võimalus ühendada serverist, mis on juba kasutusel, kuid millele pääseb juurde teise võrguaadressi kaudu.
    • Ettevalmistused FSCACHE alamsüsteemi ümberkirjutamiseks on alanud.
    • Lisatud EFI-sektsioonide tugi GPT-tabelite mittestandardse paigutusega.
    • Fanotify mehhanism rakendab uue lipu FAN_REPORT_PIDFD, mis põhjustab pidfd kaasamise tagastatavatesse metaandmetesse. Pidfd aitab käsitleda PID-i taaskasutusolukordi, et täpsemalt tuvastada jälgitavatele failidele juurde pääsevad protsessid (pidfd on seotud konkreetse protsessiga ega muutu, samas kui PID-i saab seostada mõne teise protsessiga pärast seda, kui selle PID-ga seotud praegune protsess lõpeb).
    • Süsteemikõnele move_mount() lisati võimalus lisada olemasolevatele jagatud rühmadele ühenduspunkte, mis lahendab protsessi oleku salvestamise ja taastamisega seotud probleemid CRIU-s, kui eraldatud konteinerites on jagatud mitu paigaldusruumi.
    • Lisatud kaitse varjatud võistlustingimuste eest, mis võivad faili tühikute töötlemisel vahemälu lugemisel põhjustada failide rikkumist.
    • Failide kohustusliku (kohustusliku) lukustamise tugi, mida rakendatakse faili muutmiseni viivate süsteemikutsete blokeerimise kaudu, on lõpetatud. Võimalike võistlustingimuste tõttu peeti neid lukke ebausaldusväärseks ja need kaotati aastaid tagasi.
    • Eemaldatud on LightNVM-i alamsüsteem, mis võimaldas emulatsioonikihist mööda minnes otsejuurdepääsu SSD-draivile. LightNVM kaotas oma tähenduse pärast tsoneerimist sätestavate NVMe standardite (ZNS, Zoned Namespace) tulekut.
  • Mälu- ja süsteemiteenused
    • Rakendatud on alamsüsteem DAMON (Data Access MONitor), mis võimaldab jälgida RAM-is andmetele juurdepääsuga seotud tegevusi seoses valitud protsessiga, mis töötab kasutajaruumis. Alamsüsteem võimaldab analüüsida, millistele mälupiirkondadele protsess kogu oma tööaja jooksul ligi pääses ja millised mälupiirkonnad jäid kasutamata. DAMONil on madal protsessori koormus, väike mälutarbimine, suur täpsus ja prognoositav pidev üldkulu, sõltumata suurusest. Alamsüsteemi saavad kasutada nii kernel mäluhalduse optimeerimiseks kui ka kasutajaruumis olevad utiliidid, et mõista, mida protsess täpselt teeb, ja optimeerida mälukasutust, vabastades näiteks süsteemi jaoks liigse mälu.
    • Süsteemikutse process_mrelease on rakendatud, et kiirendada protsessi mälu vabastamise protsessi, mis lõpetab selle täitmise. Tavaolukorras ei toimu ressursi vabastamine ja protsessi lõpetamine silmapilkselt ja see võib erinevatel põhjustel viibida, häirides kasutajaruumi mälu varajase reageerimise süsteeme, nagu oomd (pakkub systemd) ja lmkd (kasutab Android). Kutsudes protsessi_mrelease, saavad sellised süsteemid ennustatavamalt käivitada sunnitud protsessidest mälu tagasivõtmise.
    • PREEMPT_RT kerneli harust, mis arendab reaalajas töötamise tuge, on üle kantud RT-Mutexi alamsüsteemil põhinevad primitiivide variandid lukkude korraldamiseks mutex, ww_mutex, rw_semaphore, spinlock ja rwlock. SLUB-i plaadijaoturisse on lisatud muudatusi, et parandada tööd režiimis PREEMPT_RT ja vähendada mõju katkestustele.
    • Atribuudi SCHED_IDLE ülesannete planeerija tugi on lisatud cgroupi, mis võimaldab teil seda atribuuti pakkuda kõigile konkreetsesse cgroupi kuuluva rühma protsessidele. Need. need protsessid käivituvad ainult siis, kui süsteemis pole ühtegi teist täitmist ootavat ülesannet. Erinevalt atribuudi SCHED_IDLE määramisest igale protsessile eraldi, võetakse SCHED_IDLE sidumisel c-rühmaga täidetava ülesande valimisel arvesse rühmasiseste ülesannete suhtelist kaalu.
    • Mälutarbimise arvestamise mehhanismi cgroupis on laiendatud võimalusega jälgida täiendavaid kerneli andmestruktuure, sealhulgas neid, mis on loodud küsitluse, signaalitöötluse ja nimeruumide jaoks.
    • Lisatud on protsessorituumadega ülesannete sidumise asümmeetrilise ajastamise tugi arhitektuuridel, milles mõned CPU-d võimaldavad 32-bitiste ülesannete täitmist ja mõned töötavad ainult 64-bitises režiimis (näiteks ARM). Uus režiim võimaldab teil 32-bitiste toimingute ajastamisel arvestada ainult neid protsessoreid, mis toetavad 32-bitisi ülesandeid.
    • Asünkroonne I/O liides io_uring toetab nüüd failide avamist otse fikseeritud faili registritabelis, ilma failideskriptorit kasutamata, mis võimaldab teatud tüüpi toiminguid märkimisväärselt kiirendada, kuid läheb vastuollu Unixi traditsioonilise failideskriptorite kasutamise protsessiga. failide avamiseks.

      BIO (Block I/O Layer) alamsüsteemi io_uring rakendab uut taaskasutusmehhanismi (“BIO taaskasutus”), mis vähendab sisemälu haldamise protsessi üldkulusid ja suurendab töödeldud I/O operatsioonide arvu sekundis ligikaudu 10% võrra. . io_uring lisab ka toe süsteemikutsetele mkdirat(), symlinkat() ja linkat().

    • BPF-programmide jaoks on rakendatud taimeri sündmuste taotlemise ja töötlemise võimalus. Lisatud on UNIX-i pesade iteraator ning juurutatud on setsockopti pesavalikute hankimise ja seadistamise võimalus. BTF-kallur toetab nüüd trükitud andmeid.
    • Erinevat tüüpi mäluga NUMA-süsteemides, mille jõudlus on erinev, kantakse vaba ruumi ammendumisel väljatõstetud mälulehed dünaamilisest mälust (DRAM) aeglasemale püsimällule (püsmälu), selle asemel, et neid lehti kustutada. Testid on näidanud, et selline taktika parandab tavaliselt selliste süsteemide jõudlust. NUMA pakub ka võimalust eraldada protsessi jaoks mälulehti valitud NUMA-sõlmede komplektist.
    • ARC arhitektuuri jaoks on rakendatud kolme- ja neljatasemeliste mälulehtede tabelite tugi, mis võimaldab veelgi toetada 64-bitisi ARC protsessoreid.
    • S390 arhitektuuri jaoks on rakendatud võimalus kasutada mäluga töötamisel vigade tuvastamiseks KFENCE mehhanismi ning lisatud on KCSAN võistlusseisundi detektori tugi.
    • Lisatud on tugi printk() kaudu väljuvate sõnumite loendi indekseerimiseks, mis võimaldab teil kõik sellised kirjad korraga alla laadida ja kasutajaruumis toimuvaid muutusi jälgida.
    • mmap() eemaldas suvandi VM_DENYWRITE toe ja kerneli kood on eemaldatud režiimi MAP_DENYWRITE kasutamisest, mis on vähendanud olukordade arvu, mis põhjustavad ETXTBSY veaga faili kirjutamise blokeerimise.
    • Jälgimise alamsüsteemi on lisatud uut tüüpi kontrollid „Sündmuste proovid”, mille saab lisada olemasolevatele jälgimissündmustele, määratledes oma väljundvormingu.
    • Kerneli ehitamisel kompilaatori Clang abil kasutatakse nüüd LLVM-projekti vaikekoostajat.
    • Osana projektist, mille eesmärk oli vabastada kernel koodist, mille tulemusel kompilaator väljastab hoiatusi, viidi läbi eksperiment vaikimisi lubatud režiimiga "-Werror", milles kompilaatori hoiatusi töödeldakse vigadena. 5.15 väljalaseks valmistudes hakkas Linus aktsepteerima ainult muudatusi, mis ei toonud kaasa hoiatusi kerneli ehitamisel ja lubas ehitamise "-Werroriga", kuid nõustus siis, et selline otsus on ennatlik ja lükkas "-Werrori" vaikimisi lubamise edasi. . Lipu “-Werror” kaasamist monteerimise ajal juhitakse parameetri WERROR abil, mille vaikimisi on määratud COMPILE_TEST, st. Praegu on see lubatud ainult testversioonide jaoks.
  • Virtualiseerimine ja turvalisus
    • Seadmesse Device Mapper (DM) on lisatud uus dm-ima töötleja koos IMA (Integrity Measurement Architecture) alamsüsteemil põhineva kaugsertifitseerimise mehhanismi juurutamisega, mis võimaldab välisteenusel kontrollida kerneli alamsüsteemide olekut, et tagada nende autentsus. . Praktikas võimaldab dm-ima Device Mapperi abil luua väliste pilvesüsteemidega lingitud salvestusruume, milles IMA abil kontrollitakse käivitatud DM-i sihtkonfiguratsiooni kehtivust.
    • prctl() rakendab uut suvandit PR_SPEC_L1D_FLUSH, mille lubamisel tühjendab kernel esimese taseme (L1D) vahemälu sisu iga kord, kui toimub kontekstivahetus. See režiim võimaldab valikuliselt kõige olulisemate protsesside jaoks rakendada täiendavat kaitset külgkanalite rünnakute kasutamise eest, et teha kindlaks andmed, mis on CPU käskude spekulatiivsest täitmisest põhjustatud haavatavuste tõttu vahemällu settinud. PR_SPEC_L1D_FLUSH (pole vaikimisi lubatud) lubamise hind on märkimisväärne jõudlustrahv.
    • Kerneli on võimalik ehitada, lisades GCC-le lipu "-fzero-call-used-regs=used-gpr", mis tagab, et kõik registrid lähtestatakse enne funktsioonilt juhtimise tagastamist nulli. See valik võimaldab teil kaitsta funktsioonide teabelekke eest ja vähendada 20% võrra nende plokkide arvu, mis sobivad ROP (Return-Oriented Programming) vidinate ehitamiseks ärakasutamises.
    • Rakendatud on võimalus luua ARM64 arhitektuuri jaoks tuumasid Hyper-V hüperviisori klientide kujul.
    • Pakutakse välja uus draiveri arendusraamistik “VDUSE”, mis võimaldab realiseerida virtuaalseid plokkseadmeid kasutajaruumis ning kasutada Virtiot külalissüsteemidest juurdepääsu transpordina.
    • Lisatud Virtio draiver I2C siinile, mis võimaldab emuleerida I2C kontrollereid paravirtualiseerimisrežiimis, kasutades eraldi taustaprogramme.
    • Lisatud Virtio draiver gpio-virtio, et võimaldada külalistel juurdepääsu hostsüsteemi pakutavatele GPIO liinidele.
    • Lisatud on võimalus piirata DMA toega seadmedraiverite juurdepääsu mälulehtedele süsteemides, kus puudub I/O MMU (mäluhaldusüksus).
    • KVM-i hüperviisoril on võimalus kuvada statistikat lineaarsete ja logaritmiliste histogrammide kujul.
  • Võrgu alamsüsteem
    • Moodul ksmbd on kernelisse lisatud SMB3 protokolli kasutava failiserveri rakendamisega. Moodul täiendab kernelis varem saadaval olnud SMB-kliendi juurutamist ja erinevalt kasutajaruumis töötavast SMB-serverist on jõudluse, mälutarbimise ja täiustatud kerneli võimalustega integreerimise osas tõhusam. Ksmbd on reklaamitud kui suure jõudlusega manustatud Samba laiendus, mis integreerub vastavalt vajadusele Samba tööriistade ja teekidega. ksmbd võimaluste hulka kuulub kohalike süsteemide hajutatud failide vahemällu salvestamise tehnoloogia (SMB liising) täiustatud tugi, mis võib liiklust oluliselt vähendada. Tulevikus plaanivad nad lisada RDMA (“smbdirect”) toe ja protokollilaiendusi, mis on seotud krüptimise ja digitaalallkirjade abil kontrollimise usaldusväärsuse suurendamisega.
    • CIFS-klient ei toeta enam NTLM-i ja SMB1-protokollis kasutatavaid nõrgemaid DES-põhiseid autentimisalgoritme.
    • Multisaadete tugi on rakendatud vlanide võrgusildade juurutamisel.
    • Võrguliideste koondamiseks kasutatav sidumisdraiver on lisanud toe XDP (eXpress Data Path) alamsüsteemile, mis võimaldab teil manipuleerida võrgupakettidega etapis, enne kui neid töötleb Linuxi kerneli võrgupinn.
    • Traadita pinu mac80211 toetab 6GHZ STA (Special Temporary Authorization) LPI-, SP- ja VLP-režiimides, samuti võimalust seadistada pääsupunkti režiimis individuaalset TWT-d (Target Wake Time).
    • Lisatud tugi MCTP-le (halduskomponentide transpordiprotokoll), mida kasutatakse halduskontrollerite ja nendega seotud seadmete (hostprotsessorid, välisseadmed jne) vaheliseks suhtluseks.
    • 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 täismesh-režiimis aadresside toe.
    • Netfiltrisse on lisatud SRv6 (Segment Routing IPv6) protokolli kapseldatud võrguvoogude töötlejad.
    • Lisatud Unixi voogedastuspesade sokikaardi tugi.
  • Оборудование
    • Amdgpu draiver toetab Cyan Skillfishi APU-sid (varustatud Navi 1x GPU-dega). Yellow Carp APU toetab nüüd videokoodekeid. Täiustatud Aldebarani GPU tugi. Lisatud on uued kaardiidentifikaatorid, mis põhinevad GPU Navi 24 “Beige Goby” ja RDNA2-l. Tehakse ettepanek virtuaalsete ekraanide (VKMS) täiustatud juurutamiseks. Rakendatud on AMD Zen 3 kiipide temperatuuri jälgimise tugi.
    • Amdkfd draiver (diskreetsete GPU-de jaoks, nagu Polaris) rakendab HMM-i (heterogeense mäluhalduse) alamsüsteemil põhinevat jagatud virtuaalmälu haldurit (SVM, jagatud virtuaalmälu), mis võimaldab kasutada seadmeid, millel on oma mäluhaldusüksused (MMU). , mäluhaldusseade), mis pääseb juurde põhimällu. Eelkõige saate HMM-i abil korraldada GPU ja CPU vahel jagatud aadressiruumi, kus GPU pääseb juurde protsessi põhimällu.
    • Inteli videokaartide i915 draiver laiendab TTM-i videomäluhalduri kasutamist ja sisaldab võimalust hallata energiatarbimist GuC (Graphics micro Controller) baasil. Ettevalmistused Intel ARC Alchemist graafikakaardi ja Intel Xe-HP GPU toe juurutamiseks on alanud.
    • Uus draiver rakendab eDP-paneelide taustvalgustuse juhtimist, kasutades DPCD-d (DisplayPort Configuration Data).
    • Msm-draiverile on lisatud Adreno 7c Gen 3 ja Adreno 680 GPU-de tugi.
    • IOMMU draiver on rakendatud Apple M1 kiibile.
    • Lisatud helidraiver AMD Van Goghi APU-del põhinevatele süsteemidele.
    • Lavastusharusse on lisatud Realtek R8188EU draiver, mis asendas Realtek RTL8188EU 8188 b/g/n juhtmeta kiipide draiveri vana versiooni (rtl802.11eu).
    • Meta (Facebook) poolt välja töötatud PCIe plaadile on kaasas miniatuurse aatomkella ja GNSS vastuvõtja realiseerimisega ocp_pt draiver, mille abil saab korraldada eraldi täpse aja sünkroniseerimise serverite tööd.
    • Lisatud on Sony Xperia 10II (Snapdragon 665), Xiaomi Redmi 2 (Snapdragon MSM8916), Samsung Galaxy S3 (Snapdragon MSM8226), Samsung Gavini/Codina/Kyle nutitelefonide tugi.
    • Lisatud on tugi ARM SoС ja NVIDIA Jetson TX2 NX arendajakomplektile, Sancloud BBE Lite, PicoITX, DRC02, SolidRun SolidSense, SKOV i.MX6, Nitrogen8, Traverse Ten64, GW7902, Microchip SAMA7, ualcomm RDM636 Snapdra8150/SSMase plaadid -3G/M2e-3G, Marvell CN2x, ASpeed ​​​​AST913 (Facebook Cloudripper, Elbert ja Fuji serveriplaadid), 2600KOpen STiH4-b418.
    • Lisatud on Gopher 2b LCD paneelide tugi, EDT ETM0350G0DH6/ETMV570G2DHU, LOGIC Technologies LTTD800480070-L6WH-RT, Multi-Innotechnology MI1010AIT-1CP1, Innolux EJ030NA 3.0B9341B3300, EJ33NA 20. ATNA7430XC2401 XNUMX, Samsung DBXNUMX, WideChips WSXNUMX .
    • Lisatud LiteETH-draiver, mis toetab LiteX-i tarkvara SoC-des (FPGA-de jaoks) kasutatavaid Etherneti kontrollereid.
    • USB-helidraiverile on lisatud madala latentsusaja suvand, et kontrollida toimingu kaasamist minimaalse latentsusaja režiimis. Seadmespetsiifiliste sätete edastamiseks on lisatud ka suvand quirk_flags.

Samal ajal moodustas Ladina-Ameerika Vaba Tarkvara Fond versiooni täiesti tasuta kernelist 5.15 - Linux-libre 5.15-gnu, mis on puhastatud püsivara elementidest ja draiveritest, mis sisaldavad mittevabu komponente või koodilõike, mille ulatus on piiratud. tootja poolt. Uus väljalase esitab logile teate puhastamise lõpetamise kohta. Lahendatud on probleemid mkspeci abil pakettide genereerimisel, täiustatud on snap-pakettide tugi. Mõned päisefaili firmware.h töötlemisel kuvatud hoiatused on eemaldatud. Lubatud väljastada teatud tüüpi hoiatusi (“format-extra-args”, kommentaarid, kasutamata funktsioonid ja muutujad) režiimis “-Werror” ehitamisel. Lisatud gehc-achc draiveri puhastus. Värskendatud blob-puhastuskood draiverites ja alamsüsteemides adreno, btusb, btintel, brcmfmac, aarch64 qcom. Draiverite prism54 (eemaldatud) ja rtl8188eu (asendatud r8188eu) puhastamine on peatatud.

Allikas: opennet.ru

Lisa kommentaar