Linux 5.14 branduolio leidimas

Po dviejų mėnesių kūrimo Linusas Torvaldsas pristatė Linux branduolio 5.14 versiją. Tarp ryškiausių pakeitimų: nauji quotactl_fd() ir memfd_secret() sistemos iškvietimai, ide ir raw tvarkyklių pašalinimas, naujas įvesties/išvesties prioriteto valdiklis cgroup, SCHED_CORE užduočių planavimo režimas, patikrintų BPF programų kroviklių kūrimo infrastruktūra.

Naujoje versijoje yra 15883 2002 pataisymai iš 69 12580 kūrėjų, pataisos dydis yra 861501 MB (pakeitimai palietė 321654 47 failų, pridėta 5.14 14 kodo eilutė, ištrinta 13 3 eilutės). Apie 3% visų pakeitimų, pateiktų XNUMX versijoje, yra susiję su įrenginių tvarkyklėmis, maždaug XNUMX% pakeitimų yra susiję su aparatinės įrangos architektūroms būdingo kodo atnaujinimu, XNUMX% yra susiję su tinklo dėku, XNUMX% yra susiję su failų sistemomis ir XNUMX% yra susiję su vidiniais branduolio posistemiais.

Pagrindinės naujovės:

  • Disko posistemis, I/O ir failų sistemos
    • Įdiegtas naujas cgroups įvesties/išvesties prioritetų valdiklis rq-qos, galintis valdyti kiekvienos cgrupės narių generuojamų užklausų blokuoti įrenginius apdorojimo prioritetą. Naujas prioritetinio valdiklio palaikymas buvo įtrauktas į mq-deadline I/O planuoklį.
    • Ext4 failų sistema įgyvendina naują ioctl komandą EXT4_IOC_CHECKPOINT, kuri verčia visas laukiančias operacijas iš žurnalo ir su jais susijusių buferių išplauti į diską, taip pat perrašo sritį, kurią naudoja žurnalas saugykloje. Pakeitimas buvo parengtas įgyvendinant iniciatyvą, kuria siekiama užkirsti kelią informacijos nutekėjimui iš failų sistemų.
    • Atliktas Btrfs našumo optimizavimas: pašalinus nereikalingą išplėstinių atributų registravimą fsync vykdymo metu, intensyvių operacijų su išplėstiniais atributais našumas padidėjo iki 17%. Be to, atliekant apkarpymo operacijas, kurios neturi įtakos apimčiai, pilnas sinchronizavimas išjungiamas, o tai sumažino operacijos laiką 12%. Prie sysf buvo pridėtas nustatymas, skirtas apriboti įvesties / išvesties pralaidumą tikrinant FS. Pridėta ioctl skambučių, kad būtų atšauktos įrenginio dydžio keitimo ir ištrynimo operacijos.
    • XFS sistemoje buvo pertvarkytas buferinės talpyklos diegimas, kuris buvo perjungtas į atminties puslapių paskirstymą paketiniu režimu. Pagerintas talpyklos efektyvumas.
    • F2FS prideda parinktį veikti tik skaitymo režimu ir įdiegia suspausto bloko talpyklos režimą (compress_cache), kad pagerintų atsitiktinio skaitymo našumą. Įdiegtas palaikymas glaudinant failus, susietus su atmintimi naudojant operaciją mmap(). Norint pasirinktinai išjungti failų glaudinimą pagal kaukę, buvo pasiūlyta nauja montavimo parinktis nocompress.
    • Buvo atliktas darbas exFAT tvarkyklėje, siekiant pagerinti suderinamumą su tam tikra skaitmeninių fotoaparatų saugykla.
    • Pridėtas quotactl_fd() sistemos iškvietimas, leidžiantis valdyti kvotas ne per specialų įrenginio failą, o nurodant failo aprašą, susietą su failų sistema, kuriai taikoma kvota.
    • Senos blokinių įrenginių su IDE sąsaja tvarkyklės buvo pašalintos iš branduolio, jas jau seniai pakeitė libata posistemis.
    • „Raw“ tvarkyklė buvo pašalinta iš branduolio, suteikianti nebuferinę prieigą prie blokuojamų įrenginių per /dev/raw sąsają. Ši funkcija jau seniai įdiegta programose, kuriose naudojama vėliavėlė O_DIRECT.
  • Atminties ir sistemos paslaugos
    • Užduočių planuoklis įdiegia naują planavimo režimą SCHED_CORE, kuris leidžia valdyti, kurie procesai gali būti vykdomi kartu tame pačiame procesoriaus branduolyje. Kiekvienam procesui galima priskirti slapuko identifikatorių, kuris apibrėžia procesų pasitikėjimo mastą (pavyzdžiui, priklausymą tam pačiam vartotojui ar konteineriui). Organizuodamas kodo vykdymą, planuotojas gali užtikrinti, kad vienas procesoriaus branduolys būtų dalijamasi tik tarp procesų, susietų su tuo pačiu savininku, kuris gali būti naudojamas blokuoti kai kurias Spectre atakas, užkertant kelią patikimoms ir nepatikimoms užduotims vykdyti toje pačioje SMT (Hyper Threading) gijoje. .
    • Cgroup buvo įdiegtas nužudymo operacijos palaikymas, kuris leidžia vienu metu nužudyti visus su grupe susijusius procesus (išsiųsti SIGKILL), įrašant „1“ į virtualų failą cgroup.kill.
    • Išplėstos galimybės, susijusios su reagavimu į suskaidytų užraktų ("padalytų užraktų") aptikimą, atsirandantį pasiekiant nesuderintus duomenis atmintyje dėl to, kad vykdant atominę komandą duomenys kerta dvi procesoriaus talpyklos eilutes. Toks blokavimas žymiai sumažina našumą, todėl anksčiau buvo galima priverstinai nutraukti blokavimą sukėlusią programą. Naujame leidime pridedamas branduolio komandinės eilutės parametras „split_lock_detect=ratelimit:N“, leidžiantis nustatyti visos sistemos užrakinimo operacijų greičio ribą per sekundę, kurią viršijus bet kuris procesas, tapęs padalinto užrakto šaltiniu. bus priverstas sustoti 20 ms, o ne nutraukti.
    • cgroup pralaidumo valdiklis CFS (CFS bandwidth controller), kuris nustato kiek procesoriaus laiko gali būti skiriama kiekvienai cgrupei, įgyvendina galimybę apibrėžti laiko limitus, kas leidžia geriau reguliuoti delsai jautrius darbo krūvius. Pavyzdžiui, nustačius cpu.cfs_quota_us į 50000 ir cpu.cfs_period_us iki 100000, procesų grupė kas 100 ms sugaiš 50 ms procesoriaus laiko.
    • Pridėta pradinė BPF programų kroviklių kūrimo infrastruktūra, kuri toliau leis įkelti tik BPF programas, pasirašytas patikimu skaitmeniniu raktu.
    • Pridėta nauja futex operacija FUTEX_LOCK_PI2, kuri naudoja monotoninį laikmatį, kad apskaičiuotų skirtąjį laiką, atsižvelgiant į laiką, kurį sistema praleidžia miego režimu.
    • RISC-V architektūrai įdiegtas didelių atminties puslapių (Transparent Huge-Pages) palaikymas ir galimybė naudoti KFENCE mechanizmą, kad aptiktų klaidas dirbant su atmintimi.
    • Sistemos iškvietimas madvise(), kuris suteikia galimybę optimizuoti proceso atminties valdymą, pridėjo MADV_POPULATE_READ ir MADV_POPULATE_WRITE vėliavėles, kad generuotų „puslapio gedimą“ visuose atminties puslapiuose, susietuose su skaitymo ar rašymo operacijomis, neatliekant tikro skaitymo ar rašymo. (išankstinis). Vėliavos naudojimas gali būti naudingas norint sumažinti programos vykdymo vėlavimą dėl aktyvaus „puslapio gedimo“ tvarkyklės vykdymo visiems nepaskirstytiems puslapiams vienu metu, nelaukiant, kol bus prieiga prie jų.
    • „Kunit“ vienetų testavimo sistema papildė testų vykdymo QEMU aplinkoje palaikymą.
    • Pridėta naujų sekimo priemonių: „osnoise“, kad būtų galima sekti taikymo vėlavimus, atsiradusius dėl pertrūkių tvarkymo, ir „timerlat“, kad būtų rodoma išsami informacija apie vėlavimą, kai atsibunda nuo laikmačio signalo.
  • Virtualizacija ir saugumas
    • Sistemos iškvietimas memfd_secret() buvo pridėtas, kad būtų sukurta privačios atminties sritis izoliuotoje adresų erdvėje, matoma tik turinčiam procesui, neatsispindi kitiems procesams ir tiesiogiai nepasiekiama branduoliui.
    • Seccomp sistemos skambučių filtravimo sistemoje, perkeliant blokavimo tvarkykles į vartotojo erdvę, galima naudoti vieną atominę operaciją, kad būtų sukurtas failo deskriptorius izoliuotai užduočiai ir grąžinamas apdorojant sistemos iškvietimą. Siūloma operacija išsprendžia tvarkyklės pertraukimo vartotojo erdvėje problemą, kai gaunamas signalas.
    • Pridėtas naujas resursų apribojimų valdymo mechanizmas vartotojo ID vardų srityje, susiejantis atskirus rlimit skaitiklius su vartotoju „vartotojo vardų erdvėje“. Pakeitimas išsprendžia problemą, susijusią su bendrų išteklių skaitiklių naudojimu, kai vienas vartotojas vykdo procesus skirtinguose konteineriuose.
    • KVM hipervizorius, skirtas ARM64 sistemoms, pridėjo galimybę naudoti MTE (MemTag, Memory Tagging Extension) plėtinį svečių sistemose, kuri leidžia susieti žymas kiekvienai atminties paskirstymo operacijai ir organizuoti tikrinimą, ar tinkamai naudojamos rodyklės, kad blokuotų pažeidžiamumas, atsirandantis dėl prieigos prie jau atlaisvintų atminties blokų, buferio perpildymo, prieigų prieš inicijavimą ir naudojimo ne dabartiniame kontekste.
    • ARM64 platformos rodyklės autentifikavimo priemones dabar galima konfigūruoti atskirai branduoliui ir naudotojo erdvei. Ši technologija leidžia naudoti specializuotas ARM64 instrukcijas, kad patikrintumėte grąžinimo adresus, naudojant skaitmeninius parašus, kurie saugomi nenaudojamuose viršutiniuose paties žymeklio bituose.
    • Vartotojo režimas Linux papildė PCI įrenginių tvarkyklių naudojimą su virtualia PCI magistrale, įdiegtą PCI-over-virtio tvarkykle.
    • x86 sistemoms papildomas virtio-iommu paravirtualizuoto įrenginio palaikymas, leidžiantis IOMMU užklausas, tokias kaip ATTACH, DETACH, MAP ir UNMAP, siųsti virtio transportu, neimuliuojant atminties puslapių lentelių.
    • Intel CPU, nuo Skylake šeimos iki Coffee Lake, Intel TSX (transakcijų sinchronizavimo plėtiniai), kurie suteikia įrankius, padedančius pagerinti kelių gijų taikomųjų programų našumą, dinamiškai pašalinant nereikalingas sinchronizavimo operacijas, naudojimas yra išjungtas pagal numatytuosius nustatymus. Plėtiniai išjungti dėl galimų „Zombieload“ atakų, kurios manipuliuoja informacijos nutekėjimu trečiųjų šalių kanalais, atsirandančiais veikiant TAA (TSX asinchroninio nutraukimo) mechanizmui.
  • Tinklo posistemis
    • Integracija į MPTCP (MultiPath TCP) šerdį, TCP protokolo plėtinį, skirtą organizuoti TCP ryšio veikimą ir tuo pačiu metu pristatyti paketus keliais maršrutais per skirtingas tinklo sąsajas, susijusias su skirtingais IP adresais. Nauja versija prideda mechanizmą, leidžiantį nustatyti savo IPv4 ir IPv6 srauto maišos politiką (daugiatakių maišos politika), leidžiančią iš vartotojo erdvės nustatyti, kurie paketų laukai, įskaitant įkapsuliuotus, bus naudojami skaičiuojant maišą, kuri nustato paketo kelio pasirinkimas.
    • Į virtio virtualų transportą įtrauktas SOCK_SEQPACKET lizdų palaikymas (tvarkingas ir patikimas datagramų perdavimas).
    • Išplėstos SO_REUSEPORT lizdo mechanizmo galimybės, leidžiančios vienu metu prisijungti prie vieno prievado keliems klausymosi lizdams, kad gautų ryšius su gaunamų užklausų paskirstymu vienu metu visuose lizduose, prijungtuose per SO_REUSEPORT, o tai supaprastina kelių gijų serverio programų kūrimą. . Naujoje versijoje pridedami įrankiai, skirti valdyti valdymą į kitą lizdą, jei nepavyksta apdoroti užklausos iš pradžių pasirinktame lizde (išsprendžia atskirų ryšių praradimo problemą iš naujo paleidžiant paslaugas).
  • įranga
    • Amdgpu tvarkyklė palaiko naują AMD Radeon RX 6000 seriją GPU, kodiniais pavadinimais "Beige Goby" (Navi 24) ir "Yellow Carp", taip pat patobulintą Aldebaran GPU (gfx90a) ir Van Gogh APU palaikymą. Pridėta galimybė vienu metu dirbti su keliomis eDP plokštėmis. APU Renoir buvo įdiegtas palaikymas darbui su šifruotais buferiais vaizdo atmintyje (TMZ, patikimos atminties zona). Pridėtas karšto atjungimo vaizdo plokščių palaikymas. Radeon RX 6000 (Navi 2x) GPU ir senesniuose AMD GPU pagal numatytuosius nustatymus įjungtas ASPM (Active State Power Management) palaikymas, kuris anksčiau buvo įjungtas tik Navi 1x, Vega ir Polaris GPU.
    • AMD lustams buvo pridėtas bendrosios virtualiosios atminties (SVM, bendrosios virtualiosios atminties) palaikymas, pagrįstas HMM (Heterogeneous memory management) posistemiu, kuris leidžia naudoti įrenginius su savo atminties valdymo blokais (MMU, atminties valdymo blokas), kuri gali pasiekti pagrindinę atmintį. Visų pirma, naudodami HMM, galite organizuoti bendrą adresų erdvę tarp GPU ir procesoriaus, kuriame GPU gali pasiekti pagrindinę proceso atmintį.
    • Pridėtas pradinis palaikymas AMD Smart Shift technologijai, kuri dinamiškai keičia procesoriaus ir GPU maitinimo nustatymus nešiojamuosiuose kompiuteriuose su AMD mikroschemų rinkiniu ir vaizdo plokšte, kad padidintų žaidimų, vaizdo redagavimo ir 3D atvaizdavimo našumą.
    • „Intel“ vaizdo plokščių i915 tvarkyklė palaiko „Intel Alderlake P“ lustus.
    • Pridėta „Hyper-V“ virtualios grafikos adapterio drm/hyperv tvarkyklė.
    • Pridėtas Raspberry Pi 400 viskas viename kompiuterio palaikymas.
    • Pridėta dell-wmi-privatumo tvarkyklė, skirta palaikyti aparatinės įrangos kameros ir mikrofono jungiklius, esančius Dell nešiojamuosiuose kompiuteriuose.
    • „Lenovo“ nešiojamiesiems kompiuteriams buvo pridėta WMI sąsaja, skirta pakeisti BIOS nustatymus per sysfs /sys/class/firmware-attributes/.
    • Išplėstas įrenginių su USB4 sąsaja palaikymas.
    • Pridėtas AmLogic SM1 TOACODEC, Intel AlderLake-M, NXP i.MX8, NXP TFA1, TDF9897, Rockchip RK817, Qualcomm Quinary MI2 ir Texas Instruments TAS2505 garso plokščių ir kodekų palaikymas. Patobulintas garso palaikymas HP ir ASUS nešiojamuosiuose kompiuteriuose. Pridėta pataisų, skirtų sumažinti delsą, kol garsas pradedamas leisti USB įrenginiuose.

Šaltinis: opennet.ru

Добавить комментарий