Linux kernvrystelling 5.16

Na twee maande se ontwikkeling het Linus Torvalds die vrystelling van die Linux-kern 5.16 aangebied. Van die mees noemenswaardige veranderinge: die futex_waitv-stelseloproep om die werkverrigting van Windows-speletjies in Wine te verbeter, foutopsporing in die FS via fanotify, die konsep van folio's in die geheuebestuurstelsel, ondersteuning vir AMX-verwerkerinstruksies, die vermoë om geheue te reserveer vir netwerksokke, ondersteuning vir pakkieklassifikasie op die stadium in netfilter “uitgang”, die DAMON-substelsel gebruik om ongebruikte geheue-areas proaktief uit te sit, die hantering van oorladings met 'n groot volume skryfbewerkings te verbeter, ondersteuning vir multi-skywe hardeskywe.

Die nuwe weergawe bevat 15415 2105 regstellings van 45 12023 ontwikkelaars, die pleistergrootte is 685198 MB (die veranderinge het 263867 44 lêers geraak, 5.16 16 reëls kode is bygevoeg, 16 4 reëls is uitgevee). Ongeveer 4% van alle veranderinge wat in XNUMX aangebring is, hou verband met toestelbestuurders, ongeveer XNUMX% van veranderinge hou verband met die opdatering van kode spesifiek vir hardeware-argitekture, XNUMX% hou verband met die netwerkstapel, XNUMX% hou verband met lêerstelsels en XNUMX% hou verband met interne kernsubstelsels.

