Linux kernvrystelling 5.7

Na twee maande van ontwikkeling, Linus Torvalds voorgelê kern vrystelling Linux 5.7. Van die mees noemenswaardige veranderinge: 'n nuwe implementering van die exFAT-lêerstelsel, 'n bareudp-module vir die skep van UDP-tonnels, beskerming gebaseer op wyserverifikasie vir ARM64, die vermoë om BPF-programme aan LSM-hanteerders te heg, 'n nuwe implementering van Curve25519, 'n split- slotdetektor, BPF-versoenbaarheid met PREEMPT_RT, verwydering van die limiet op die 80-karakter lyngrootte in die kode, met inagneming van CPU-temperatuuraanwysers in die taakskeduleerder, die vermoë om kloon() te gebruik om prosesse in 'n ander cgroup te laat ontstaan, beskerming teen skryf na die geheue met behulp van userfaultfd.

Die nuwe weergawe bevat 15033 1961 regstellings van XNUMX XNUMX ontwikkelaars,
pleistergrootte - 39 MB (veranderinge het 11590 lêers geraak, 570560 reëls kode bygevoeg,
297401 rye verwyder). Sowat 41% van almal word in 5.7 aangebied
veranderinge hou verband met toestelbestuurders, ongeveer 16% van veranderinge is
houding teenoor die opdatering van kode spesifiek vir hardeware-argitekture, 13%
verwant aan die netwerkstapel, 4% aan lêerstelsels en 4% aan interne
kern substelsels.

