Kernelrelease Linux 7.2

Na twee maanden ontwikkeling bracht Linus Torvalds de kernel uit. Linux 7.2. Tot de meest opvallende wijzigingen behoren: het USB4STREAM-datastreamingmechanisme, prestatieoptimalisaties voor btrfs, xfs en ext4, de verdere verwijdering van code voor i486 CPU-ondersteuning, de mogelijkheid om geneste SCHED_EXT-schedulers te creëren, een lager geheugenverbruik in het swap-subsysteem, versnelde naamloze pijpen, ondersteuning voor Intel MBEC- en AMD GMET-extensies in KVM, verwijdering van het AppleTalk-protocol en initiële ondersteuning voor HDMI 2.1 FRL in het AMDGPU-stuurprogramma.

Belangrijkste nieuwe functies in kernel 7.2 (1, 2, 3):

  • Schijfsubsysteem, I/O en bestandssystemen
    • In het iomap-mechanisme is een extra aanroep naar de memset-functie voor reeds voltooide iteraties in de iomap_iter()-functie verwijderd. Dit resulteerde, bij een hoge I/O-intensiteit op snelle NVMe-schijven, in een toename van 5% in het aantal input/output-bewerkingen per seconde (IOPS) in de tests die werden uitgevoerd met de ext4- en xfs-bestandssystemen.
    • XFS is stabiel verklaard voor ondersteuning van zoned storage-apparaten (waarbij groepen blokken of sectoren worden verdeeld in zones, waarin alleen sequentiële toevoegingen van gegevens zijn toegestaan, waarbij de gehele blokgroep wordt bijgewerkt).
    • Btrfs ondersteunt nu standaard grote folio's, waardoor de overhead wordt verminderd en de prestaties tijdens intensieve sequentiële I/O worden verbeterd. Experimentele ondersteuning voor zeer grote folio's (tot 2 MB) is toegevoegd. Een nieuwe ioctl, GET_CSUMS, is toegevoegd voor het ophalen van checksum-informatie in de gebruikersruimte, bijvoorbeeld voor het mkfs-hulpprogramma en optimalisatie van deduplicatie. De prestaties van sequentiële schrijfbewerkingen zijn met 15% verbeterd en die van directe I/O met 59%.
    • Het "fast commit"-mechanisme van het Ext4-bestandssysteem is aanzienlijk herzien om conflicten en deadlocks te elimineren. Export van inode-snapshotstatistieken is toegevoegd via /proc/fs/ext4/*/fc_info. De prestaties van de directory-hashberekening zijn geoptimaliseerd (bijna een verdubbeling van de snelheid voor namen van 255 tekens, 27% voor namen van 64 tekens en 11% voor namen van 32 tekens).
    • F2FS ondersteunt nu fserror-foutmeldingen, waardoor problemen met het bestandssysteem vanuit de gebruikersruimte kunnen worden gemonitord. De tijd die wordt besteed aan interruptafhandeling is verminderd.
    • Er is een nieuwe dm-inlinecrypt-handler toegevoegd aan Device Mapper (DM) voor transparante versleuteling en ontsleuteling van blokapparaten met behulp van hardwareapparaten met inline-versleutelingsfunctionaliteit.
    • Er is documentatie beschikbaar gesteld over het toevoegen van nieuwe bestandssystemen aan de kernel.
    • In NFS is de standaard blokgrootte verhoogd naar 4 MB op systemen met minimaal 16 GB RAM (u kunt /proc/fs/nfsd/max_block_size gebruiken om de blokgrootte handmatig te wijzigen). Ondersteuning voor directorydelegatie is toegevoegd, waardoor bewerkingen met een bepaalde directory gedurende een bepaalde periode kunnen worden uitgevoerd zonder te controleren op statuswijzigingen. server.
    • De SMB-server ondersteunt nu gecomprimeerde bestanden en datacompressie tijdens de overdracht via het netwerk.
    • De nieuwe NTFS-implementatie (ntfsplus) biedt nu ook ondersteuning voor symbolische links. Windows en zorgt voor een correcte afhandeling van veel soorten corruptie van metadata.
    • De fscache-backend voor het cachen van EROFS-gegevens (Enhanced Read-Only File System), die twee jaar geleden al was afgekeurd, is verwijderd.
    • Ceph FS ondersteunt nu het handmatig resetten van clientsessies.
    • Het 9P-bestandssysteem is geoptimaliseerd om de prestaties te verbeteren in scenario's zoals projectcompilaties.
    • Aan de systeemoproep file_getattr() zijn vlaggen toegevoegd voor het opvragen van informatie over de hoofdlettergevoeligheid van bestandsnamen. De vlag FS_XFLAG_CASEFOLD geeft aan dat de controle op hoofdlettergevoeligheid niet wordt uitgevoerd, en de vlag FS_XFLAG_CASENONPRESERVING geeft aan dat de hoofdlettergevoeligheid niet behouden blijft bij het aanmaken van nieuwe bestandsnamen. Deze vlaggen kunnen worden gebruikt in NFS-clients die geen rekening houden met hoofdlettergevoeligheid.
    • De vlag O_EMPTYPATH is toegevoegd aan de systeemoproep openat2(), waardoor een leeg bestandspad kan worden doorgegeven. In dit geval wordt het pad naar het te openen bestand bepaald op basis van de doorgegeven bestandsdescriptor.
    • De vlag OPENAT2_REGULAR is toegevoegd aan de systeemoproep openat2(), waardoor alleen reguliere bestanden kunnen worden geopend (er wordt een EFTYPE-fout geretourneerd als wordt geprobeerd een speciaal bestand te openen, zoals een socket, pipe of device).
  • Geheugen- en systeemservices
    • Het USB4STREAM-mechanisme is geïmplementeerd voor het streamen van data tussen computers die via USB4-poorten zijn verbonden. Het apparaat /dev/tbstreamX is toegevoegd, waarmee u data kunt lezen en schrijven met behulp van de standaardfuncties read() en write(), vergelijkbaar met het lezen en schrijven van bestanden. U kunt bijvoorbeeld op de ene host informatie verzenden met het commando "echo hello > /dev/tbstream0" en op een andere host deze lezen met het commando "cat /dev/tbstream0". Het USB4STREAM-mechanisme kan worden gecombineerd met de mogelijkheid om een ​​netwerkverbinding tot stand te brengen via een USB4-kabel (Thunderbolt_Net) of afzonderlijk worden gebruikt om data over te dragen tussen applicaties die geen netwerksockets ondersteunen.
    • De tweede reeks wijzigingen om de ondersteuning voor i486-processors te verwijderen is doorgevoerd. Meer dan 13 regels code met betrekking tot de emulatie van de floating-point unit voor processors zonder FPU zijn verwijderd. De ondersteuning voor i486-processors zonder de CX8- (compare and exchange 8 bytes) en TSC- (CPU cycle counter, gebruikt in de taakplanner) hardwarebewerkingen is verwijderd, aangezien de emulatiecode hiervoor is verwijderd.
    • De ondersteuning voor AMD Geode-processors die in de OLPC XO-1-computer werden gebruikt, is stopgezet.
    • Er is ondersteuning toegevoegd voor het bijwerken van de implementatie van Intel's TDX (Trusted Domain Extensions), een mechanisme dat wordt gebruikt om het RAM-geheugen van gastsystemen te versleutelen. TDX is geïmplementeerd als een speciale software-runtime-module die tijdens het opstarten door de BIOS van flashgeheugen naar RAM wordt overgezet. De kernel bevat nu mogelijkheden om deze module te beheren en te vervangen door een nieuwere versie op een draaiend systeem zonder dat een herstart nodig is.
    • Er is een nieuwe GPU-resourceallocatieplanner (Fair GPU scheduler) geïmplementeerd. Deze wordt gebruikt om de volgorde te bepalen waarin taken die door GPU-gebruikende processen worden ingediend, op de GPU worden uitgevoerd. In plaats van de traditionele FIDO-wachtrij voor GPU-aanvragen te gebruiken, maakt de nieuwe planner gebruik van eerlijke resourceallocatiemechanismen gebaseerd op de Completely Fair Scheduler (CFS) taakplanner, die een opstartplan met een overgangstijd voor het volgende proces gebruikt. Het meest merkbare effect van de nieuwe planner is te zien tijdens de parallelle uitvoering van interactieve taken die de GPU intensief gebruiken. Op het laatste moment, vlak voor de release van kernel 7.2, werd de Fair GPU scheduler gedeactiveerd en de oude FIFO-planner teruggezet vanwege de noodzaak om een ​​regressie op te sporen die leidde tot prestatievermindering en 100% GPU-gebruik bij het spelen van bepaalde games in Proton.
    • Wijzigingen in het eBPF-subsysteem: De mogelijkheid is toegevoegd om één BPF-programma aan meerdere tracepoints te koppelen. BPF-programma's die aan tracepoints zijn gekoppeld, hebben nu toegang tot het geheugen van gebruikerscomponenten, met correcte afhandeling van niet-toegewezen geheugenpagina's (paginafouten). De systeemoproep bpf() ondersteunt nu standaardattributen (log_buf, log_size, log_level en log_true_size), waardoor uniforme metadata-overdracht mogelijk is voor alle BPF-opdrachten, niet beperkt tot BPF_PROG_LOAD, BPF_BTF_LOAD en BPF_MAP_CREATE. De beperking van maximaal 5 parameters voor BPF-functies is opgeheven. De mogelijkheid is toegevoegd om veilig toegang te krijgen tot het gedeelde geheugen van bpf_arena zonder het risico te lopen op toegang tot niet-toegewezen geheugenpagina's (paginafouten). Een nieuwe versie van de BPF-hashmapstructuur is geïmplementeerd, waardoor dynamische aanpassing van de grootte mogelijk is.
    • De generatie van de uitvoer "/proc/interrupts" met interruptstatistieken is geoptimaliseerd, de structuren voor het opslaan van interrupttellers zijn gemoderniseerd en er is caching toegevoegd.
    • Het genereren van het bestand "/proc/filesystems" dat in libselinux wordt gebruikt, is versneld.
    • De taakplanner ondersteunt nu load balancing over CPU-cores, waarbij rekening wordt gehouden met de status van de interne cache van de processor. De planner probeert nu processen te groeperen die gebruikmaken van gedeelde resources, zoals threads binnen één proces, om dezelfde cache op hoog niveau te delen. Dit verbetert de efficiëntie van de gegevenstoegang doordat de kans groter is dat de benodigde gegevens in de cache worden gevonden.
    • Het SCHED_EXT-mechanisme, waarmee BPF kan worden gebruikt om CPU-schedulers te creëren, heeft de mogelijkheid om geneste schedulers (sub-schedulers) te creëren verder uitgebreid, waardoor elke cgroup zijn eigen taakplanner kan gebruiken.
    • De migratie van wijzigingen vanuit de Rust-for- branch wordt voortgezet.LinuxDit heeft te maken met het gebruik van Rust als tweede taal voor het ontwikkelen van drivers en kernelmodules (Rust-ondersteuning is niet standaard ingeschakeld en Rust is geen verplichte afhankelijkheid voor de kernelbuild). Rust-ondersteuning in de kernel is geïmplementeerd voor de s390-architectuur. Het "zerocopy"-pakket, dat snelle geheugenprimitieven biedt voor code in de "unsafe"-modus, is inbegrepen.
    • De minimaal vereiste versie van de LLVM-toolset voor het compileren van de kernel is verhoogd naar 17.0.1.
    • In de minimalistische C-bibliotheek nolibc, die wordt meegeleverd met de kernelbroncode. Linux en biedt een raamwerk voor basissysteemoproepen, met ondersteuning voor de OpenRISC- en 32-bits PA-RISC-architecturen.
    • Het swap-subsysteem is geoptimaliseerd om de prestaties te verbeteren en het geheugenverbruik binnen het subsysteem zelf te verminderen. Dit is bereikt door overhead bij het opslaan van statische metadata te elimineren en anoniem en gedeeld geheugen te verenigen bij het gebruik van tomes. De geheugenbesparing is aanzienlijk; zo vermindert het mounten van een swap-partitie van 1 TB het geheugenverbruik met ongeveer 512 MB.
    • De prestaties van het geheugenvrijmaakmechanisme, dat geheugen verwijdert of naar de swapruimte verplaatst om geheugen vrij te maken wanneer het systeem onder druk staat, zijn verbeterd. Bij bepaalde workloads, zoals bij het testen van MongoDB met YCSB (Yahoo! Cloud Serving Benchmark), zijn prestatieverbeteringen tot wel 30% waargenomen.
    • Het commando "make sbom" is toegevoegd aan het buildsysteem om SBOM-lijsten (Software Bill Of Materials) te genereren die de componenten, bibliotheken en afhankelijkheden weergeven die in de huidige kernelbuild worden gebruikt, evenals hun licentie-informatie die is verkregen uit de SPDX-headers in de codebestanden.
    • De implementatie van naamloze pijpen is geoptimaliseerd voor het afhandelen van vergrendelingen (geheugenallocatiebewerkingen worden buiten het bereik van de vergrendeling geplaatst), waardoor de doorvoer van naamloze pijpen met 21-48% is toegenomen en de latentie met 17-33% is verminderd.
  • Virtualisatie en beveiliging
    • De slab-allocator ondersteunt nu het gebruik van allocatietokens, geïmplementeerd in de Clang 22-compiler. Tokens maken unieke identificaties mogelijk voor geheugenallocatiebewerkingen en zorgen voor aparte allocatie van verschillende objecttypen, waardoor het misbruik van bufferoverloopkwetsbaarheden wordt bemoeilijkt (door de scheiding kan een bufferoverloop in één objecttype niet gemakkelijk worden misbruikt om andere objecttypen te beschadigen).
    • Het AF_ALG-mechanisme, dat werd misbruikt in de Copy Fail-kwetsbaarheid om gegevens in de paginacache te wijzigen, is verouderd en zal in een toekomstige release worden verwijderd. AF_ALG maakt hardwareversnellers mogelijk voor cryptografische berekeningen in de Crypto API van de kernel, maar wordt slechts in specifieke situaties gebruikt. In kernel 7.2 is de ondersteuning voor asynchrone I/O, legacy-stuurprogramma's en het zero-copy-mechanisme in de skcipher- en aead-implementaties verwijderd uit AF_ALG. Alleen software-implementaties van cryptografische algoritmen zijn behouden en de ondersteuning voor hardwarematige cryptografische versnellers in de Crypto API van de kernel is verwijderd, omdat AF_ALG het aanvalsoppervlak aanzienlijk vergroot, maar geen prestatievoordeel biedt ten opzichte van cryptografische implementaties in de gebruikersruimte. AF_ALG werd gebruikt in de Cryptsetup-toolkit, maar de ondersteuning hiervoor is verwijderd in de recente release 2.8.7.
    • Het IMA-mechanisme (Integrity Measurement Architecture), waarmee een externe service de status van kernelsubsystemen kan verifiëren om hun authenticiteit te waarborgen, is uitgebreid met ondersteuning voor het exporteren van interne tabellen met meetresultaten naar de gebruikersruimte en het verwijderen ervan uit kernelbuffers om geheugen te besparen.
    • In de Landlock-module, die programma's zonder verhoogde bevoegdheden de mogelijkheid biedt om het gebruik van kernelobjecten te beperken. Linux (bestandshiërarchieën, netwerksockets, ioctl, enz.) Er is ondersteuning toegevoegd voor toegangscontrole tot UDP-sockets, evenals de mogelijkheid om de uitvoer van objectvergrendelingsinformatie naar het logboek selectief uit te schakelen om te voorkomen dat het logboek vol raakt met irrelevante informatie.
    • Het gebruik van de functie strncpy() in de kernel, waarmee een gespecificeerd aantal bytes uit een invoerstring wordt gekopieerd, is afgekeurd. Het gebruik van strncpy() bracht het risico met zich mee van fouten als gevolg van een ontbrekend null-teken aan het einde van de string of extra opvulling met nullen. In plaats van strncpy() wordt aanbevolen om de functies strscpy() en strscpy_pad() te gebruiken voor het kopiëren van strings die eindigen met een null-teken, evenals strtomem_pad(), memcpy_and_pad() en memcpy() voor het kopiëren van strings met een bekende, vaste grootte. De werkzaamheden om het gebruik van strncpy() in de kernel af te keuren, begonnen in 2020 en vereisten 362 commits van 70 ontwikkelaars.
    • In de hypervisor KVM Er is ondersteuning toegevoegd voor de Intel MBEC (Mode-Based Execution Control) en AMD GMET (Guest-Mode Execution Trap) extensies, waarmee de uitvoeringsrechten van de kernel en de gebruikersruimte in gastsystemen gescheiden kunnen worden in geheugenvertalingstabellen. Voorheen konden Intel en AMD hardwarevirtualisatie-extensies geheugenpagina's slechts met één bit als uitvoerbaar markeren, waarbij de scheiding van kernel- en gebruikersruimterechten softwarematig op hypervisorniveau plaatsvond. Het gebruik van MBEC en GMET elimineert permissiecontroles aan de hypervisorzijde en vermindert de resource-intensieve controleoverdracht van het gastsysteem naar de VMexit-hypervisor aanzienlijk.
  • Netwerksubsysteem
    • De TCP-AO-extensie (TCP Authentication Option, RFC 5925) is overgezet naar de nieuwe cryptografische bibliotheek libcrypto, waardoor de code is vereenvoudigd en de prestaties zijn verbeterd. TCP-AO maakt verificatie van TCP-headers mogelijk met behulp van MAC-codes (Message Authentication Code), waarbij gebruik wordt gemaakt van de modernere HMAC-SHA-1-96- en AES-128-CMAC-96-algoritmen. Hiermee wordt de eerder beschikbare TCP-MD5-optie vervangen, die afhankelijk was van het verouderde MD5-algoritme.
    • Het aantal ondersteunde substreams voor Multipath TCP (MPTCP)-verbindingen is verhoogd van 8 naar 64.
    • Er werd verder gewerkt aan het verminderen van het gebruik van de globale vergrendeling rtnl_lock in de netwerkstack van de kernel.
    • De kernel heeft de implementatie van de AppleTalk-protocolstack verwijderd, die sinds 1985 in Apple-computers werd gebruikt en in de jaren negentig werd vervangen door TCP/IPDaarnaast zijn ATM-gegevensoverdrachttechnologiecomponenten die geen verband houden met PPPoATM verwijderd, evenals ARCnet-netwerkinterfaces gebaseerd op ISA- en PCMCIA-bussen, Bluetooth-adapters met PCMCIA-interface, Chelsea TLS-acceleratoren, code voor het integreren van TLS met sockmap en ondersteuning voor de 5/10 MHz-frequentiebanden in de cfg80211/mac80211 draadloze stack. Vanwege onopgeloste blokkeringsproblemen en een gebrek aan beheerders is een specifieke implementatie van TLS-verwerkingsacceleratie gebaseerd op de TCP Offload Engine verwijderd (de meer gangbare TLS-offloadimplementatie is behouden). Compatibiliteitscode met 32-bits x_tables op 64-bits systemen is uitgeschakeld en zal naar verwachting worden verwijderd.
    • De pppoe-driver ondersteunt nu GRO (Generic Receive Offload) en GSO (Generic Segmentation Offload) mechanismen voor hardwarematige versnelling van pakketherassemblage en -segmentatie. Het gebruik van GRO en GSO verhoogt de doorvoer van inkomend verkeer aanzienlijk. Op MediaTek MT7621-apparaten die geconfigureerd zijn met een adresvertaler, steeg de maximale doorvoer bijvoorbeeld van 130 Mbit/s naar 630 Mbit/s.
  • Uitrusting
    • De AMDGPU-driver biedt nu initiële ondersteuning voor HDMI 2.1 FRL (Fixed Rate Link)-technologie, waardoor de overdracht van ongecomprimeerde video mogelijk is met 4K/120Hz en 8K/60Hz. HDMI 2.1-ondersteuning was voorheen moeilijk te vinden in open-source drivers vanwege de licentievereisten van het HDMI Forum, maar AMD heeft nu een vergelijkbare implementatie weten te realiseren.
    • De i915-driver ondersteunt nu het instellen van de achtergrondkleur voor de displaycontroller. De parameter pin_params.needs_low_address is geïmplementeerd.
    • Er is verder gewerkt aan de Xe DRM-driver (Direct Rendering Manager) voor GPU's gebaseerd op de Intel Xe-architectuur, die wordt gebruikt in Intel Arc-serie grafische kaarten en geïntegreerde grafische kaarten, te beginnen met de Tiger Lake-processors. Er is initiële ondersteuning toegevoegd voor het CRI-platform (Crescent Island). Een systeemcontroller is geïmplementeerd voor Xe3p dGPU-platforms.
    • De Nouveau-driver lost problemen met de NVIDIA GA100 GPU op.
    • De v3d-driver is bijgewerkt en biedt nu de mogelijkheid om het stroomverbruik van de v3D GPU op Raspberry Pi-boards te beheren.
    • We zijn doorgegaan met het integreren van Nova-stuurprogrammacomponenten voor NVIDIA GPU's met GSP-firmware, die sinds de NVIDIA GeForce RTX 2000-serie op basis van de Turing-microarchitectuur wordt gebruikt. Het stuurprogramma is geschreven in Rust. Ondersteuning is toegevoegd voor de NVIDIA GA100-, Hopper- en Blackwell-serie GPU's.
    • Ondersteuning toegevoegd voor ARM-boards, SoC's en apparaten: Apple t8122 (M3), Motorola Edge 30, Nothing Phone 3a, Google Pixel 3a XL, Qualcomm Dragonwing IPQ9650, Huawei Hawi, ZTE zx297520v3, Renesas R-Car M3Le, ASPEED AST27xx, Cortina Gemini, NXP i.MX6/8/9, NXP LX2160A, TI K3 AM62x.

Tegelijkertijd creëerde de Latijns-Amerikaanse Stichting voor Vrije Software een versie van de volledig vrije kernel 7.2. Linux-libre 7.2-gnu, opgeschoond van firmware- en driverelementen die niet-vrije componenten of codefragmenten met een beperkte reikwijdte bevatten, zoals vastgesteld door de fabrikant. Release 7.2 bevat een opschoning van de blobs voor de nieuwe rt722-sdca- en tac5xx2-drivers. De opschooncode voor de amdgpu-, nova core-, qcom iris-, q6v5-, iwlwifi-, amdxnda-, adreno-, r8152- en mt792x-drivers is bijgewerkt. Interfaces voor het laden van firmware zijn aangepast. Blobnamen in devicetree (dts)-bestanden voor ARM-chips zijn opgeschoond.

Bron: opennet.ru

Koop betrouwbare hosting voor sites met DDoS-bescherming, VPS VDS-servers 🔥 Koop betrouwbare websitehosting met DDoS-bescherming, VPS- en VDS-servers | ProHoster