Linux kernvrystelling 5.3

Na twee maande van ontwikkeling, Linus Torvalds voorgelê kern vrystelling Linux 5.3. Onder die opvallendste veranderinge: ondersteuning vir AMD Navi GPU's, Zhaoxi-verwerkers en Intel Speed ​​​​Select-kragbestuurtegnologie, die vermoë om umwait-instruksies te gebruik om te wag sonder om siklusse te gebruik,
'Utilization clamping'-modus wat interaktiwiteit vir asimmetriese SVE's verhoog, die pidfd_open-stelseloproep, die vermoë om IPv4-adresse van die 0.0.0.0/8-subnet te gebruik, die moontlikheid van nftables-hardewareversnelling, HDR-ondersteuning in die DRM-substelsel, integrasie van die ACRN hipervisor.

В aankondiging nuwe vrystelling, het Linus alle ontwikkelaars herinner aan die hoofreël van kernontwikkeling - die handhawing van dieselfde gedrag vir gebruikersruimtekomponente. Veranderinge aan die kern moet op geen manier reeds lopende toepassings breek of lei tot regressies op gebruikersvlak nie. In hierdie geval kan 'n oortreding van gedrag nie net 'n verandering in die ABI, die verwydering van verouderde kode of die voorkoms van foute veroorsaak nie, maar ook die indirekte impak van nuttige verbeterings wat korrek werk. As 'n illustratiewe voorbeeld was daar weggegooi nuttig optimalisering in Ext4-kode, wat die aantal skyftoegange verminder deur vooraflees van die inode-tabel vir klein I/O-versoeke te deaktiveer.

Die optimalisering het daartoe gelei dat, as gevolg van 'n afname in skyfaktiwiteit, entropie vir die getrandom() ewekansige getalgenerator stadiger begin akkumuleer het en in sommige konfigurasies, onder sekere omstandighede, kon vries waargeneem word tydens laai totdat die entropiepoel was gevul. Aangesien die optimalisering regtig nuttig is, het 'n bespreking onder ontwikkelaars ontstaan ​​waarin voorgestel is om die probleem op te los deur die verstekblokkeermodus van die getrandom()-oproep te deaktiveer en 'n opsionele vlag by te voeg om vir entropie te wag, maar so 'n verandering sal die kwaliteit van die ewekansige getalle in die aanvanklike stadium van laai.

Die nuwe weergawe bevat 15794 1974 regstellings van XNUMX XNUMX ontwikkelaars,
pleistergrootte - 92 MB (veranderinge het 13986 lêers geraak, 258419 reëls kode is bygevoeg,
599137 rye verwyder). Sowat 39% van almal word in 5.3 aangebied
veranderinge hou verband met toestelbestuurders, ongeveer 12% van veranderinge is
houding teenoor die opdatering van kode spesifiek vir hardeware-argitekture, 11%
wat verband hou met die netwerkstapel, 3% met lêerstelsels en 3% met interne
kern substelsels.