Die belangrikste innovasies:

  • Skyfsubstelsel, I/O en lêerstelsels
    • Bygevoeg nuwe exFAT bestuurder implementering, gestig gebaseer op die huidige “sdfat” (2.x)-kodebasis wat deur Samsung vir sy Android-slimfone ontwikkel is. Die drywer wat voorheen by die kern gevoeg is, was gebaseer op die verouderde Samsung-kode (weergawe 1.2.9) en was ongeveer 10% agter die nuwe drywer in prestasie. Laat ons onthou dat die toevoeging van exFAT-ondersteuning by die kern moontlik geword het ná Microsoft gepubliseer openbare spesifikasies en het exFAT-patente beskikbaar gestel vir tantièmevrye gebruik op Linux.
    • Btrfs implementeer 'n nuwe ioctl()-opdrag - BTRFS_IOC_SNAP_DESTROY_V2, wat jou toelaat om 'n onderafdeling deur sy identifiseerder uit te vee. Volle ondersteuning vir die kloning van inlyn-omvang word verskaf. Die aantal kansellasiepunte vir herverspreidingsoperasies is uitgebrei, wat lang wagte verminder het wanneer die 'balanskanselleer'-opdrag uitgevoer word. Die bepaling van terugskakels na omvang is versnel (byvoorbeeld, die toetsskrip-uitvoeringstyd het van 'n uur tot 'n paar minute verminder). Het die vermoë bygevoeg om lêeromvang aan elke inode van 'n boom te heg. Die blokkeerskema wat gebruik word wanneer na subpartisies geskryf word en wanneer NOCOW uitgesluit word, is herontwerp. Verbeterde doeltreffendheid van fsync-uitvoering vir reekse.
    • XFS het verbeterde metadata-kontrolering en fsck vir aktiewe partisies. 'n Biblioteek is voorgestel vir die herbou van btree-strukture, wat in die toekoms gebruik sal word om xfs_repair te herwerk en die moontlikheid van herstel te implementeer sonder om die partisie te demonteer.
    • Eksperimentele ondersteuning vir die plasing van 'n ruilpartisie in SMB3-bergings is by CIFS gevoeg. POSIX-uitbreidings na readdir geïmplementeer, gedefinieer in die SMB3.1.1-spesifikasie. Verbeterde skryfwerkverrigting vir 64KB-bladsye wanneer cache=strict mode geaktiveer is en protokolweergawes 2.1+ gebruik word.
    • FS EXT4 is oorgedra van bmap en iopoll na die gebruik van iomap.
    • F2FS bied opsionele ondersteuning vir datakompressie met behulp van die zstd-algoritme. By verstek word die LZ4-algoritme vir kompressie gebruik. Bygevoeg ondersteuning vir die "chattr -c commit" opdrag. Montagetydvertoning word voorsien. Bygevoeg ioctl F2FS_IOC_GET_COMPRESS_BLOCKS om inligting oor die aantal saamgeperste blokke te kry. Bygevoeg kompressie data-uitvoer via statx.
    • Die Ceph-lêerstelsel het die vermoë bygevoeg om plaaslik lêerskepping en -skrapbewerkings uit te voer (ontkoppel) sonder om te wag vir 'n reaksie van die bediener (werk in asinchroniese modus). Die verandering kan byvoorbeeld die werkverrigting aansienlik verbeter wanneer die rsync-nutsprogram uitgevoer word.
    • Die vermoë om virtiofs as 'n topvlak lêerstelsel te gebruik, is by OVERLAYFS gevoeg.
    • Oorgeskryf pad-deurkruisingskode in VFS, simboliese skakel-ontledingskode is herwerk, en monteringspunt-deurkruising is verenig.
    • In die scsi-substelsel aan onbevoorregte gebruikers toegelaat uitvoering van ZBC-opdragte.
    • In dm_writecache geïmplementeer die vermoë om die kas geleidelik skoon te maak gebaseer op die max_age parameter, wat die maksimum leeftyd van 'n blok stel.
    • In dm_integrity bygevoeg ondersteuning vir die "weggooi"-operasie.
    • In null_blk bygevoeg ondersteuning vir foutvervanging om mislukkings tydens toetsing te simuleer.
    • Bygevoeg vermoë om udev-kennisgewings te stuur oor veranderinge in blok toestelgrootte.
  • Netwerk substelsel
    • Netfilter ingesluit veranderinge, wat die verwerking van groot wedstrydlyste (nftables-stelle) aansienlik versnel, wat 'n kombinasie van subnette, netwerkpoorte, protokol en MAC-adresse nagaan.
      Optimalisasies bekendgestel in die nft_set_pipapo (PIle PAcket POlicies) module, wat die probleem oplos om die inhoud van 'n pakkie te pas met arbitrêre veldtoestandreekse wat in filterreëls gebruik word, soos IP- en netwerkpoortreekse (nft_set_rbtree en nft_set_hash manipuleer intervalpassing en direkte refleksie van waardes ). Die weergawe van pipapo gevektoriseer met behulp van 256-bis AVX2-instruksies op 'n stelsel met 'n AMD Epyc 7402-verwerker het 'n 420% prestasieverhoging getoon wanneer 30 duisend rekords ontleed is, insluitend poortprotokolkombinasies. Die toename wanneer 'n kombinasie van 'n subnet en 'n poortnommer vergelyk word tydens die ontleding van 1000 rekords was 87% vir IPv4 en 128% vir IPv6.

    • Bygevoeg bareudp-module, waarmee u verskeie L3-protokolle, soos MPLS, IP en NSH, in 'n UDP-tonnel kan inkapsel.
    • Die integrasie van MPTCP (MultiPath TCP) komponente, '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 aan verskillende IP-adresse gekoppel is, het voortgegaan.
    • Bygevoeg ondersteuning vir hardewareversnellingsmeganismes vir die inkapseling van Ethernet-rame in 802.11 (Wi-Fi).
    • Wanneer 'n toestel van een netwerknaamruimte na 'n ander verskuif word, word die toegangsregte en eienaarskap van die ooreenstemmende lêers in sysfs aangepas.
    • Het die vermoë bygevoeg om die SO_BINDTODEVICE-vlag vir nie-wortelgebruikers te gebruik.
    • Die derde deel van pleisters is aanvaar, wat die ethtool-gereedskapstel van ioctl() omskakel na die gebruik van die netlink-koppelvlak. Die nuwe koppelvlak maak dit makliker om uitbreidings by te voeg, verbeter fouthantering, laat toe dat kennisgewings gestuur word wanneer toestand verander, vereenvoudig interaksie tussen die kern en gebruikersspasie, en verminder die aantal benoemde lyste wat gesinchroniseer moet word.
    • Bygevoeg die vermoë om spesiale hardewareversnellers te gebruik om verbindingsnasporingsbewerkings uit te voer.
    • In netfilter bygevoeg 'n haak vir die koppeling van klassifiseerders van uitgaande pakkies (uitgang), wat die voorheen huidige haak vir inkomende pakkies (ingang) aangevul het.
  • Virtualisering en sekuriteit
    • Bygevoeg hardeware implementering van wyser verifikasie (Wyser-verifikasie), wat gespesialiseerde ARM64 SVE-instruksies gebruik om teen aanvalle te beskerm deur gebruik te maak van terugkeer-georiënteerde programmering (ROP) tegnieke, waarin die aanvaller nie sy kode in die geheue probeer plaas nie, maar op stukke masjieninstruksies werk wat reeds in gelaaide biblioteke beskikbaar is, wat eindig. met 'n kontrole terugkeer instruksie. Sekuriteit kom daarop neer om digitale handtekeninge te gebruik om terugkeeradresse op kernvlak te verifieer. Die handtekening word in die ongebruikte boonste stukkies van die wyser self gestoor. Anders as sagteware-implementerings, word die skepping en verifikasie van digitale handtekeninge uitgevoer met behulp van spesiale SVE-instruksies.
    • Bygevoeg die vermoë om 'n geheue-area te beskerm teen skryf deur die userfaultfd()-stelseloproep te gebruik, wat ontwerp is om bladsyfoute (toegang tot ongeallokeerde geheuebladsye) in gebruikersruimte te hanteer. Die idee is om userfaultfd() te gebruik om toegangsoortredings op te spoor na bladsye wat as skryfbeskermd gemerk is en om 'n hanteerder te skakel wat op sulke skryfpogings kan reageer (byvoorbeeld om veranderinge te hanteer tydens die skep van lewendige momentopnames van lopende prosesse, noem vaslê wanneer geheuestortings na skyf gestort word, gedeelde geheue implementeer, veranderinge in geheue naspoor). Funksionaliteit ekwivalent met behulp van mprotect() in samewerking met die SIGSEGV sein hanteerder, maar dit werk merkbaar vinniger.
    • SELinux het die "checkreqprot"-parameter opgeskort, wat jou toelaat om geheuebeskermingkontroles te deaktiveer wanneer reëls verwerk word (wat die gebruik van uitvoerbare geheue-areas toelaat, ongeag die reëls gespesifiseer in die reëls). Kernfs-simskakels word toegelaat om die konteks van hul ouergidse te erf.
    • Die samestelling ingesluit module KRSI, wat jou toelaat om BPF-programme aan enige LSM-hake in die kern te heg. Die verandering laat jou toe om LSM-modules (Linux Security Module) in die vorm van BPF-programme te skep om ouditprobleme en verpligte toegangsbeheer op te los.
    • Uitgevoer Optimaliseer die werkverrigting van /dev/random deur CRNG-waardes saam te voeg in plaas daarvan om RNG-instruksies individueel te bel. Verbeterde werkverrigting van getrandom en /dev/random op ARM64-stelsels wat RNG-instruksies verskaf.
    • Implementering van 'n elliptiese kromme Curve25519 vervang vir die opsie uit die biblioteek HACL, waarvoor gegee wiskundige bewys van formele betroubaarheidsverifikasie.
    • Bygevoeg meganisme vir inligting oor vrye geheue bladsye. Deur hierdie meganisme te gebruik, kan gasstelsels inligting oor bladsye wat nie meer gebruik word nie na die gasheerstelsel oordra, en die gasheer kan die bladsydata terugneem.
    • In vfio/pci bygevoeg ondersteuning vir SR-IOV (Single-Root I/O Virtualization).
  • Geheue en stelseldienste
    • Van 80 tot 100 karakters toegeneem beperking op die maksimum reëllengte in die brontekste. Terselfdertyd word ontwikkelaars steeds aanbeveel om binne 80 karakters per reël te bly, maar dit is nie meer 'n harde limiet nie. Daarbenewens sal die oorskryding van die lyngroottelimiet nou slegs 'n bouwaarskuwing tot gevolg hê as checkpatch met die '--strict' opsie uitgevoer word. Die verandering sal dit moontlik maak om nie ontwikkelaars se aandag af te lei deur manipulasie met spasies en voel meer vry wanneer u kode in lyn bring, sowel as sal voorkom oormatige lynbreuk, steurend kodebegrip en soektog.
    • Bygevoeg ondersteuning vir EFI-gemengde selflaaimodus, wat jou toelaat om 'n 64-bis-kern te laai vanaf 32-bis-firmware wat op 'n 64-bis SVE loop sonder om 'n gespesialiseerde selflaaiprogram te gebruik.
    • Ingesluit stelsel vir die identifisering en ontfouting van gesplete slotte (“gesplete slot"), 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 beduidende prestasie-treffer (1000 siklusse stadiger as 'n atoombewerking op data wat in een kaslyn val). Afhangende van die "split_lock_detect"-selflaaiparameter, kan die kern sulke slotte dadelik opspoor en waarskuwings uitreik of 'n SIGBUS-sein stuur na die toepassing wat die sluiting veroorsaak.
    • Die taakskeduleerder bied die dop van temperatuursensors (Termiese druk) en geïmplementeer met inagneming van oorverhitting wanneer take geplaas word. Deur die verskafde statistieke te gebruik, kan die termiese goewerneur die maksimum SVE-frekwensie aanpas wanneer dit oorverhit word, en die taakskeduleerder neem nou die vermindering in rekenaarkrag in ag as gevolg van so 'n vermindering in frekwensie wanneer take geskeduleer word om te hardloop (voorheen het die skeduleerder op veranderinge gereageer in frekwensie met 'n sekere vertraging, vir 'n geruime tyd besluite te neem gebaseer op opgeblaasde aannames oor beskikbare rekenaarhulpbronne).
    • Die taakskeduleerder sluit in onveranderlike aanwysers lasnasporing, sodat jy die vrag korrek kan skat, ongeag die huidige SVE-bedryfsfrekwensie. Die verandering laat jou toe om die gedrag van take meer akkuraat te voorspel onder toestande van dinamiese veranderinge in spanning en SVE-frekwensie. Byvoorbeeld, 'n taak wat 1/3 van die SVE-hulpbronne op 1000 MHz verbruik het, sal 2/3 van die hulpbronne verbruik wanneer die frekwensie tot 500 MHz daal, wat voorheen 'n valse aanname geskep het dat dit op volle kapasiteit werk (d.w.s. take het verskyn groter vir die skeduleerder slegs deur die frekwensie te verminder, wat daartoe gelei het dat verkeerde besluite in die schedutil cpufreq-goewerneur geneem is).
    • Die Intel P-state-bestuurder, wat verantwoordelik is vir die keuse van werkverrigtingmodusse, is oorgeskakel na gebruik skeduleer.
    • Die vermoë om die BPF-substelsel te gebruik wanneer die kern intyds loop (PREEMPT_RT) is geïmplementeer. Voorheen, toe PREEMPT_RT geaktiveer was, moes BPF gedeaktiveer word.
    • 'n Nuwe tipe BPF-program is bygevoeg - BPF_MODIFY_RETURN, wat aan 'n funksie in die kern geheg kan word en die waarde verander wat deur hierdie funksie teruggestuur word.
    • Bygevoeg geleentheid Die gebruik van die clone3()-stelseloproep om 'n proses in 'n cgroup te skep wat verskil van die ouer-cgroup, wat die ouerproses toelaat om beperkings toe te pas en rekeningkunde onmiddellik te aktiveer nadat 'n nuwe proses of draad geskep is. Byvoorbeeld, 'n diensbestuurder kan nuwe dienste direk aan aparte cgroups toewys, en nuwe prosesse, wanneer dit in "bevrore" cgroups geplaas word, sal onmiddellik gestaak word.
    • in Kbuild bygevoeg ondersteuning vir die omgewingsveranderlike "LLVM=1" om na die Clang/LLVM-gereedskapstel oor te skakel wanneer die kern gebou word. Die vereistes vir die binutils-weergawe is verhoog (2.23).
    • 'n Afdeling /sys/kernel/debug/kunit/ is by debugfs gevoeg met die resultate van kunit-toetse.
    • Bygevoeg kern selflaai parameter pm_debug_messages (analoog aan /sys/power/pm_debug_messages), wat die uitvoer van ontfoutingsinligting oor die werking van die kragbestuurstelsel moontlik maak (nuttig wanneer probleme met hibernasie en bystandmodus ontfout word).
    • Na die asinchroniese I/O-koppelvlak io_uring ondersteuning bygevoeg splice() и atoombuffer seleksie.
    • Verbeterde cgroup profilering met behulp van die perf toolkit. Voorheen kon perf slegs take in 'n spesifieke cgroup profileer en kon nie uitvind aan watter cgroup die huidige monster behoort nie. perf ontvang nou cgroup-inligting vir elke monster, waardeur u meer as een cgroup kan profileer en sorteer volgens
      cgroep in verslae.

    • cgroupfs, 'n pseudo-FS vir die bestuur van cgroups, het ondersteuning bygevoeg vir uitgebreide eienskappe (xattrs), waarmee u byvoorbeeld addisionele inligting vir hanteerders in gebruikersruimte kan laat.
    • In cgroup geheue kontroleerder bygevoegen ondersteuning vir rekursiewe beskerming van die "memory.low" waarde, wat die minimum hoeveelheid RAM reguleer wat aan groeplede verskaf word. Wanneer 'n cgroup hiërargie gemonteer word met die "memory_recursiveprot" opsie, sal die waarde van "memory.low" wat vir die onderste nodusse gestel is, outomaties na alle kind nodusse versprei word.
    • Bygevoeg Uacce (Unified/User-space-access-bedoelde Accelerator Framework)-raamwerk vir die deel van virtuele adresse (SVA, Shared Virtual Addressing) tussen die SVE en perifere toestelle, wat hardewareversnellers in staat stel om toegang tot datastrukture in die hoof-SVE te verkry.
  • Hardeware argitekture
    • Vir die ARM-argitektuur word die vermoë om geheue te hot-fetch geïmplementeer.
    • Vir die RISC-V-argitektuur is ondersteuning vir warmprop en verwydering van SVE's (CPU hotplug) bygevoeg. Vir 32-bis RISC-V word eBPF JIT geïmplementeer.
    • Die vermoë om 32-bis ARM-stelsels te gebruik om KVM-gasomgewings te laat loop, is verwyder.
    • Het die "dummy" NUMA-implementering vir die s390-argitektuur verwyder, waarvoor geen gebruiksgevalle gevind is om werkverrigtingverbeterings te bereik nie.
    • Vir ARM64, bygevoeg ondersteuning vir die AMU (Activity Monitors Unit) uitbreiding, gedefinieer in ARMv8.4 en verskaffing van prestasie tellers wat gebruik word om frekwensie skaal korreksie faktore in die taak skeduleerder te bereken.
  • Оборудование
    • Bygevoeg ondersteuning vir vDPA-toestelle wat 'n data-uitruilkanaal gebruik wat aan virtio-spesifikasies voldoen. vDPA-toestelle kan óf fisies gekoppelde toerusting óf sagteware-geëmuleerde virtuele toestelle wees.
    • In die GPIO-substelsel verskyn 'n nuwe ioctl()-opdrag vir die monitering van veranderinge, wat jou toelaat om die proses in te lig oor veranderinge in die toestand van enige GPIO-lyn. As 'n voorbeeld van die gebruik van die nuwe opdrag voorgestelde gpio-watch nut.
    • In die i915 DRM-bestuurder vir Intel-videokaarte ingesluit verstekondersteuning vir Tigerlake ("Gen12")-skyfies en bygevoeg aanvanklike ondersteuning vir OLED-agterligbeheer. Verbeterde ondersteuning vir Ice Lake, Elkhart Lake, Baytrail en Haswell-skyfies.
    • In die amdgpu-bestuurder bygevoeg vermoë om firmware in die USBC-skyfie vir ASIC te laai. Verbeterde ondersteuning vir AMD Ryzen 4000 "Renoir" skyfies. Daar is nou ondersteuning vir die beheer van OLED-panele. Voorsien vertoning van firmwarestatus in ontfoutings.
    • Die vermoë om OpenGL 4 in gasstelsels te gebruik, is bygevoeg by die vmwgfx DRM-bestuurder vir VMware-virtualiseringstelsels (voorheen is OpenGL 3.3 ondersteun).
    • Bygevoeg nuwe DRM bestuurder tidss vir die TI Keystone platform vertoon stelsel.
    • Bygevoeg drywers vir LCD-panele: Feixin K101 IM2BA02, Samsung s6e88a0-ams452ef01, Novatek NT35510, Elida KD35T133, EDT, NewEast Optoelectronics WJFH116008A, Rocktech FRK101CT,01.
    • Aan die kragbestuurstelsel bygevoeg ondersteuning vir die Atom-gebaseerde Intel Jasper Lake (JSL) platform.
    • Bygevoeg ondersteuning vir Pinebook Pro skootrekenaar gebaseer op Rockchip RK3399, Pine64 PineTab tablet en slimfoon PinePhone gebaseer op Allwinner A64.
    • Bygevoeg ondersteuning vir nuwe oudio-kodeks en skyfies:
      Amlogic AIU, Amlogic T9015, Texas Instruments TLV320ADCX140, Realtek RT5682, ALC245, Broadcom BCM63XX I2S, Maxim MAX98360A, Presonus Studio 1810c, MOTU MicroBook IIc.

    • Bygevoeg ondersteuning vir ARM-borde en -platforms Qualcomm Snapdragon 865 (SM8250), IPQ6018, NXP i.MX8M Plus, Kontron “sl28”, 11 i.MX6 TechNexion Pico-bordopsies, drie nuwe Toradex Colibri-opsies, Samsung S7710 Galaxy Xcover 2 gebaseer op ST -Ericsson u8500, DH Electronics DHCOM SoM en PDK2, Renesas M3ULCB, Hoperun HiHope, Linutronix Testbox v2, PocketBook Touch Lux 3.

Bron: opennet.ru

Voeg 'n opmerking