Linux 5.7 kernel-release

Na twee maanden ontwikkeling, Linus Torvalds ingediend kernel-release Linux 5.7. Een van de meest opvallende veranderingen: een nieuwe implementatie van het exFAT-bestandssysteem, een bareudp-module voor het maken van UDP-tunnels, bescherming op basis van pointer-authenticatie voor ARM64, de mogelijkheid om BPF-programma's aan LSM-handlers te koppelen, een nieuwe implementatie van Curve25519, een split- lock-detector, BPF-compatibiliteit met PREEMPT_RT, verwijdering van de limiet op de regelgrootte van 80 tekens in de code, rekening houdend met CPU-temperatuurindicatoren in de taakplanner, de mogelijkheid om clone() te gebruiken om processen in een andere cgroup te spawnen, bescherming tegen schrijven naar het geheugen met userfaultfd.

De nieuwe versie bevat 15033 oplossingen van 1961 ontwikkelaars,
patchgrootte - 39 MB (wijzigingen betroffen 11590 bestanden, 570560 regels code toegevoegd,
297401 rijen verwijderd). Ongeveer 41% van alle gepresenteerd in 5.7
wijzigingen hebben betrekking op apparaatstuurprogramma's; bij ongeveer 16% van de wijzigingen is dit het geval
houding ten opzichte van het updaten van code die specifiek is voor hardware-architecturen, 13%
gerelateerd aan de netwerkstack, 4% aan bestandssystemen en 4% aan intern
kernel-subsystemen.