Sleutel innovasies in kern 5.16:

  • Skyfsubstelsel, I/O en lêerstelsels
    • Gereedskap is by die fanotify-meganisme gevoeg om die toestand van die lêerstelsel te monitor en die voorkoms van foute op te spoor. Inligting oor foute word oorgedra deur gebruik te maak van 'n nuwe tipe gebeurtenisse - FAN_FS_ERROR, wat onderskep kan word in moniteringstelsels wat in gebruikersruimte loop om die administrateur dadelik in te lig of herstelprosesse te begin. Wanneer 'n reeks foute vloeiend voorkom, verseker fanotify dat die eerste foutboodskap saam met 'n algemene probleemteller afgelewer word om die daaropvolgende ontleding van die oorsaak van die mislukking te vereenvoudig. Ondersteuning vir foutopsporing word tans slegs vir die Ext4-lêerstelsel geïmplementeer.
    • Verbeterde hantering van skryfopeenhoping, wat plaasvind wanneer die volume skryfbewerkings die aandrywer se deurset oorskry en die stelsel gedwing word om 'n proses se skryfversoeke te blokkeer totdat die versoeke wat reeds ingedien is, voltooi is. In die nuwe weergawe is die kernmeganisme wat gebruik word om inligting te bekom oor die voorkoms van oorlading en blokkering van take heeltemal herontwerp, aangesien daar in die ou implementering probleme was met die koppeling van die verwerking van skryfoorlading met die verplasing van geheuebladsye in die ruil afdeling wanneer daar onvoldoende geheue in die stelsel is.
    • Btrfs implementeer ondersteuning vir toestelsoneringtegnologie (Gesoneerde Naamruimte), wat in hardeskywe of NVMe SSD's gebruik word om stoorspasie in sones te verdeel, wat groepe blokke of sektore uitmaak, waarin slegs opeenvolgende byvoeging van data toegelaat word, wat die hele groep van blokke. Boonop is geringe optimaliserings aan inode-registrasie gemaak, wat die deurset in die dbench-toets met 3% verhoog het en latensie met 11% verminder het. Die gidsregistrasiemeganisme is herontwerp, waarin die aantal soek- en blokkeerbewerkings in die boom verminder is om doeltreffendheid te verhoog. Die invoeging van elemente in die btree-struktuur in bondelmodus is versnel (die tyd vir grootmaat-invoeging van elemente is met 4% verminder, en verwydering met 12%). Bygevoeg beperkte ondersteuning vir die gebruik van kompressie wanneer gedeeltelike bladsye geskryf word, sowel as die vermoë om subbladsye te defragmenteer. Voorbereidings is getref om ondersteuning vir die tweede weergawe van die protokol vir die "stuur"-opdrag moontlik te maak.
    • Die XFS-lêerstelsel verminder geheueverbruik deur afsonderlike plakkas te gebruik vir items wat gereeld gebruik word en sommige datastrukture te verminder.
    • In die Ext4-lêerstelsel word slegs foutoplossings en meer akkurate berekening van die lui initialiseringsparameters van die Inode-tabel opgemerk.
    • Optimalisasies is op die bloktoestelvlak geïmplementeer om die doeltreffendheid van die koppeling van bedrywighede aan SVE-kerne aansienlik te verhoog.
    • Bygevoeg aanvanklike ondersteuning vir hardeskywe met verskeie onafhanklike aandrywers (multi-aktuator), wat dit moontlik maak om gelyktydig toegang tot verskeie sektore in verskillende areas van die magnetiese plaat te verkry.
    • Het 'n nuwe ioctl-opdrag CDROM_TIMED_MEDIA_CHANGE bygevoeg om mediaveranderingsgebeure in 'n optiese skyfstasie op te spoor.
    • Die EROFS-lêerstelsel (Enhanced Read-Only File System) het die vermoë bygevoeg om bo-op verskeie bergingstoestelle te werk. Verskillende toestelle kan na 'n enkele 32-bis blokadresspasie gekarteer word. Ondersteuning vir kompressie met behulp van die LZMA-algoritme is ook bygevoeg.
    • Monteeropsies is by die F2FS-lêerstelsel gevoeg om lêerfragmentasie te beheer wanneer dit in berging geplaas word (byvoorbeeld om optimaliserings te ontfout om met gefragmenteerde berging te werk).
    • CEPH stel asinchroniese gidsskepping en -skrap by verstek moontlik (gebruik die '-o wsync'-vlag wanneer dit gemonteer word om terug te keer na die ou gedrag). Bygevoeg instandhouding van metrieke wat kopieerbewerkings van eksterne voorwerpe opspoor.
    • 'n tcpnodelay-monteerparameter is by CIFS gevoeg, wat die tcp_sock_set_nodelay-modus vir die netwerksok stel, wat wag vir die tou om die TCP-stapel in te vul deaktiveer. Bygevoeg ondersteuning vir geneste DFS-skakels (verspreide lêerstelsel) tydens hermontering.
    • Bygevoeg ondersteuning vir die voltooiing van versoeke aan 'n blok toestel in bondel af. Toetsing van die verandering het 'n toename in die intensiteit van ewekansige leesbewerkings vanaf Optane-aandrywers van 6.1 tot 6.6 miljoen IOPS op 'n enkele SVE-kern getoon.
  • Geheue en stelseldienste
    • Het 'n nuwe stelseloproep futex_waitv bygevoeg, wat jou toelaat om die toestand van verskeie futexes tegelyk te monitor deur 'n enkele stelseloproep te gebruik. Hierdie kenmerk herinner aan die WaitForMultipleObjects-funksionaliteit wat in Windows beskikbaar is, waarvan navolging via futex_waitv nuttig kan wees om die werkverrigting van Windows-speletjies wat onder Wine of Proton loop, te verbeter. Daarbenewens kan gelyktydige wag vir futexes ook gebruik word om die werkverrigting van inheemse speletjies vir Linux te optimaliseer.
    • Die konsep van bladsyfolio's is geïmplementeer, waarvan die gebruik in sommige kernsubstelsels geheuebestuur onder tipiese werkladings sal bespoedig. Tans is die hoofgeheuebestuursubstelsel in die kern en die implementering van die bladsykas reeds na folio's oorgedra, en lêerstelsels word beplan om in die toekoms oorgedra te word. In die toekoms word daar ook beplan om ondersteuning vir multi-bladsy folio's by die kern te voeg.

      Tomes lyk soos saamgestelde bladsye, maar het verbeterde semantiek en 'n duideliker organisasie van werk. Om stelselgeheue te bestuur, word beskikbare RAM in geheuebladsye verdeel, waarvan die grootte volgens argitektuur verskil, maar op x86-stelsels word gemeet in kilogrepe (tipies 4096 grepe). Moderne stelsels kom met tientalle gigagrepe RAM, wat geheuebestuur meer kompleks maak as gevolg van die behoefte om 'n groot aantal geheuebladsye te verwerk. Om die aantal bladsye te verminder, het die kern voorheen die konsep van saamgestelde bladsye geïmplementeer met strukture wat oor meer as een fisiese bladsy van geheue strek. Maar die API vir die manipulering van saamgevoegde geheuebladsye het veel te wense oorgelaat en gelei tot bykomende oorkoste.

    • 'n Hanteerder is by die taakskeduleerder gevoeg wat kasgroepering op die SVE in ag neem. In sommige verwerkers, soos Kunpeng 920 (ARM) en Intel Jacobsville (x86), kan 'n sekere aantal SVE-kerns, gewoonlik 4, L3- of L2-kas kombineer. Om sulke topologieë in ag te neem, kan die doeltreffendheid van die verspreiding van take oor SVE-kerns in die taakskeduleerder aansienlik verbeter, aangesien die verskuiwing van take binne dieselfde SVE-groepering die geheuetoegang-deurset verhoog en die kaskonflikt verminder.
    • Bygevoeg ondersteuning vir AMX (Advanced Matrix Extensions) instruksies geïmplementeer in die komende Intel Xeon Scalable bediener verwerkers, kodenaam Sapphire Rapids. AMX bied nuwe konfigureerbare TMM "TILE" registers en instruksies vir die manipulering van data in hierdie registers, soos TMUL (Tile matriks MULTiply) vir matriks vermenigvuldiging.
    • Verskeie nuwe kenmerke is geïmplementeer gebaseer op die DAMON (Data Access MONitor) substelsel wat in die laaste vrystelling bygevoeg is, wat jou toelaat om toegang tot data in RAM te monitor met betrekking tot die geselekteerde proses wat in gebruikersruimte loop. Die substelsel maak dit byvoorbeeld moontlik om te ontleed watter geheue-areas die proses tydens sy hele operasie verkry het, en watter geheue-areas onopgeëis gebly het.
      • DAMON_RECLAIM om geheuegebiede wat nie toeganklik is nie, te identifiseer en uit te sit. Die meganisme kan gebruik word om geheuebladsye proaktief uit te sit wanneer vrye geheue amper uitgeput is.
      • DAMOS (Data Access Monitoring-based Operation Schemes) vir die toepassing van gespesifiseerde madvise() bewerkings, soos die vrystelling van bykomende vrye geheue, om geheue areas te verwerk waarvoor 'n sekere frekwensie van geheue toegang vasgestel is. DAMOS-parameters word gekonfigureer via debugfs.
      • Vermoë om die fisiese adresruimte van geheue te monitor (voorheen kon slegs virtuele adresse gemonitor word).
    • Die implementering van die zstd-kompressie-algoritme is opgedateer na weergawe 1.4.10, wat die werkverrigting van verskeie kernsubstelsels wat kompressie gebruik aansienlik verbeter het (byvoorbeeld, die uitpak van 'n kernbeeld is met 35% versnel, die werkverrigting van die uitpak van saamgeperste data in Btrfs en SquashFS het met 15% toegeneem, en in ZRAM - met 30%. Die kern het aanvanklik 'n aparte implementering van zstd gebruik, gebaseer op weergawe 1.3.1, wat meer as drie jaar gelede vrygestel is en nie baie belangrike optimaliserings ingesluit het nie. Benewens die skuif na die huidige weergawe, vereenvoudig die bygevoegde pleister ook sinchronisasie met die zstd stroomop-tak, waardeur u kode vir insluiting in die kern direk vanaf die hoof-zstd-bewaarplek kan genereer. In die toekoms word beplan om die zstd-kode in die kern bygewerk te word namate nuwe weergawes van die zstd-biblioteek vrygestel word.
    • 'n Groot gedeelte van die verbeterings is aan die eBPF-substelsel aangebring. Bygevoeg die vermoë om kernmodule-funksies van BPF-programme op te roep. Die bpf_trace_vprintk() funksie is geïmplementeer, anders as bpf_trace_printk(), wat jou toelaat om meer as drie argumente gelyktydig uit te voer. 'n Nuwe databergingstruktuur (BPF-kaart) blomfilter is bygevoeg, wat jou toelaat om die waarskynlike datastruktuur met dieselfde naam te gebruik om die teenwoordigheid van 'n element in die stel te bepaal. 'n Nuwe kenmerk BTF_KIND_TAG is bygevoeg, wat in BPF-programme gebruik kan word om etikette aan funksieparameters te bind, byvoorbeeld om die opsporing van foute in gebruikerprogramme te vereenvoudig. In libbpf is dit moontlik om jou eie .rodata.*/.data.*-afdelings te skep, ondersteuning vir uprobe- en kprobe-spoorgebeurtenisse is geïmplementeer, en 'n API is bygevoeg om alle BTF-tipes van een voorwerp na 'n ander te kopieer. AF_XDP-ondersteuning is van libbpf na 'n aparte libxdp-biblioteek geskuif. Vir die MIPS-argitektuur is 'n JIT-samesteller vir die BPF virtuele masjien geïmplementeer.
    • Vir die ARM64-argitektuur is ondersteuning vir ARMv8.6-uitbreidings vir die timer geïmplementeer, insluitend dié wat selfsinchroniserende voorstelling van stelselregisters toelaat sonder om ISB-instruksies te gebruik.
    • Vir die PA-RISC-argitektuur is die vermoë om die KFENCE-meganisme te gebruik om foute op te spoor wanneer daar met geheue gewerk word, geïmplementeer, en ondersteuning vir die KCSAN-rastoestanddetektor is bygevoeg.
    • Dit is moontlik om toegangsregte tot tracefs op die vlak van individuele gebruikers en groepe op te stel; byvoorbeeld, jy kan nou toegang tot opsporingsnutsmiddels slegs aan lede van 'n sekere groep toelaat.
  • Virtualisering en sekuriteit
    • Die io_uring- en toestelkaart-substelsels implementeer ondersteuning vir die generering van ouditgebeurtenisse. io_uring bied die vermoë om toegang deur LSM-modules te beheer. Bygevoeg die vermoë om die openat2 () stelsel oproep te oudit.
    • Die kernkode is heeltemal vry van deurlopende hoofletteruitdrukkings in skakelaar (geen terugkeer of breek na elke hoofletterblok nie). Wanneer die kern gebou word, sal dit nou moontlik wees om die "-Wimplicit-fallthrough"-modus te gebruik.
    • Ingesluit veranderinge om grenskontroles te verskerp wanneer die memcpy()-funksie uitgevoer word.
    • Die io_uring asynchrone I/O-koppelvlak implementeer die vermoë om sekuriteitsbeleide wat deur die SELinux- en Smack-modules gedefinieer is, toe te pas op I/O-bedrywighede.
    • Die IMA (Integrity Measurement Architecture) substelsel, wat 'n eksterne diens toelaat om die toestand van kernsubstelsels te verifieer om hul egtheid te verseker, implementeer die vermoë om reëls toe te pas gebaseer op die groep identifiseerder (GID) waaraan die lêer behoort of waaraan die gebruiker behoort. toegang tot die lêer behoort.
    • Sommige gevorderde meganismes is standaard gedeaktiveer om seccomp()-drade teen Spectre-aanvalle te beskerm, wat as onnodig beskou is en nie sekuriteit aansienlik verbeter het nie, maar prestasie negatief beïnvloed het. Die gebruik van Retpoline-beskerming is hersien.
    • Die implementering van die cryptoloop-meganisme is verwyder, wat in 2004 deur dm-crypt vervang is en, indien nodig, dieselfde algoritmes ondersteun.
    • By verstek is onbevoorregte toegang tot die eBPF-substelsel verbied. Die verandering is gemaak om te verhoed dat BPF-programme gebruik word om beskerming teen sykanaalaanvalle te omseil. Indien nodig, kan die administrateur die vermoë herstel vir nie-bevoorregte gebruikers om eBPF te gebruik.
    • Die ACRN-hypervisor, ontwerp vir intydse take en gebruik in missie-kritiese stelsels, het ondersteuning bygevoeg vir die skep/verwydering van virtuele toestelle en aanstuur van MMIO-toestelle.
    • Ondersteuning vir KPP (Key-agreement Protocol Primitives) definisies is by die kripto-enjin gevoeg, wat die logika van die ontwikkeling van drywers vir kriptostelsels vereenvoudig.
    • Die Hyper-V-hypervisor ondersteun nou virtuele masjien-isolasiemodus, wat enkripsie van geheue-inhoud behels.
    • Die KVM-hipervisor het ondersteuning vir die RISC-V-argitektuur bygevoeg. Die vermoë om virtuele masjiene te migreer wat met die AMD SEV- en SEV-ES-uitbreidings binne die gasheeromgewing gebruik word, is geïmplementeer. Bygevoeg API vir regstreekse migrasie van gastestelsels wat geïnkripteer is met AMD SEV (Secure Encrypted Virtualization).
    • Vir die PowerPC-argitektuur is die STRICT_KERNEL_RWX-modus by verstek geaktiveer, wat die gebruik van geheuebladsye blokkeer wat gelyktydig beskikbaar is vir skryf en uitvoering.
    • Op 32-bis x86-stelsels is ondersteuning vir geheue-hotplug gestaak, wat vir meer as 'n jaar nie werksaam is nie.
    • Die liblockdep-biblioteek is uit die kern verwyder en sal nou apart van die kern onderhou word.
  • Netwerk substelsel
    • Vir voetstukke is 'n nuwe opsie SO_RESERVE_MEM geïmplementeer, waarmee jy 'n sekere hoeveelheid geheue vir 'n sok kan reserveer, wat altyd vir die sok beskikbaar sal bly en nie verwyder sal word nie. Deur hierdie opsie te gebruik, kan u verhoogde werkverrigting behaal deur geheuetoewysing te verminder en bedrywighede in die netwerkstapel te herwin, veral wanneer lae geheuetoestande in die stelsel voorkom.
    • Bygevoeg ondersteuning vir die Automatic Multicast Tunneling (RFC 7450) protokol, wat dit moontlik maak om multicast-verkeer van netwerke wat Multicast ondersteun aan ontvangers op netwerke sonder Multicast te lewer. Die protokol werk deur inkapseling in UDP-pakkies.
    • Verbeterde inkapseling van IOAM (In-situ Operations, Administration, and Maintenance) data in vervoerpakkette.
    • Die vermoë om transceiver-kragverbruikmodusse te beheer is by die ethtool netlink API gevoeg.
    • Die netfilter substelsel implementeer die vermoë om pakkies op die uitgangvlak te klassifiseer, d.w.s. op die stadium wanneer die bestuurder 'n pakkie van die kernnetwerkstapel ontvang. In nftables het ondersteuning vir die ooreenstemmende filters in weergawe 1.0.1 verskyn. Netfilter het die vermoë bygevoeg om interne opskrifte en data te vergelyk en te verander vir UDP en TCP (binnekop / loonvrag) wat na die vervoeropskrif kom.
    • Bygevoeg nuwe sysctl-parameters arp_evict_nocarrier en ndisc_evict_nocarrier, wanneer gestel, sal die ARP-kas en die ndisc (buurontdekking)-tabel skoongemaak word in die geval van 'n verbindingsfout (NOCARRIER).
    • Lae vertraging, lae verlies en skaalbare deurset (L4S) modusse is bygevoeg by die fq_codel (beheerde vertraging) netwerk tou bestuur meganisme.
  • Оборудование
    • Die amdgpu-bestuurder bied aanvanklike ondersteuning vir die DP 2.0-spesifikasie (DisplayPort 2.0) en DisplayPort-tonnellegging oor USB4. Vir Cyan Skillfish APU's (toegerus met GPU Navi 1x) is ondersteuning vir vertoonbeheerders bygevoeg. Ondersteuning vir Yellow Carp APU's (Ryzen 6000 "Rembrandt" mobiele verwerkers) is uitgebrei.
    • Die i915-bestuurder stabiliseer ondersteuning vir Intel Alderlake S-skyfies en implementeer ondersteuning vir Intel PXP (Protected Xe Path)-tegnologie, wat jou toelaat om 'n hardeware-beskermde grafiese sessie op stelsels met Intel Xe-skyfies te organiseer.
    • Werk is in die nouveau-bestuurder gedoen om foute reg te stel en die kodestyl te verbeter.
    • Bygevoeg ondersteuning vir x86-versoenbare Vortex CPU's (Vortex86MX). Linux het voorheen op soortgelyke verwerkers gewerk, maar eksplisiete identifikasie van die gespesifiseerde SVE's was nodig om beskerming teen Spectre/Meltdown-aanvalle uit te skakel, wat nie van toepassing is op die gespesifiseerde skyfies nie.
    • Bygevoeg aanvanklike ondersteuning vir x86 platforms vir Surface Pro 8 en Surface Laptop Studio.
    • Bygevoeg drywer om klankskyfies te ondersteun wat in AMD Yellow Carp, Van Gogh APU's gebruik word, ook ondersteuning bygevoeg vir klankstelsels en codecs Cirrus CS35L41, Maxim MAX98520/MAX98360A, Mediatek MT8195, Nuvoton NAU8821, NVIDIA Tegra210, NXP i.Realtekm AudioReach, Qu, ALC8I-VS, RT5682S, RT5682, Rockchip RV9120 en RK1126.
    • Ishtp_eclite-bestuurder bygevoeg om toegang te verkry tot Intel PSE (Programmable Service Engine) ingebedde beheerders met behulp van ISHTP (Integratd Sensor Hub Transport Protocol), soos battery, temperatuur en UCSI (USB Type-C Connector System Software) verwante inligtingskoppelvlak).
    • Het 'n drywer bygevoeg vir Nintendo Switch-speletjiebeheerders wat Switch Pro en Joy-Cons ondersteun. Bygevoeg ondersteuning vir Wacom Intuos BT-tablette (CTL-4100WL/CTL-6100WL) en Apple 2021 Magic Keyboard. Verbeterde ondersteuning vir Sony PlayStation DualSense-beheerders. Bygevoeg ondersteuning vir Xiaomi Mi muis kant knoppies.
    • Bygevoeg RT89-bestuurder met ondersteuning vir Realtek 802.11ax draadlose skyfies, sowel as drywers vir Asix AX88796C-SPI Ethernet-adapters en Realtek RTL8365MB-VC-skakelaars.
    • Drywers vir PCI en PASemi i1c is bygevoeg vir Apple M2-skyfies.
    • Bygevoeg ondersteuning vir ARM SoС, toestelle en borde 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 en Xiaomi Mi 5), Sony Yoshino (Sony Xperia XZ1, en Sony Xperia XZ Premium), F(x)tec Pro1 QX1000, Microchip LAN966, CalAmp LMU5000, Exegin Q5xR5, sama7g5, Samsung ExynosAutov9, RK3566 , RK3399 ROCK Pi 4A+, RK3399 ROCK Pi 4B+, Firefly ROC-RK3328-PC, Firefly ROC-RK3399-PC-PLUS, ASUS Chromebook Tablet CT100, Pine64 Quartz64-A, Netgear GSscale110EMG7040, GSC32 SCHA2 SCHA8, SCHA779, GSC1, Global esas R1A70M* , Xilinx Kria, Radxa Zero, JetHub D02/HXNUMX, Netronix EXNUMXKXNUMX.

Bron: opennet.ru

Voeg 'n opmerking