Branduolio išleidimas Linux 5.16

Po dviejų mėnesių kūrimo Linus Torvalds išleido branduolį. Linux 5.16 Tarp žymiausių pakeitimų: „futex_waitv“ sistemos raginimas pagerinti našumą Windows- Vyno žaidimai, failų sistemos klaidų sekimas per „fanotify“, folijų koncepcija atminties valdymo sistemoje, AMX procesoriaus instrukcijų palaikymas, galimybė rezervuoti atmintį tinklo lizdams, „netfilter“ paketų klasifikavimo palaikymas „išėjimo“ etape, DAMON posistemio naudojimas nenaudojamų atminties sričių aktyviam iškeldinimui, patobulintas perkrovų valdymas atliekant didelius rašymo operacijų kiekius, kelių diskų standžiųjų diskų palaikymas.

Naujoje versijoje yra 15415 2105 pataisymai iš 45 12023 kūrėjų, pataisos dydis yra 685198 MB (pakeitimai palietė 263867 44 failus, buvo pridėta 5.16 16 kodo eilutės, ištrinta 16 4 eilutės). Apie 4% 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 5.16 branduolio naujovės:

  • Disko posistemis, I/O ir failų sistemos
    • Į fanotify mechanizmą buvo įtraukti įrankiai, skirti stebėti failų sistemos būseną ir sekti klaidų atsiradimą. Informacija apie klaidas perduodama naudojant naujo tipo įvykius – FAN_FS_ERROR, kuriuos galima perimti vartotojų erdvėje veikiančiose stebėjimo sistemose, kad būtų galima operatyviai informuoti administratorių arba pradėti atkūrimo procesus. Kai pakopiškai įvyksta daugybė klaidų, „fanotify“ užtikrina, kad pirmasis klaidos pranešimas būtų pristatytas kartu su bendru problemų skaitikliu, kad būtų supaprastinta tolesnė gedimo priežasties analizė. Klaidų stebėjimo palaikymas šiuo metu įdiegtas tik Ext4 failų sistemoje.
    • Patobulintas rašymo perkrovos valdymas, kuris atsiranda, kai rašymo operacijų apimtis viršija disko pralaidumą ir sistema yra priversta blokuoti proceso rašymo užklausas, kol bus užbaigtos jau pateiktos užklausos. Naujoje versijoje branduolio mechanizmas, naudojamas informacijai apie perkrovą ir užduočių blokavimą gauti, buvo visiškai pertvarkytas, nes senajame įgyvendinime kilo problemų, susijusių su rašymo perkrovos apdorojimo susiejimu su atminties puslapių perkėlimu į apsikeitimo sandorį. skyrių, kai sistemoje nepakanka atminties.
    • Btrfs įdiegia įrenginių zonavimo technologijos (Zoned Namespace) palaikymą, naudojamą standžiuosiuose diskuose arba NVMe SSD, kad būtų galima padalinti saugojimo vietą į zonas, kurios sudaro blokų arba sektorių grupes, į kurias leidžiama tik nuosekliai pridėti duomenis, atnaujinant visą blokai. Be to, buvo atliktas nedidelis inode registravimo optimizavimas, dėl kurio dbench testo pralaidumas padidėjo 3%, o delsa sumažėjo 11%. Katalogų registravimo mechanizmas buvo perkurtas, todėl siekiant padidinti efektyvumą sumažintas paieškos ir blokavimo operacijų skaičius medyje. Pagreitintas elementų įterpimas į bmedžio struktūrą paketiniu režimu (masinio elementų įterpimo laikas sutrumpėjo 4%, o trynimo – 12%). Pridėtas ribotas suspaudimo palaikymas rašant dalinius puslapius, taip pat galimybė defragmentuoti antrinius puslapius. Buvo ruošiamasi įgalinti antrąją protokolo versiją, skirtą komandai „siųsti“.
    • XFS failų sistema sumažina atminties sąnaudas naudodama atskiras plokščių talpyklas dažnai naudojamiems elementams ir sumažindama kai kurias duomenų struktūras.
    • „Ext4“ failų sistemoje pažymimi tik klaidų pataisymai ir tikslesnis „Inode“ lentelės tingaus inicijavimo parametrų skaičiavimas.
    • Optimizavimas buvo įgyvendintas blokinio įrenginio lygmeniu, siekiant žymiai padidinti susiejimo operacijų su procesoriaus branduoliais efektyvumą.
    • Pridėtas pradinis standžiųjų diskų su keliais nepriklausomais diskais palaikymas (daugia pavara), leidžiantis vienu metu pasiekti kelis sektorius skirtingose ​​magnetinės plokštelės srityse.
    • Pridėta nauja ioctl komanda CDROM_TIMED_MEDIA_CHANGE, skirta aptikti laikmenos keitimo įvykius optinio disko įrenginyje.
    • EROFS (patobulinta tik skaitymo failų sistema) failų sistema papildė galimybę dirbti su keliais saugojimo įrenginiais. Į vieną 32 bitų bloko adresų erdvę galima susieti skirtingus įrenginius. Taip pat buvo pridėtas suspaudimo palaikymas naudojant LZMA algoritmą.
    • Prie F2FS failų sistemos buvo pridėtos montavimo parinktys, kad būtų galima valdyti failų suskaidymą, kai jie dedami į saugyklą (pavyzdžiui, derinant optimizavimą dirbant su fragmentuota saugykla).
    • CEPH pagal numatytuosius nustatymus įgalina asinchroninį katalogų kūrimą ir trynimą (prijungdami naudokite žymą „-o wsync“, kad grįžtumėte į seną veikimą). Pridėta metrikos priežiūra, kuri seka išorinių objektų kopijavimo operacijas.
    • Prie CIFS buvo pridėtas tcpnodelay mount parametras, kuris nustato tinklo lizdo tcp_sock_set_nodelay režimą, kuris neleidžia laukti, kol eilė užpildys TCP krūvą. Pridėtas įdėtųjų DFS nuorodų (paskirstytos failų sistemos) palaikymas montuojant iš naujo.
    • Pridėtas bloko įrenginio užklausų užbaigimo paketiniu režimu palaikymas. Pakeitimo testavimas parodė, kad atsitiktinio skaitymo operacijų iš Optane diskų intensyvumas padidėjo nuo 6.1 iki 6.6 milijono IOPS viename procesoriaus branduolyje.
  • Atminties ir sistemos paslaugos
    • Pridėtas naujas sisteminis iškvietimas „futex_waitv“, leidžiantis stebėti kelių „futex“ būseną vienu sisteminiu iškvietimu. Ši funkcija panaši į tą, kuri yra prieinama „ Windows „WaitForMultipleObjects“ funkcionalumas, kurio emuliacija naudojant „futex_waitv“ gali būti naudinga našumui gerinti Windows-žaidimai, veikiantys su „Wine“ arba „Proton“. Be to, vienalaikiai „futex waits“ taip pat gali būti naudojami norint optimizuoti vietinių žaidimų kompiliacijų našumą. Linux.
    • Įdiegta puslapių aplankų koncepcija, kurios naudojimas kai kuriose branduolio posistemėse pagreitins atminties valdymą esant įprastoms darbo apkrovoms. Šiuo metu pagrindinė atminties valdymo posistemė branduolyje ir puslapio talpyklos įdiegimas jau perkeltas į folius, o failų sistemas planuojama perkelti ateityje. Ateityje taip pat planuojama į branduolį įtraukti kelių puslapių aplankų palaikymą.

      Tomai primena sudėtinius puslapius, tačiau turi patobulintą semantiką ir aiškesnį darbo organizavimą. Norint valdyti sistemos atmintį, turima RAM yra padalinta į atminties puslapius, kurių dydis skiriasi priklausomai nuo architektūros, tačiau x86 sistemose matuojama kilobaitais (paprastai 4096 baitai). Šiuolaikinėse sistemose yra dešimtys gigabaitų RAM, todėl atminties valdymas tampa sudėtingesnis, nes reikia apdoroti daugybę atminties puslapių. Siekdamas sumažinti puslapių skaičių, branduolys anksčiau įdiegė sudėtinių puslapių koncepciją, kurios struktūra apima daugiau nei vieną fizinį atminties puslapį. Tačiau API, skirta manipuliuoti sulietais atminties puslapiais, paliko daug norimų rezultatų ir sukėlė papildomų išlaidų.

    • Prie užduočių planavimo priemonės buvo pridėtas tvarkytuvas, kuris atsižvelgia į CPU talpyklos grupavimą. Kai kuriuose procesoriuose, tokiuose kaip Kunpeng 920 (ARM) ir Intel Jacobsville (x86), tam tikras skaičius procesoriaus branduolių, paprastai 4, gali sujungti L3 arba L2 talpyklą. Atsižvelgiant į tokias topologijas, užduočių planavimo priemonėje galima žymiai pagerinti užduočių paskirstymo tarp procesoriaus branduolių efektyvumą, nes užduočių perkėlimas tame pačiame procesoriaus klasteryje leidžia padidinti prieigos prie atminties pralaidumą ir sumažinti talpyklos varžymąsi.
    • Pridėtas palaikymas AMX (Advanced Matrix Extensions) instrukcijoms, įdiegtoms būsimuose Intel Xeon Scalable serverio procesoriuose, kodiniu pavadinimu Sapphire Rapids. AMX siūlo naujus konfigūruojamus TMM „TILE“ registrus ir instrukcijas, skirtas manipuliuoti šių registrų duomenimis, pavyzdžiui, TMUL (Tile matrix MULTiply) matricos dauginimui.
    • Įdiegtos kelios naujos funkcijos, pagrįstos paskutinėje laidoje pridėtu DAMON (Data Access MONitor) posistemiu, leidžiančiu stebėti prieigą prie duomenų RAM atmintyje, atsižvelgiant į pasirinktą vartotojo erdvėje veikiantį procesą. Pavyzdžiui, posistemis leidžia analizuoti, kurias atminties sritis procesas pasiekė viso savo veikimo metu, o kurios atminties sritys liko nepanaudotos.
      • DAMON_RECLAIM, kad nustatytumėte ir iškeltumėte atminties sritis, kurios nebuvo pasiektos. Šis mechanizmas gali būti naudojamas aktyviam atminties puslapių išstūmimui, kai laisvoji atmintis baigiasi.
      • DAMOS (Duomenų prieigos stebėjimu pagrįstos operacijų schemos), skirtos nurodytoms madvise() operacijoms taikyti, pvz., papildomos laisvos atminties atleidimui, apdoroti atminties sritis, kurioms yra fiksuotas tam tikras prieigos prie atminties dažnis. DAMOS parametrai konfigūruojami naudojant debugfs.
      • Galimybė stebėti fizinę atminties adresų erdvę (anksčiau buvo galima stebėti tik virtualius adresus).
    • zstd glaudinimo algoritmo įgyvendinimas atnaujintas iki 1.4.10 versijos, o tai žymiai pagerino įvairių branduolio posistemių, naudojančių glaudinimą, našumą (pavyzdžiui, branduolio vaizdo išpakavimas paspartintas 35 proc., suspaustų duomenų išpakavimo našumas Btrfs ir SquashFS išaugo 15%, o ZRAM - 30%. Iš pradžių branduolys naudojo atskirą zstd įgyvendinimą, pagrįstą 1.3.1 versija, kuri buvo išleista daugiau nei prieš trejus metus ir neapėmė daug svarbių optimizavimų. Be perėjimo prie dabartinės versijos, pridėta pataisa taip pat supaprastina sinchronizavimą su zstd prieš srove esančia šaka, leidžiančia generuoti kodą įtraukimui į branduolį tiesiai iš pagrindinės zstd saugyklos. Ateityje zstd kodą branduolyje planuojama atnaujinti, kai bus išleistos naujos zstd bibliotekos versijos.
    • Didelė dalis eBPF posistemio patobulinimų buvo atlikta. Pridėta galimybė iškviesti branduolio modulio funkcijas iš BPF programų. Funkcija bpf_trace_vprintk() buvo įdiegta, skirtingai nei bpf_trace_printk(), kuri leidžia vienu metu išvesti daugiau nei tris argumentus. Pridėtas naujas duomenų saugojimo struktūros (BPF žemėlapio) žydėjimo filtras, leidžiantis naudoti to paties pavadinimo tikimybinę duomenų struktūrą elemento buvimui rinkinyje nustatyti. Pridėtas naujas atributas BTF_KIND_TAG, kurį BPF programose galima naudoti norint susieti žymes su funkcijų parametrais, pavyzdžiui, siekiant supaprastinti klaidų aptikimą vartotojo programose. Libbpf programoje galima susikurti savo .rodata.*/.data.* sekcijas, įdiegtas uprobe ir kprobe trace įvykių palaikymas, pridėta API visų BTF tipų kopijavimui iš vieno objekto į kitą. AF_XDP palaikymas buvo perkeltas iš libbpf į atskirą libxdp biblioteką. MIPS architektūrai BPF virtualiajai mašinai buvo įdiegtas JIT kompiliatorius.
    • ARM64 architektūrai buvo įdiegtas laikmačio ARMv8.6 plėtinių palaikymas, įskaitant tuos, kurie leidžia automatiškai sinchronizuoti sistemos registrų atvaizdavimą nenaudojant ISB instrukcijų.
    • PA-RISC architektūrai įdiegta galimybė naudoti KFENCE mechanizmą, kad aptiktų klaidas dirbant su atmintimi, taip pat pridėtas KCSAN lenktynių sąlygų detektoriaus palaikymas.
    • Galima konfigūruoti prieigos prie pėdsakų teises, pavyzdžiui, atskirų vartotojų ir grupių lygiu, dabar galite leisti prieigą prie sekimo įrankių tik tam tikros grupės nariams.
  • Virtualizacija ir saugumas
    • „io_uring“ ir „Device-mapper“ posistemiai įgyvendina audito įvykių generavimo palaikymą. io_uring suteikia galimybę valdyti prieigą per LSM modulius. Pridėta galimybė patikrinti openat2() sistemos iškvietimą.
    • Branduolio kode visiškai nėra ištisinių didžiųjų ir mažųjų raidžių išraiškų jungiklyje (po kiekvieno atvejo bloko nėra grįžimo ar pertraukos). Kuriant branduolį dabar bus galima naudoti „-Wimplicit-fallthrough“ režimą.
    • Įtraukti pakeitimai, skirti sugriežtinti ribų patikrinimus vykdant funkciją memcpy ().
    • Asinchroninė įvesties/išvesties sąsaja „io_uring“ dabar leidžia įvesties/išvesties operacijoms taikyti SE modulių apibrėžtas saugumo politikas.Linux ir Smackas.
    • IMA (Integrity Measurement Architecture) posistemis, leidžiantis išorinei tarnybai patikrinti branduolio posistemių būseną, siekiant užtikrinti jų autentiškumą, įgyvendina galimybę taikyti taisykles pagal grupės identifikatorių (GID), kuriam priklauso failas arba kuriam vartotojas. prieiga prie failo priklauso.
    • Pagal numatytuosius nustatymus išjungti kai kurie pažangūs mechanizmai, skirti apsaugoti seccomp() gijas nuo Spectre atakų, kurie buvo laikomi nereikalingais ir nepagerino saugumo, tačiau neigiamai paveikė našumą. Retpoline apsaugos naudojimas buvo peržiūrėtas.
    • Pašalintas kriptolopo mechanizmo įgyvendinimas, kuris 2004 m. buvo pakeistas dm-crypt ir, jei reikia, palaiko tuos pačius algoritmus.
    • Pagal numatytuosius nustatymus neprivilegijuota prieiga prie eBPF posistemio yra draudžiama. Pakeitimas buvo atliktas siekiant užkirsti kelią BPF programų naudojimui siekiant apeiti apsaugą nuo šoninių kanalų atakų. Jei reikia, administratorius gali atkurti neprivilegijuotiems vartotojams galimybę naudoti eBPF.
    • ACRN hipervizorius, sukurtas užduotims atlikti realiuoju laiku ir naudoti svarbiose sistemose, papildė virtualių įrenginių kūrimo/trynimo ir MMIO įrenginių persiuntimo palaikymą.
    • KPP (Key-agreement Protocol Primitives) apibrėžimų palaikymas buvo įtrauktas į šifravimo variklį, supaprastinant kriptosistemų tvarkyklių kūrimo logiką.
    • „Hyper-V“ hipervizoriuje įdiegtas izoliacijos režimo palaikymas. virtualios mašinos, kuris apima atminties turinio šifravimą.
    • Hipervizoriuje KVM Pridėtas RISC-V architektūros palaikymas. Įdiegta virtualių mašinų, veikiančių naudojant AMD SEV ir SEV-ES plėtinius, migracija pagrindiniame kompiuteryje. Pridėta API, skirta tiesioginei svečių sistemų, užšifruotų naudojant AMD SEV (saugią užšifruotą virtualizaciją), migracijai.
    • „PowerPC“ architektūrai pagal numatytuosius nustatymus įjungtas STRICT_KERNEL_RWX režimas, kuris blokuoja atminties puslapių, kuriuos vienu metu galima rašyti ir vykdyti, naudojimą.
    • 32 bitų x86 sistemose buvo nutrauktas atminties karštojo prijungimo palaikymas, kuris neveikė daugiau nei metus.
    • Liblockdep biblioteka buvo pašalinta iš branduolio ir dabar bus prižiūrima atskirai nuo branduolio.
  • Tinklo posistemis
    • Lizdams įdiegta nauja parinktis SO_RESERVE_MEM, su kuria galima rezervuoti tam tikrą kiekį atminties lizdui, kuri visada liks prieinama lizdui ir nebus pašalinta. Naudodami šią parinktį galite padidinti našumą sumažinant atminties paskirstymą ir atkūrimo operacijas tinklo krūvoje, ypač kai sistemoje trūksta atminties.
    • Pridėtas automatinio daugialypės siuntimo tuneliavimo (RFC 7450) protokolo palaikymas, leidžiantis perduoti daugialypės terpės srautą iš tinklų, palaikančių Multicast, gavėjams tinkluose be daugialypės siuntimo. Protokolas veikia inkapsuliuojant į UDP paketus.
    • Patobulintas IOAM (In-situ Operations, Administration and Maintenance) duomenų inkapsuliavimas į tranzito paketus.
    • Galimybė valdyti siųstuvo-imtuvo energijos suvartojimo režimus buvo įtraukta į ethtool netlink API.
    • Netfilter posistemis įgyvendina galimybę klasifikuoti paketus išėjimo lygiu, t.y. etape, kai tvarkyklė gauna paketą iš branduolio tinklo kamino. Nftables atitinkamų filtrų palaikymas pasirodė 1.0.1 versijoje. „Netfilter“ pridėjo galimybę palyginti ir keisti vidines UDP ir TCP (vidinės antraštės / naudingosios apkrovos) antraštes ir duomenis, ateinančius po transportavimo antraštės.
    • Pridėti nauji sysctl parametrai arp_evict_nocarrier ir ndisc_evict_nocarrier, kai jie nustatyti, nutrūkus ryšiui (NOCARRIER) bus išvalyta ARP talpykla ir ndisc (kaimyno aptikimo) lentelė.
    • Mažo delsos, mažo nuostolio ir keičiamo pralaidumo (L4S) režimai buvo įtraukti į fq_code (Controlled Delay) tinklo eilių valdymo mechanizmą.
  • įranga
    • Amdgpu tvarkyklė teikia pradinį DP 2.0 specifikacijos (DisplayPort 2.0) ir DisplayPort tuneliavimo per USB4 palaikymą. Cyan Skillfish APU (su GPU Navi 1x) buvo pridėtas ekrano valdiklių palaikymas. Išplėstas Yellow Carp APU (Ryzen 6000 „Rembrandt“ mobiliųjų procesorių) palaikymas.
    • „i915“ tvarkyklė stabilizuoja „Intel Alderlake S“ lustų palaikymą ir įdiegia „Intel PXP“ („Protected Xe Path“) technologijos palaikymą, leidžiančią organizuoti aparatinės įrangos apsaugotą grafikos seansą sistemose su „Intel Xe“ lustais.
    • Buvo atliktas darbas naujojoje tvarkyklėje, siekiant ištaisyti klaidas ir patobulinti kodo stilių.
    • Pridėta parama su x86 suderinamiems „Vortex“ procesoriams („Vortex86MX“). Linux Anksčiau jis veikė panašiuose procesoriuose, tačiau norint išjungti apsaugą nuo „Spectre“ / „Meltdown“ atakų, kurios netaikomos minėtiems lustams, reikėjo aiškiai identifikuoti minėtus procesorius.
    • Pridėtas pradinis x86 platformų palaikymas, skirtas „Surface Pro 8“ ir „Surface Laptop Studio“.
    • Pridėta tvarkyklė, palaikanti garso lustus, naudojamus AMD Yellow Carp, Van Gogh APU, taip pat pridėtas palaikymas garso sistemoms ir kodekams Cirrus CS35L41, Maxim MAX98520/MAX98360A, Mediatek MT8195, Nuvoton NAU8821, NVIDIA Tegra210, NVIDIA Tegra8, NVIDIA Tegra5682, N Reachlcom ULXP i. ALC5682I-VS, RT9120S, RT1126, Rockchip RV3568 ir RKXNUMX.
    • Pridėta ishtp_eclite tvarkyklė, leidžianti pasiekti Intel PSE (Programmable Service Engine) įterptuosius valdiklius naudojant ISHTP (Integratd Sensor Hub Transport Protocol), pvz., bateriją, temperatūrą ir UCSI (USB Type-C Connector System Software) susijusią informaciją.
    • Pridėta „Nintendo Switch“ žaidimų valdiklių tvarkyklė, palaikanti „Switch Pro“ ir „Joy-Cons“. Pridėtas palaikymas Wacom Intuos BT planšetiniams kompiuteriams (CTL-4100WL/CTL-6100WL) ir Apple 2021 Magic Keyboard. Patobulintas Sony PlayStation DualSense valdiklių palaikymas. Pridėtas Xiaomi Mi pelės šoninių mygtukų palaikymas.
    • Pridėta RT89 tvarkyklė su Realtek 802.11ax belaidžių lustų palaikymu, taip pat Asix AX88796C-SPI Ethernet adapterių ir Realtek RTL8365MB-VC jungiklių tvarkyklės.
    • „Apple M1“ lustams buvo pridėtos PCI ir PASemi i2c tvarkyklės.
    • Pridėtas ARM SoС palaikymas, įrenginiai ir plokštės Raspberry Pi Compute Module 4, Fairphone 4, Snapdragon 690, LG G Watch R, Sony Xperia 10 III, Samsung Galaxy S4 Mini Value Edition, Xiaomi MSM8996 (Mi 5, Mi Note 2, Mi 5s , Mi Mix, Mi 5s Plus ir Xiaomi Mi 5), Sony Yoshino (Sony Xperia XZ1 ir Sony Xperia XZ Premium), F(x)tec Pro1 QX1000, Microchip LAN966, CalAmp LMU5000, Exegin Q5xR5, sama7g5, Samsung RockchipAutov „RK9“ kaip R3566A3399M * , Xilinx Kria, Radxa Zero, JetHub D4/H3399, Netronix E4K3328.

Šaltinis: opennet.ru

Pirkite patikimą prieglobą svetainėms su DDoS apsauga, VPS VDS serveriais 🔥 Įsigykite patikimą svetainių talpinimą su DDoS apsauga, VPS VDS serveriais | ProHoster