Linux kernvrystelling 5.14

Na twee maande se ontwikkeling het Linus Torvalds die vrystelling van die Linux-kern 5.14 aangebied. Van die mees noemenswaardige veranderinge: nuwe quotactl_fd() en memfd_secret()-stelseloproepe, verwydering van ide- en rou drywers, nuwe I/O-prioriteitsbeheerder vir cgroup, SCHED_CORE-taakskeduleringsmodus, infrastruktuur vir die skep van geverifieerde BPF-programlaaiers.

Die nuwe weergawe bevat 15883 2002 regstellings van 69 12580 ontwikkelaars, die pleistergrootte is 861501 MB (die veranderinge het 321654 47 lêers geraak, 5.14 14 reëls kode is bygevoeg, 13 3 reëls is uitgevee). Ongeveer 3% 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.

Belangrikste innovasies:

  • Skyfsubstelsel, I/O en lêerstelsels
    • 'n Nuwe I/O-prioritiseringsbeheerder is geïmplementeer vir cgroups, rq-qos, wat die verwerkingsprioriteit van versoeke kan beheer om toestelle wat deur lede van elke cgroup gegenereer word, te blokkeer. Nuwe prioriteitbeheerderondersteuning is by die mq-sperdatum I/O-skeduleerder gevoeg.
    • Die ext4-lêerstelsel implementeer 'n nuwe ioctl-opdrag, EXT4_IOC_CHECKPOINT, wat alle hangende transaksies van die joernaal en hul gepaardgaande buffers dwing om na skyf te spoel, en ook die area wat deur die joernaal in stoor gebruik word, oorskryf. Die verandering is voorberei as deel van 'n inisiatief om inligtinglekke uit lêerstelsels te voorkom.
    • Prestasie-optimalisasies is aan Btrfs gemaak: deur onnodige aantekening van uitgebreide eienskappe tydens fsync-uitvoering uit te skakel, het die werkverrigting van intensiewe bedrywighede met uitgebreide eienskappe met tot 17% toegeneem. Boonop word volledige sinchronisasie gedeaktiveer wanneer snoeibewerkings uitgevoer word wat nie omvang beïnvloed nie, wat die bewerkingstyd met 12% verminder het. 'n Instelling is by sysfs gevoeg om I/O-bandwydte te beperk wanneer die FS nagegaan word. Bygevoeg ioctl-oproepe om die grootte te kanselleer en toestelbewerkings uit te vee.
    • In XFS is die implementering van die bufferkas herontwerp, wat oorgeskakel is na die toekenning van geheuebladsye in bondelmodus. Verbeterde kasdoeltreffendheid.
    • F2FS voeg 'n opsie by om in leesalleenmodus te werk en implementeer 'n saamgeperste blokkasmodus (compress_cache) om ewekansige leeswerkverrigting te verbeter. Ondersteuning is geïmplementeer vir die saampersing van lêers wat na die geheue gekarteer is met behulp van die mmap()-bewerking. Om lêerkompressie op grond van 'n masker selektief te deaktiveer, is 'n nuwe monteringsopsie nocompress voorgestel.
    • Werk is in die exFAT-bestuurder gedoen om versoenbaarheid met sommige digitale kameraberging te verbeter.
    • Het die quotactl_fd()-stelseloproep bygevoeg, wat jou toelaat om kwotas te bestuur nie deur 'n spesiale toestellêer nie, maar deur 'n lêerbeskrywing te spesifiseer wat geassosieer word met die lêerstelsel waarvoor die kwota toegepas word.
    • Die ou drywers vir bloktoestelle met die IDE-koppelvlak is uit die kern verwyder; hulle is lankal deur die libata-substelsel vervang.
    • Die "rou" drywer is uit die kern verwyder, wat ongebufferde toegang bied tot blokkeertoestelle via die /dev/raw-koppelvlak. Hierdie funksionaliteit is lank reeds geïmplementeer in toepassings wat die O_DIRECT-vlag gebruik.
  • Geheue en stelseldienste
    • Die taakskeduleerder implementeer 'n nuwe skeduleringsmodus, SCHED_CORE, wat jou toelaat om te beheer watter prosesse saam op dieselfde SVE-kern uitgevoer kan word. Aan elke proses kan 'n koekie-identifiseerder toegeken word wat die omvang van vertroue tussen prosesse definieer (byvoorbeeld, wat aan dieselfde gebruiker of houer behoort). Wanneer kode-uitvoering georganiseer word, kan die skeduleerder verseker dat een SVE-kern slegs gedeel word tussen prosesse wat met dieselfde eienaar geassosieer word, wat gebruik kan word om sommige Spectre-aanvalle te blokkeer deur te verhoed dat vertroude en onbetroubare take op dieselfde SMT (Hyper Threading)-draad loop .
    • Vir cgroup is ondersteuning vir die doodmaakoperasie geïmplementeer, wat jou toelaat om alle prosesse wat met die groep geassosieer word op een slag dood te maak (stuur SIGKILL) deur "1" te skryf na die virtuele lêer cgroup.kill.
    • Uitgebreide vermoëns wat verband hou met reaksie op die opsporing van gesplete slotte (“split locks”) wat plaasvind wanneer toegang tot ongelynde data in die geheue verkry word as gevolg van die feit dat wanneer 'n atoominstruksie uitgevoer word, die data twee SVE-kaslyne kruis. Sulke blokkering lei tot 'n aansienlike afname in prestasie, so voorheen was dit moontlik om die toepassing wat die blokkering veroorsaak het, met geweld te beëindig. Die nuwe weergawe voeg 'n kern-opdragreëlparameter "split_lock_detect=ratelimit:N" by, wat jou toelaat om 'n stelselwye limiet op die tempo van sluitbewerkings per sekonde te definieer, waarna enige proses wat die bron van 'n gesplete slot geword het, oorskry het. sal gedwing word om vir 20 ms te stop in plaas van om te beëindig.
    • Die cgroup bandwidth controller CFS (CFS bandwidth controller), wat bepaal hoeveel verwerker tyd aan elke cgroup toegeken kan word, implementeer die vermoë om tydbeperkte limiete te definieer, wat voorsiening maak vir beter regulering van latensie-sensitiewe werkladings. Byvoorbeeld, om cpu.cfs_quota_us op 50000 en cpu.cfs_period_us op 100000 te stel, sal 'n groep prosesse toelaat om 100 ms se SVE-tyd elke 50 ms te mors.
    • Bygevoeg aanvanklike infrastruktuur vir die skep van BPF-programlaaiers, wat verder die laai van slegs BPF-programme sal toelaat wat met 'n betroubare digitale sleutel onderteken is.
    • Het 'n nuwe futex-bewerking FUTEX_LOCK_PI2 bygevoeg, wat 'n monotoniese timer gebruik om 'n uitteltyd te bereken wat die tyd wat die stelsel in slaapmodus spandeer in ag neem.
    • Vir die RISC-V-argitektuur word ondersteuning vir groot geheuebladsye (Transparent Huge-Pages) en die vermoë geïmplementeer om die KFENCE-meganisme te gebruik om foute op te spoor wanneer met geheue gewerk word.
    • Die madvise()-stelseloproep, wat 'n manier bied om prosesgeheuebestuur te optimaliseer, het die MADV_POPULATE_READ- en MADV_POPULATE_WRITE-vlae bygevoeg om 'n "bladsyfout" te genereer op alle geheuebladsye wat gekarteer is vir lees- of skryfbewerkings sonder om 'n werklike lees of skryf uit te voer (voorwaarde ). Die gebruik van vlae kan nuttig wees om vertragings in die uitvoering van die program te verminder, as gevolg van die proaktiewe uitvoering van die "bladsyfout"-hanteerder vir alle ontoegekende bladsye op een slag, sonder om te wag vir die werklike toegang daartoe.
    • Die kunit-eenheidtoetsstelsel het ondersteuning bygevoeg vir die uitvoer van toetse in die QEMU-omgewing.
    • Nuwe spoorsnyers is bygevoeg: "osnoise" om toepassingsvertragings op te spoor wat veroorsaak word deur onderbrekingshantering, en "timerlat" om gedetailleerde inligting oor vertragings te vertoon wanneer wakker word van 'n tydhouersein.
  • Virtualisering en sekuriteit
    • Die memfd_secret()-stelseloproep is bygevoeg om 'n private geheue-area in 'n geïsoleerde adresruimte te skep, slegs sigbaar vir die besitproses, nie weerspieël na ander prosesse nie, en nie direk toeganklik vir die kern nie.
    • In die seccomp-stelseloproepfiltreringstelsel, wanneer blokkeerhanteerders na gebruikersruimte verskuif word, is dit moontlik om 'n enkele atoombewerking te gebruik om 'n lêerbeskrywer vir 'n geïsoleerde taak te skep en dit terug te stuur wanneer 'n stelseloproep verwerk word. Die voorgestelde operasie los die probleem op om 'n hanteerder in gebruikersruimte te onderbreek wanneer 'n sein arriveer.
    • 'n Nuwe meganisme bygevoeg vir die bestuur van hulpbronlimiete in die gebruiker-ID-naamruimte, wat individuele rlimiettellers aan 'n gebruiker in die "gebruikersnaamruimte" bind. Die verandering los die probleem op met die gebruik van algemene hulpbrontellers wanneer een gebruiker prosesse in verskillende houers laat loop.
    • Die KVM-hypervisor vir ARM64-stelsels het die vermoë bygevoeg om die MTE (MemTag, Memory Tagging Extension)-uitbreiding in gasstelsels te gebruik, wat jou toelaat om etikette aan elke geheuetoewysingsbewerking te bind en om die korrekte gebruik van wysers te kontroleer om die uitbuiting van kwesbaarhede wat veroorsaak word deur toegang tot reeds vrygestelde geheueblokke, oorloop buffer, toegang voor inisialisering en gebruik buite die huidige konteks.
    • Die ARM64-platform se wyserverifikasiefasiliteite kan nou afsonderlik vir kern- en gebruikersspasie gekonfigureer word. Die tegnologie laat jou toe om gespesialiseerde ARM64-instruksies te gebruik om terugstuuradresse te verifieer deur digitale handtekeninge te gebruik wat in die ongebruikte boonste stukkies van die wyser self gestoor word.
    • Gebruikersmodus Linux het ondersteuning bygevoeg vir die gebruik van drywers vir PCI-toestelle met 'n virtuele PCI-bus, geïmplementeer deur die PCI-over-virtio-bestuurder.
    • Vir x86-stelsels het ondersteuning bygevoeg vir die virtio-iommu paravirtualiseerde toestel, wat toelaat dat IOMMU-versoeke soos ATTACH, DETACH, MAP en UNMAP oor die virtio-vervoer gestuur kan word sonder om geheuebladsytabelle na te boots.
    • Vir Intel-SVE's, van die Skylake-familie tot Coffee Lake, is die gebruik van Intel TSX (Transactional Synchronization Extensions), wat nutsmiddels verskaf om die werkverrigting van multi-threaded-toepassings te verbeter deur onnodige sinchronisasie-operasies dinamies uit te skakel, by verstek gedeaktiveer. Uitbreidings word gedeaktiveer as gevolg van die moontlikheid van Zombieload-aanvalle wat inligtinglek via derdeparty-kanale manipuleer wat plaasvind tydens die werking van die TAA (TSX Asynchronous Abort)-meganisme.
  • Netwerk substelsel
    • Integrasie in die kern van MPTCP (MultiPath TCP), 'n uitbreiding van die TCP-protokol vir die organisering van die werking van 'n TCP-verbinding met die aflewering van pakkies gelyktydig langs verskeie roetes deur verskillende netwerkkoppelvlakke wat met verskillende IP-adresse geassosieer word. Die nuwe vrystelling voeg 'n meganisme by om jou eie verkeer-hash-beleide vir IPv4 en IPv6 (multipath-hash-beleid) op te stel, wat dit moontlik maak om vanuit gebruikersruimte te bepaal watter velde in pakkies, insluitend ingekapselde, gebruik sal word wanneer die hash bereken word wat die keuse van pad vir die pakkie.
    • Ondersteuning vir SOCK_SEQPACKET-voetstukke (geordende en betroubare oordrag van datagramme) is by die virtio virtuele vervoer gevoeg.
    • Die vermoëns van die SO_REUSEPORT-sokmeganisme is uitgebrei, wat verskeie luisterfokke toelaat om gelyktydig aan een poort te koppel om verbindings te ontvang met die verspreiding van inkomende versoeke gelyktydig oor alle voetstukke wat via SO_REUSEPORT verbind is, wat die skepping van multi-draad bedienertoepassings vergemaklik. . Die nuwe weergawe voeg gereedskap by om beheer na 'n ander sok oor te dra in geval van mislukking wanneer 'n versoek deur die aanvanklik geselekteerde sok verwerk word (los die probleem op met die verlies van individuele verbindings wanneer dienste herbegin word).
  • Оборудование
    • Die amdgpu-bestuurder bied ondersteuning vir die nuwe AMD Radeon RX 6000-reeks GPU's, met die kodenaam "Beige Goby" (Navi 24) en "Yellow Carp", sowel as verbeterde ondersteuning vir die Aldebaran GPU (gfx90a) en Van Gogh APU. Bygevoeg die vermoë om gelyktydig met verskeie eDP panele te werk. Vir APU Renoir is ondersteuning vir die werk met geënkripteerde buffers in videogeheue (TMZ, Trusted Memory Zone) geïmplementeer. Bygevoeg ondersteuning vir warm-ontkoppel grafiese kaarte. Vir Radeon RX 6000 (Navi 2x) GPU's en ouer AMD GPU's, is ASPM (Active State Power Management) ondersteuning by verstek geaktiveer, wat voorheen net vir Navi 1x, Vega en Polaris GPU's geaktiveer was.
    • Vir AMD-skyfies is ondersteuning vir gedeelde virtuele geheue (SVM, gedeelde virtuele geheue) bygevoeg op grond van die HMM (Heterogene geheuebestuur) substelsel, wat die gebruik van toestelle met hul eie geheuebestuurseenhede (MMU, geheuebestuurseenheid) moontlik maak, wat toegang tot hoofgeheue kan verkry. In die besonder, met behulp van HMM, kan jy 'n gedeelde adresruimte tussen die GPU en SVE organiseer, waarin die GPU toegang tot die hoofgeheue van die proses kan kry.
    • Bygevoeg aanvanklike ondersteuning vir AMD Smart Shift-tegnologie, wat SVE- en GPU-kraginstellings dinamies verander op skootrekenaars met 'n AMD-skyfiestel en grafiese kaart om werkverrigting vir speletjies, videoredigering en 3D-weergawe te verbeter.
    • Die i915-bestuurder vir Intel-grafiese kaarte sluit ondersteuning vir Intel Alderlake P-skyfies in.
    • Bygevoeg drm/hyperv bestuurder vir Hyper-V virtuele grafiese adapter.
    • Bygevoeg ondersteuning vir die Raspberry Pi 400 alles-in-een rekenaar.
    • Bygevoeg dell-wmi-privaatheid bestuurder om die hardeware kamera en mikrofoon skakelaars te ondersteun ingesluit in Dell skootrekenaars.
    • Vir Lenovo-skootrekenaars is 'n WMI-koppelvlak bygevoeg vir die verandering van BIOS-instellings via sysfs /sys/class/firmware-attributes/.
    • Uitgebreide ondersteuning vir toestelle met USB4-koppelvlak.
    • Bygevoeg ondersteuning vir AmLogic SM1 TOACODEC, Intel AlderLake-M, NXP i.MX8, NXP TFA1, TDF9897, Rockchip RK817, Qualcomm Quinary MI2 en Texas Instruments TAS2505 klankkaarte en kodeks. Verbeterde klankondersteuning op HP- en ASUS-skootrekenaars. Bygevoeg pleisters om vertragings te verminder voordat oudio op USB-toestelle begin speel.

Bron: opennet.ru

Voeg 'n opmerking