De belangrijkste innovaties:

  • Schijfsubsysteem, I/O en bestandssystemen
    • Nieuwe exFAT-stuurprogramma-implementatie toegevoegd, Gesticht gebaseerd op de huidige “sdfat” (2.x) codebasis ontwikkeld door Samsung voor zijn Android-smartphones. De eerder aan de kernel toegevoegde driver was gebaseerd op de oudere Samsung-code (versie 1.2.9) en liep qua prestaties ongeveer 10% achter op de nieuwe driver. Laten we niet vergeten dat het toevoegen van exFAT-ondersteuning aan de kernel mogelijk werd na Microsoft опубликовала openbare specificaties en maakte exFAT-patenten beschikbaar voor royaltyvrij gebruik op Linux.
    • Btrfs implementeert een nieuwe ioctl()-opdracht - BTRFS_IOC_SNAP_DESTROY_V2, waarmee u een subsectie kunt verwijderen op basis van de ID. Er wordt volledige ondersteuning geboden voor het klonen van inline-extensies. Het aantal annuleringspunten voor herverdelingsoperaties is uitgebreid, waardoor de lange wachttijden bij het uitvoeren van het 'balance cancel'-commando zijn verminderd. De bepaling van backlinks naar omvang is versneld (de uitvoeringstijd van het testscript is bijvoorbeeld afgenomen van een uur naar enkele minuten). De mogelijkheid toegevoegd om bestandsextensies aan elke inode van een boom te koppelen. Het blokkeerschema dat wordt gebruikt bij het schrijven naar subpartities en bij het uitsluiten van NOCOW is opnieuw ontworpen. Verbeterde efficiëntie van fsync-uitvoering voor bereiken.
    • XFS heeft de controle van metagegevens en fsck voor actieve partities verbeterd. Er is een bibliotheek voorgesteld voor het opnieuw opbouwen van btree-structuren, die in de toekomst zal worden gebruikt om xfs_repair te herwerken en de mogelijkheid van herstel te implementeren zonder de partitie te ontkoppelen.
    • Experimentele ondersteuning voor het plaatsen van een swappartitie in SMB3-opslag is toegevoegd aan CIFS. POSIX-extensies voor readdir geïmplementeerd, gedefinieerd in de SMB3.1.1-specificatie. Verbeterde schrijfprestaties voor pagina's van 64 KB wanneer de cache=strict-modus is ingeschakeld en protocolversies 2.1+ worden gebruikt.
    • FS EXT4 is overgezet van bmap en iopoll naar het gebruik van iomap.
    • F2FS biedt optionele ondersteuning voor datacompressie met behulp van het zstd-algoritme. Standaard wordt het LZ4-algoritme gebruikt voor compressie. Ondersteuning toegevoegd voor de opdracht "chattr -c commit". Er is een montagetijdweergave aanwezig. Ioctl F2FS_IOC_GET_COMPRESS_BLOCKS toegevoegd om informatie te krijgen over het aantal gecomprimeerde blokken. Compressiegegevensuitvoer toegevoegd via statx.
    • Het Ceph-bestandssysteem heeft de mogelijkheid toegevoegd om lokaal bewerkingen voor het maken en verwijderen van bestanden uit te voeren (ontkoppelen) zonder te wachten op een reactie van de server (werkt in asynchrone modus). De wijziging kan bijvoorbeeld de prestaties aanzienlijk verbeteren bij het uitvoeren van het rsync-hulpprogramma.
    • De mogelijkheid om virtiofs als bestandssysteem op het hoogste niveau te gebruiken is toegevoegd aan OVERLAYFS.
    • Herschreven code voor het doorlopen van paden in VFS, code voor het parseren van symbolische koppelingen is herwerkt en het doorlopen van koppelpunten is verenigd.
    • In het scsi-subsysteem voor gebruikers zonder rechten toegestaan uitvoering van ZBC-opdrachten.
    • In dm_writecache geïmplementeerd de mogelijkheid om de cache geleidelijk te wissen op basis van de max_age parameter, die de maximale levensduur van een blok instelt.
    • In dm_integrity toegevoegd steun voor de "weggooi"-operatie.
    • In null_blk toegevoegd ondersteuning voor foutvervanging om fouten tijdens het testen te simuleren.
    • Toegevoegd mogelijkheid om udev-meldingen te verzenden over wijzigingen in de blokgrootte van apparaten.
  • Netwerksubsysteem
    • Netfilter inbegrepen veranderingen, waardoor de verwerking van grote matchlijsten (nftables-sets) aanzienlijk wordt versneld, waarbij een combinatie van subnetten, netwerkpoorten, protocol- en MAC-adressen moet worden gecontroleerd.
      Optimalisaties ingevoerde in de nft_set_pipapo (PIle PAcket POlicies) module, die het probleem oplost van het matchen van de inhoud van een pakket met willekeurige veldstatusbereiken die worden gebruikt in filterregels, zoals IP- en netwerkpoortbereiken (nft_set_rbtree en nft_set_hash manipuleren intervalmatching en directe reflectie van waarden ). De versie van pipapo gevectoriseerd met behulp van 256-bit AVX2-instructies op een systeem met een AMD Epyc 7402-processor liet een prestatieverbetering van 420% zien bij het parseren van 30 records inclusief poort-protocolcombinaties. De stijging bij het vergelijken van een combinatie van een subnet en een poortnummer bij het parseren van 1000 records was 87% voor IPv4 en 128% voor IPv6.

    • toegevoegd bareudp-module, waarmee u verschillende L3-protocollen, zoals MPLS, IP en NSH, in een UDP-tunnel kunt inkapselen.
    • De integratie van MPTCP-componenten (MultiPath TCP), een uitbreiding van het TCP-protocol voor het organiseren van de werking van een TCP-verbinding met de gelijktijdige levering van pakketten langs verschillende routes via verschillende netwerkinterfaces die aan verschillende IP-adressen zijn gekoppeld, is voortgezet.
    • Toegevoegd ondersteuning voor hardwareversnellingsmechanismen voor het inkapselen van Ethernet-frames in 802.11 (Wi-Fi).
    • Wanneer een apparaat van de ene netwerknaamruimte naar de andere wordt verplaatst, worden de toegangsrechten en het eigendom van de overeenkomstige bestanden in sysfs aangepast.
    • De mogelijkheid toegevoegd om de vlag SO_BINDTODEVICE te gebruiken voor niet-rootgebruikers.
    • Het derde deel van de patches is geaccepteerd, waarbij de ethtool-toolkit wordt geconverteerd van ioctl() naar het gebruik van de netlink-interface. De nieuwe interface maakt het gemakkelijker om extensies toe te voegen, verbetert de foutafhandeling, maakt het verzenden van meldingen mogelijk wanneer de status verandert, vereenvoudigt de interactie tussen de kernel en de gebruikersruimte en vermindert het aantal benoemde lijsten dat moet worden gesynchroniseerd.
    • De mogelijkheid toegevoegd om speciale hardwareversnellers te gebruiken om verbindingen te volgen.
    • In netfilter toegevoegd een hook voor het verbinden van classificatoren van uitgaande pakketten (egress), die een aanvulling vormde op de voorheen aanwezige hook voor inkomende pakketten (ingress).
  • Virtualisatie en beveiliging
    • Hardware-implementatie van pointer-authenticatie toegevoegd (Aanwijzerverificatie), dat gebruik maakt van gespecialiseerde ARM64 CPU-instructies ter bescherming tegen aanvallen met behulp van Return-Oriented Programming (ROP)-technieken, waarbij de aanvaller niet probeert zijn code in het geheugen te plaatsen, maar werkt op stukjes machine-instructies die al beschikbaar zijn in geladen bibliotheken, eindigend met een controle-retourinstructie. Beveiliging komt neer op het gebruik van digitale handtekeningen om retouradressen op kernelniveau te verifiëren. De handtekening wordt opgeslagen in de ongebruikte topbits van de aanwijzer zelf. In tegenstelling tot software-implementaties wordt het aanmaken en verifiëren van digitale handtekeningen uitgevoerd met behulp van speciale CPU-instructies.
    • Toegevoegd de mogelijkheid om een ​​geheugengebied te beschermen tegen schrijven met behulp van de userfaultfd() systeemaanroep, ontworpen om paginafouten (toegang tot niet-toegewezen geheugenpagina's) in de gebruikersruimte af te handelen. Het idee is om userfaultfd() te gebruiken om zowel toegangsschendingen te detecteren tot pagina's die zijn gemarkeerd als tegen schrijven beveiligd, als om een ​​handler aan te roepen die op dergelijke schrijfpogingen kan reageren (bijvoorbeeld om wijzigingen af ​​te handelen tijdens het maken van live snapshots van actieve processen, vastleggen bij het dumpen van geheugendumps naar schijf, het implementeren van gedeeld geheugen, het volgen van veranderingen in het geheugen). Functionaliteit equivalent mprotect() gebruiken in combinatie met de SIGSEGV-signaalhandler, maar het werkt merkbaar sneller.
    • SELinux heeft de parameter "checkreqprot" verouderd, waarmee je geheugenbeschermingscontroles kunt uitschakelen bij het verwerken van regels (waardoor het gebruik van uitvoerbare geheugengebieden wordt toegestaan, ongeacht de regels die in de regels zijn gespecificeerd). Kernfs-symlinks mogen de context van hun bovenliggende mappen overnemen.
    • De structuur inbegrepen module KRSI, waarmee je BPF-programma's aan alle LSM-hooks in de kernel kunt koppelen. Met de wijziging kunt u LSM-modules (Linux Security Module) maken in de vorm van BPF-programma's om auditproblemen en verplichte toegangscontrole op te lossen.
    • Voerde uit Optimaliseert de prestaties van /dev/random door CRNG-waarden in batches te verwerken in plaats van RNG-instructies afzonderlijk aan te roepen. Verbeterde prestaties van getrandom en /dev/random op ARM64-systemen die RNG-instructies bieden.
    • Implementatie van een elliptische curve Curve25519 vervangen voor de optie uit de bibliotheek HACL, waarvoor gegeven wiskundig bewijs van formele betrouwbaarheidsverificatie.
    • toegevoegd mechanisme voor het informeren over vrije geheugenpagina's. Met behulp van dit mechanisme kunnen gastsystemen informatie over pagina's die niet langer worden gebruikt naar het hostsysteem verzenden, en kan de host de paginagegevens terugnemen.
    • In vfio/pci toegevoegd ondersteuning voor SR-IOV (Single-Root I/O Virtualisatie).
  • Geheugen- en systeemservices
    • Van 80 tot 100 tekens toegenomen beperking van de maximale regellengte in de bronteksten. Tegelijkertijd wordt ontwikkelaars nog steeds aangeraden om binnen 80 tekens per regel te blijven, maar dit is niet langer een harde limiet. Bovendien zal het overschrijden van de limiet voor de regelgrootte nu alleen resulteren in een build-waarschuwing als checkpatch wordt uitgevoerd met de optie '--strict'. De verandering maakt het mogelijk om ontwikkelaars niet af te leiden manipulatie met spaties en voel je vrijer bij het uitlijnen van code, evenals zal voorkomen overmatige lijnbreuk, storend codebegrip en zoeken.
    • Toegevoegd ondersteuning voor de gemengde opstartmodus van EFI, waarmee u een 64-bits kernel kunt laden vanaf 32-bits firmware die op een 64-bits CPU draait zonder een gespecialiseerde bootloader te gebruiken.
    • Inbegrepen systeem voor het identificeren en debuggen van gespleten sloten (“gespleten slot"), wat optreedt bij het benaderen van niet-uitgelijnde gegevens in het geheugen vanwege het feit dat bij het uitvoeren van een atomaire instructie de gegevens twee CPU-cachelijnen overschrijden. Een dergelijke blokkering resulteert in een aanzienlijke prestatieverbetering (1000 cycli langzamer dan een atomaire bewerking op gegevens die in één cacheregel vallen). Afhankelijk van de opstartparameter "split_lock_detect" kan de kernel dergelijke vergrendelingen onmiddellijk detecteren en waarschuwingen geven of een SIGBUS-signaal sturen naar de applicatie die de vergrendeling veroorzaakt.
    • De taakplanner biedt tracking van temperatuursensoren (Thermische druk) en geïmplementeerd waarbij rekening gehouden wordt met oververhitting bij het plaatsen van taken. Met behulp van de verstrekte statistieken kan de thermische gouverneur de maximale CPU-frequentie aanpassen bij oververhitting, en de taakplanner houdt nu rekening met de vermindering van de rekenkracht als gevolg van een dergelijke verlaging van de frequentie bij het plannen van de uitvoering van taken (voorheen reageerde de planner op wijzigingen in frequentie met een bepaalde vertraging, waarbij gedurende enige tijd beslissingen worden genomen op basis van opgeblazen veronderstellingen over beschikbare computerbronnen).
    • De taakplanner bevat invariante indicatoren load-tracking, zodat u de belasting correct kunt inschatten, ongeacht de huidige CPU-werkfrequentie. Dankzij de wijziging kunt u het gedrag van taken nauwkeuriger voorspellen onder omstandigheden van dynamische veranderingen in spanning en CPU-frequentie. Een taak die bijvoorbeeld 1/3 van de CPU-bronnen op 1000 MHz verbruikt, zal 2/3 van de bronnen verbruiken wanneer de frequentie daalt naar 500 MHz, wat eerder een valse veronderstelling creëerde dat deze op volledige capaciteit draaide (dat wil zeggen dat taken verschenen alleen groter voor de planner door de frequentie te verlagen, wat ertoe leidde dat er onjuiste beslissingen werden genomen in de schedutil cpufreq-gouverneur).
    • De Intel P-state driver, die verantwoordelijk is voor het selecteren van prestatiemodi, is overgeschakeld naar gebruik schemautil.
    • De mogelijkheid om het BPF-subsysteem te gebruiken wanneer de kernel in realtime draait (PREMPT_RT) is geïmplementeerd. Voorheen moest BPF worden uitgeschakeld als PREEMPT_RT was ingeschakeld.
    • Er is een nieuw type BPF-programma toegevoegd - BPF_MODIFY_RETURN, dat aan een functie in de kernel kan worden gekoppeld en de door deze functie geretourneerde waarde kan wijzigen.
    • Toegevoegd kans Gebruik de systeemaanroep clone3() om een ​​proces in een cgroup te maken dat verschilt van de bovenliggende cgroup, waardoor het bovenliggende proces beperkingen kan toepassen en boekhouding kan inschakelen onmiddellijk na het voortbrengen van een nieuw proces of een nieuwe thread. Een servicemanager kan bijvoorbeeld nieuwe services direct toewijzen aan afzonderlijke cgroups, en nieuwe processen worden, wanneer ze in “bevroren” cgroups worden geplaatst, onmiddellijk gestopt.
    • in Kbuild toegevoegd ondersteuning voor de omgevingsvariabele "LLVM=1" om over te schakelen naar de Clang/LLVM-toolkit bij het bouwen van de kernel. De vereisten voor de binutils-versie zijn verhoogd (2.23).
    • Een sectie /sys/kernel/debug/kunit/ is toegevoegd aan debugfs met de resultaten van kunit-tests.
    • Kernel-opstartparameter pm_debug_messages toegevoegd (analoog aan /sys/power/pm_debug_messages), die de uitvoer van debug-informatie over de werking van het energiebeheersysteem mogelijk maakt (handig bij het debuggen van problemen met de slaap- en stand-bymodus).
    • Naar de asynchrone I/O-interface io_uring ondersteuning toegevoegd splitsen() и selectie van atomaire buffers.
    • Verbeterde cgroup-profilering met behulp van de perf-toolkit. Voorheen kon perf alleen taken in een specifieke cgroup profileren en kon hij niet achterhalen tot welke cgroup de huidige steekproef behoort. perf haalt nu cgroup-informatie op voor elk monster, waardoor u meer dan één cgroup kunt profileren en sorteren op kunt toepassen
      cgroup in rapporten.

    • cgroupfs, een pseudo-FS voor het beheren van cgroups, heeft ondersteuning toegevoegd voor uitgebreide attributen (xattrs), waarmee je bijvoorbeeld aanvullende informatie voor handlers in de gebruikersruimte kunt achterlaten.
    • In cgroup-geheugencontroller toegevoegden ondersteuning voor recursieve bescherming van de “memory.low”-waarde, die de minimale hoeveelheid RAM regelt die aan groepsleden wordt verstrekt. Wanneer u een cgroup-hiërarchie aankoppelt met de optie "memory_recursiveprot", wordt de waarde van "memory.low" die is ingesteld voor de lagere knooppunten automatisch gedistribueerd naar alle onderliggende knooppunten.
    • toegevoegd Uacce-framework (Unified/User-space-access-intended Accelerator Framework) voor het delen van virtuele adressen (SVA, Shared Virtual Addressing) tussen de CPU en randapparatuur, waardoor hardwareversnellers toegang krijgen tot datastructuren in de hoofd-CPU.
  • Hardware-architecturen
    • Voor de ARM-architectuur is de mogelijkheid om geheugen hot-fetch te implementeren geïmplementeerd.
    • Voor de RISC-V-architectuur is ondersteuning voor hot plugging en verwijdering van CPU's (CPU hotplug) toegevoegd. Voor 32-bits RISC-V is eBPF JIT geïmplementeerd.
    • De mogelijkheid om 32-bits ARM-systemen te gebruiken om KVM-gastomgevingen uit te voeren is verwijderd.
    • De "dummy" NUMA-implementatie voor de s390-architectuur verwijderd, waarvoor geen gebruiksscenario's werden gevonden die prestatieverbeteringen bereikten.
    • Voor ARM64 is ondersteuning toegevoegd voor de AMU-extensie (Activity Monitors Unit), gedefinieerd in ARMv8.4 en die prestatietellers biedt die worden gebruikt om correctiefactoren voor frequentieschaling in de taakplanner te berekenen.
  • Uitrusting
    • Toegevoegd ondersteuning voor vDPA-apparaten die een gegevensuitwisselingskanaal gebruiken dat voldoet aan de virtio-specificaties. vDPA-apparaten kunnen fysiek verbonden apparatuur zijn of door software geëmuleerde virtuele apparaten.
    • In het GPIO-subsysteem verscheen een nieuw ioctl()-commando voor het monitoren van wijzigingen, waardoor u het proces kunt informeren over wijzigingen in de status van elke GPIO-lijn. Als voorbeeld van het gebruik van de nieuwe opdracht voorgesteld gpio-watch-hulpprogramma.
    • In het i915 DRM-stuurprogramma voor Intel-videokaarten inbegrepen standaardondersteuning voor Tigerlake (“Gen12”)-chips en initiële ondersteuning toegevoegd voor OLED-achtergrondverlichting. Verbeterde ondersteuning voor Ice Lake, Elkhart Lake, Baytrail en Haswell-chips.
    • In het amdgpu-stuurprogramma toegevoegd mogelijkheid om firmware in de USBC-chip te laden voor ASIC. Verbeterde ondersteuning voor AMD Ryzen 4000 "Renoir"-chips. Er is nu ondersteuning voor het aansturen van OLED-panelen. Biedt weergave van de firmwarestatus in debugfs.
    • De mogelijkheid om OpenGL 4 in gastsystemen te gebruiken is toegevoegd aan het vmwgfx DRM-stuurprogramma voor VMware-virtualisatiesystemen (voorheen werd OpenGL 3.3 ondersteund).
    • Nieuwe DRM-stuurprogramma-informatie toegevoegd voor het TI Keystone-platformweergavesysteem.
    • Stuurprogramma's toegevoegd voor LCD-panelen: Feixin K101 IM2BA02, Samsung s6e88a0-ams452ef01, Novatek NT35510, Elida KD35T133, EDT, NewEast Optoelectronics WJFH116008A, Rocktech RK101II01D-CT, Frida FRD350H54004.
    • Naar het energiebeheersysteem toegevoegd ondersteuning voor het Atom-gebaseerde Intel Jasper Lake (JSL)-platform.
    • Ondersteuning toegevoegd voor Pinebook Pro-laptop gebaseerd op Rockchip RK3399, Pine64 PineTab-tablet en smartphone PinePhone gebaseerd op Allwinner A64.
    • Ondersteuning toegevoegd voor nieuwe audiocodecs en chips:
      Amlogic AIU, Amlogic T9015, Texas Instruments TLV320ADCX140, Realtek RT5682, ALC245, Broadcom BCM63XX I2S, Maxim MAX98360A, Presonus Studio 1810c, MOTU MicroBook IIc.

    • Ondersteuning toegevoegd voor ARM-boards en platforms Qualcomm Snapdragon 865 (SM8250), IPQ6018, NXP i.MX8M Plus, Kontron “sl28”, 11 i.MX6 TechNexion Pico-bordopties, drie nieuwe Toradex Colibri-opties, Samsung S7710 Galaxy Xcover 2 gebaseerd 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 een reactie