Die belangrikste innovasies:

  • Geheue en stelseldienste
    • Voortgesette ontwikkeling van 'pidfd'-funksionaliteit om PID-hergebruiksituasies te help hanteer (pidfd word geassosieer met 'n spesifieke proses en verander nie, terwyl 'n PID met 'n ander proses geassosieer kan word nadat die huidige proses wat met daardie PID geassosieer word, beëindig is). Dit is voorheen by die kern gevoeg
      die pidfd_send_signal()-stelseloproep en die CLONE_PIDFD-vlag in die kloon()-oproep om 'n pidfd te verkry vir gebruik in idfd_send_signal(). Die gebruik van clone() met die CLONE_PIDFD-vlag kan probleme met diensbestuurders of die Android-platform se uit-geheue-kragbeëindigingstelsel veroorsaak. In hierdie geval word 'n oproep na vurk() of kloon() sonder CLONE_PIDFD gebruik om te begin.

      Kernel 5.3 het die stelseloproep bekendgestel pidfd_open(), wat jou toelaat om 'n kontroleerbare pidfd te kry vir 'n arbitrêre bestaande proses wat nie geskep is deur clone() te roep met die CLONE_PIDFD vlag. Het ook ondersteuning bygevoeg vir pidfd-peiling deur gebruik te maak van poll() en epoll(), wat prosesbestuurders toelaat om die beëindiging van arbitrêre prosesse op te spoor sonder vrees vir 'n rastoestand as 'n PID aan 'n nuwe proses toegewys word. Die meganisme om in kennis te stel wanneer 'n proses wat met pidfd geassosieer word, beëindig is, is soortgelyk aan om in kennis te stel wanneer sy kinderproses beëindig is;

    • Ondersteuning vir die lasvaspenmeganisme is by die taakskeduleerder gevoeg (Benutting klem), wat jou toelaat om by die minimum of maksimum frekwensiereekse te hou, afhangende van die take wat op die SVE aktief is. Die voorgestelde meganisme versnel take wat die kwaliteit van die gebruikerservaring direk beïnvloed deur hierdie take ten minste aan die onderkant van die "versoekte" frekwensie uit te voer. Lae-prioriteit take wat nie die gebruiker se werk raak nie, word geloods deur die boonste limiet van die "toegelate" frekwensie te gebruik. Limiete word gestel via die sched_uclamp_util_min en sched_uclamp_util_max eienskappe in die sched_setattr() stelsel oproep.
    • Bygevoeg ondersteuning vir energiebestuur tegnologie Intel Speed ​​​​Select, beskikbaar op uitgesoekte bedieners met Intel Xeon-verwerkers. Hierdie tegnologie stel jou in staat om prestasie- en partisie-deursetinstellings vir verskillende SVE-kerns te stel, wat jou toelaat om prestasie te prioritiseer vir take wat op sekere kerne uitgevoer word, wat prestasie op ander kerne opoffer;
    • Prosesse in gebruikersruimte verskaf die vermoë om 'n kort rukkie te wag sonder om lusse te gebruik deur die umwait-instruksie te gebruik. Hierdie instruksie, tesame met die umonitor- en tpouse-instruksies, sal in Intel se komende "Tremont"-skyfies aangebied word, en sal voorsiening maak vir die implementering van vertragings wat energiedoeltreffend is en nie die werkverrigting van ander drade beïnvloed wanneer Hyper Threading gebruik word nie;
    • Vir die RISC-V-argitektuur is ondersteuning vir groot geheuebladsye bygevoeg;
    • Die kprobes-naspoormeganisme het die vermoë bygevoeg om kernwysers na gebruikersruimte te herverwys, wat byvoorbeeld gebruik kan word om die inhoud van strukture wat na stelseloproepe oorgedra word, te evalueer. Die vermoë om tjeks by die selflaaistadium te installeer, is ook bygevoeg.
    • Het PREEMPT_RT-opsie by die konfigurasielêer gevoeg vir intydse werking. Die kode self om intydse modus te ondersteun is nog nie by die kern gevoeg nie, maar die voorkoms van die opsie is 'n goeie teken dat die langtermyn-epiese integrasie Realtime-Preempt-kolle nader voltooiing;
    • Het die clone3()-stelseloproep bygevoeg met die implementering van 'n meer uitbreidbare weergawe van die clone()-koppelvlak, wat dit moontlik maak om 'n groter aantal vlae te spesifiseer;
    • Bygevoeg bpf_send_signal() hanteerder, sodat BPF programme seine na arbitrêre prosesse kan stuur;
    • Vir perf-gebeurtenisse in die KVM-hipervisor-omgewing is 'n nuwe gebeurtenisfiltreringsmeganisme bygevoeg, wat die administrateur in staat stel om die tipe gebeurtenisse te bepaal wat toegelaat of nie toegelaat word vir monitering aan die gasstelselkant nie;
    • Die vermoë om programme met lusse te verwerk is by die eBPF-toepassingsverifikasiemeganisme gevoeg indien die uitvoering van die lus beperk is en nie daartoe kan lei dat die limiet op die maksimum aantal instruksies oorskry word nie;
  • Skyfsubstelsel, I/O en lêerstelsels
    • Die XFS-lêerstelsel ondersteun nou multi-threaded inode-omleiding (byvoorbeeld wanneer kwotas nagegaan word). Nuwe ioctls BULKSTAT en INUMBERS is bygevoeg, wat toegang bied tot die kenmerke wat in die vyfde uitgawe van die FS-formaat verskyn het, soos die inode-geboortetyd en die vermoë om die BULKSTAT- en INUMBERS-parameters vir elke AG-groep (Toewysingsgroepe) te stel;
    • In Ext4 ondersteuning bygevoeg leemtes in gidse (ongekoppelde blokke).
      Verwerking verskaf vlag "i" (onveranderlik) vir oop lêers (skryf is verbode in 'n situasie as die vlag gestel is op 'n tydstip toe die lêer reeds oop was);

    • Btrfs verskaf 'n definisie van 'n vinnige implementering van crc32c op alle argitekture;
    • In CIFS is die kode vir smbdirect-ondersteuning verwyder as eksperimentele ontwikkeling. SMB3 het die vermoë bygevoeg om kriptografiese algoritmes in GCM-modus te gebruik. Het 'n nuwe monteeropsie bygevoeg om modusparameters uit ACE (Access Control Entry)-inskrywings te onttrek. Geoptimaliseer die prestasie van die open() oproep;
    • Het 'n opsie by F2FS gevoeg om die vullisverwyderaar te beperk wanneer dit in kontrolepunt=deaktiveermodus loop. Bygevoeg ioctl om blokreekse van F2FS te verwyder, wat voorsiening maak vir on-the-fly partisie grootte aanpassings. Bygevoeg die vermoë om 'n ruillêer in F2FS te plaas om direkte I/O te verskaf. Bygevoeg ondersteuning vir die vaspen van 'n lêer en die toekenning van blokke vir soortgelyke lêers vir alle gebruikers;
    • Bygevoeg ondersteuning vir asynchrone bedrywighede sendmsg() en recvmsg() by die koppelvlak vir asinchroniese invoer/afvoer io_uring;
    • Ondersteuning vir kompressie met behulp van die zstd-algoritme en die vermoë om ondertekende FS-beelde te verifieer, is by die UBIFS-lêerstelsel gevoeg;
    • Ceph FS ondersteun nou SELinux sekuriteitsetikette vir lêers;
    • Vir NFSv4 is 'n nuwe mount-opsie “nconnect=” geïmplementeer, wat die aantal verbindings wat met die bediener gevestig is, bepaal. Verkeer tussen hierdie verbindings sal met behulp van lasbalansering versprei word. Daarbenewens skep die NFSv4-bediener nou 'n gids /proc/fs/nfsd/kliënte met inligting oor huidige kliënte, insluitend inligting oor die lêers wat hulle oopgemaak het;
  • Virtualisering en sekuriteit
    • Die kern bevat 'n hipervisor vir ingebedde toestelle ACRN, wat geskryf is met die oog op gereedheid vir intydse take en geskiktheid vir gebruik in missie-kritiese stelsels. ACRN bied minimale oorhoofse koste, waarborg lae latensie en voldoende reaksie wanneer daar met toerusting interaksie is. Ondersteun virtualisering van SVE-hulpbronne, I/O, netwerksubstelsel, grafika en klankbedrywighede. ACRN kan gebruik word om verskeie geïsoleerde virtuele masjiene in elektroniese beheereenhede, dashboards, motorinligtingstelsels, verbruikers-IoT-toestelle en ander ingebedde tegnologie te laat loop;
    • In gebruikersmodus Linux bygevoeg Tydreismodus, wat jou toelaat om tyd in 'n virtuele UML-omgewing te vertraag of te versnel om dit makliker te maak om tydverwante kode te ontfout. Daarbenewens is 'n parameter bygevoeg
      tyd-reis-begin, wat die stelselklok toelaat om vanaf 'n bepaalde oomblik in epogformaat te begin;

    • Nuwe kernopdragreëlopsies "init_on_alloc" en "init_on_free" is bygevoeg, wanneer gespesifiseer, is nulstelling van toegekende en vrygestelde geheue-areas geaktiveer (vul met nulle vir malloc en gratis), wat verhoogde sekuriteit moontlik maak as gevolg van bykomende inisialiseringsbokoste;
    • Nuwe bestuurder bygevoeg virtio-iommu met die implementering van 'n paravirtualiseerde toestel wat jou toelaat om IOMMU-versoeke soos ATTACH, DETACH, MAP en UNMAP oor die virtio-vervoer te stuur sonder om geheuebladsytabelle na te boots;
    • Nuwe bestuurder bygevoeg virtio-pmem, wat toegang verteenwoordig tot stoortoestelle wat na fisiese adresspasie gekarteer is, soos NVDIMM's;
    • Implementeer die vermoë om kriptografiese sleutels aan 'n gebruiker of netwerk naamruimte te heg (sleutels word ontoeganklik buite die geselekteerde naamruimte), sowel as om sleutels te beskerm deur gebruik te maak van ACL's;
    • Na die kripto-substelsel bygevoeg ondersteuning vir 'n baie vinnige nie-kriptografiese hashing-algoritme xxhash, waarvan die spoed afhang van geheueprestasie;
  • Netwerk substelsel
    • Verwerking van IPv4-adresse in die reeks 0.0.0.0/8 geaktiveer, wat voorheen nie vir gebruik beskikbaar was nie. Bekendstelling van hierdie subnet sal toelaat versprei nog 16 miljoen IPv4-adresse;
    • In Netfilter vir nftables bygevoeg ondersteuning vir hardewareversnellingsmeganismes vir pakkiefiltrering deur die gebruik van bygevoegde drywers Flow Block API. Hele tabelle van reëls met alle kettings kan aan die kant van netwerkadapters geplaas word. Aktivering word gedoen deur die NFT_TABLE_F_HW-vlag aan die tabel te bind. Ondersteun eenvoudige Laag 3 en Laag 4 protokol metadata, aanvaar/verwerp aksies, kartering deur IP en sender/ontvanger netwerkpoorte en protokol tipe;
    • Bygevoeg ingeboude verbindingsopsporingondersteuning vir netwerkbrûe, wat nie die gebruik van die br_netfilter-emulerende laag vereis nie;
    • In nf_tables bygevoeg ondersteuning vir die SYNPROXY-module, wat soortgelyke funksionaliteit vanaf iptables herhaal, en die vermoë om reëls vir individuele opsies in die IPv4-kopskrif in te meld, word ook geïmplementeer;
    • Het die vermoë bygevoeg om BPF-programme aan die setsockopt()- en getsockopt()-stelseloproepe te heg, wat jou byvoorbeeld toelaat om jou eie toegangshanteerders aan hierdie oproepe te heg. Boonop is 'n nuwe oproeppunt (haak) bygevoeg, waarmee jy een keer vir elke RTT-interval 'n oproep na die BPF-program kan reël (heen en weer-tyd, ping-tyd);
    • Vir IPv4 en IPv6 bygevoeg nuwe nexthop-roeteerdatabergingmeganisme wat daarop gemik is om die skaalbaarheid van roetetabelle te verhoog. Toetse het getoon dat wanneer die nuwe stelsel gebruik word, 'n stel van 743 duisend roetes binne net 4.3 sekondes in die kern gelaai is;
    • Vir Bluetooth geïmplementeer funksionaliteit benodig om LE ping te ondersteun;
  • Оборудование
    • Bygevoeg ondersteuning vir die maatskappy se x86-versoenbare verwerkers Zhaoxin, ontwikkel as gevolg van 'n gesamentlike projek tussen VIA Technologies en die Sjanghai-munisipaliteit. Die ZX CPU-familie is gebou op die x86-64 Jesaja-argitektuur, wat die ontwikkeling van tegnologie voortsit VIA Centaur;
    • Die DRM (Direct Rendering Manager) substelsel, sowel as die amdgpu en i915 grafiese drywers, het ondersteuning bygevoeg vir die ontleding, verwerking en stuur van HDR (hoë dinamiese reeks) metadata via die HDMI-poort, wat die gebruik van HDR-panele en -skerms moontlik maak die vertoon van bykomende helderheidsreekse;
    • Die amdgpu-bestuurder het aanvanklike ondersteuning bygevoeg vir AMD NAVI GPU (RX5700), wat die basisbestuurder, skerminteraksiekode (DCN2), GFX en rekenaarondersteuning (GFX10) insluit,
      SDMA 5 (Stelsel DMA0), kragbestuur en multimedia-enkodeerders/dekodeerders (VCN2). amdgpu verbeter ook ondersteuning vir kaarte gebaseer op Vega12 en Vega20 GPU's, waarvoor bykomende geheue en kragbestuurvermoëns bygevoeg is;

    • Bygevoeg ondersteuning vir kaarte gebaseer op VegaM GPU's by die amdkfd bestuurder (vir diskrete GPU's, soos Fidji, Tonga, Polaris);
    • In die DRM-bestuurder vir Intel-videokaarte vir Icelake-skyfies geïmplementeer nuwe multi-segment gamma korreksie modus. Bygevoeg die vermoë om uit te voer via DisplayPort in die YCbCr4:2:0-formaat. Nuwe firmware bygevoeg GuC vir SKL, BXT, KBL, GLK en ICL. Die vermoë om skermkrag in asinchroniese modus af te skakel, is geïmplementeer. Bygevoeg ondersteuning vir die stoor en herstel van die weergawe-konteks vir Ironlake (gen5) en gen4 (Broadwater - Cantiga) skyfies, wat jou toelaat om die GPU-toestand van gebruikersspasie te herstel wanneer jy van een bondelbewerking na 'n ander beweeg;
    • Die Nouveau-bestuurder verskaf opsporing van die NVIDIA Turing TU116-skyfiestel;
    • Die vermoëns van die DRM/KMS-bestuurder vir ARM Komeda-skermversnellers (Mali D71) is uitgebrei, ondersteuning vir skaal, split/samevoeging van lae, rotasie, uitgestelde skryf, AFBC, SMMU en kleurkoderingsformate Y0L2, P010, YUV420_8/10BIT het bygevoeg is;
    • Die MSM-bestuurder voeg ondersteuning by vir die A540 GPU Adreno-reeks wat in Qualcomm-verwerkers gebruik word, sowel as ondersteuning vir die MSM8998 DSI-beheerder vir Snapdragon 835;
    • Bygevoeg drywers vir LCD panele Samsung S6E63M0, Armadeus ST0700, EDT ETM0430G0DH6, OSD101T2045-53TS,
      Evervision VGG804821, FriendlyELEC HD702E, KOE tx14d24vm1bpa, TFC S9700RTWV43TR-01B, EDT ET035012DM6 en VXT VL050-8048NT-C01;

    • Bygevoeg bestuurder vir die aktivering van dekoderingversnellingsnutsgoed
      video's beskikbaar in Amlogic Meson SoC;

    • In die v3d-bestuurder (vir die Broadcom Video Core V GPU wat in die Raspberry Pi gebruik word) verskyn ondersteun versending van rekenaarskaderings;
    • Bygevoeg drywer vir SPI-sleutelborde en -spoorblokkies wat in moderne modelle van Apple MacBook- en MacBookPro-skootrekenaars gebruik word;
    • Bygevoeg bykomende beskerming vir ioctl-oproepe wat met die diskettedrywer geassosieer word, en die drywer self is gemerk as ononderhou
      ("wees gelaat"), wat die beëindiging van die toetsing daarvan impliseer. Die drywer word steeds in die kern gestoor, maar die korrekte werking daarvan word nie gewaarborg nie. Die bestuurder word as verouderd beskou, aangesien dit moeilik is om werkstoerusting te vind om dit te toets - alle huidige eksterne dryf gebruik gewoonlik die USB-koppelvlak.

    • Bygevoeg cpufreq-bestuurder vir Raspberry Pi-borde, wat jou toelaat om veranderinge in verwerkerfrekwensie dinamies te beheer;
    • Bygevoeg ondersteuning vir nuwe ARM SoC Mediatek mt8183 (4x Cortex-A73 + 4x Cortex-A53), TI J721E (2x Cortex-A72 + 3x Cortex-R5F + 3 DSP's + MMA) en Amlogic G12B (4x Cortex-A73 + 2x Cortex-A53 + ) AXNUMX ), sowel as borde:
      • Purisme Librem5,
      • Aspeed BMC,
      • Microsoft Olympus BMC,
      • Kontron SMARC,
      • Novtech Meerkat96 (i.MX7),
      • ST Micro Avenger96,
      • Google Cheza (Qualcomm SDM845),
      • Qualcomm Dragonboard 845c (Qualcomm SDM845),
      • Hugsun X99 TV Box (Rockchip RK3399),
      • Khadas Edge/Edge-V/Captain (Rockchip RK3399),
      • HiHope RZ/G2M,
      • NXP LS1021A-TSN.

Terselfdertyd, die Latyns-Amerikaanse Free Software Foundation gevorm
opsie heeltemal gratis kern 5.3 - Linux-vrye 5.3-gnu, skoongemaak van firmware en bestuurderelemente wat nie-vrye komponente of kodeafdelings bevat, waarvan die omvang deur die vervaardiger beperk word. In die nuwe weergawe is blob-laai gedeaktiveer in die qcom-, hdcp drm-, allegro-dvt- en meson-vdec-bestuurders.
Opgedateerde blob-skoonmaakkode in drywers en substelsels amdgpu, i915, netx, r8169, brcmfmac, rtl8188eu, adreno, si2157, pvrusb2, touchscreen_dmi, klankbestuurder vir skylake, sowel as in die mikrokode-dokumentasie.

Bron: opennet.ru

Voeg 'n opmerking