Linux 6.0 kernel-release

Na twee maanden ontwikkeling presenteerde Linus Torvalds de release van de Linux 6.0-kernel. De aanzienlijke wijziging in het versienummer is om esthetische redenen en is een formele stap om het ongemak te verlichten dat gepaard gaat met het verzamelen van een groot aantal problemen in de serie (Linus grapte dat de reden voor het wijzigen van het filiaalnummer waarschijnlijker was dat hij bijna geen vingers meer had en tenen om versienummers te tellen). Een van de meest opvallende veranderingen: ondersteuning voor asynchroon gebufferd schrijven in XFS, de ublk-blokdriver, optimalisatie van de taakplanner, een mechanisme voor het verifiëren van de juiste werking van de kernel, ondersteuning voor het ARIA-blokcijfer.

Belangrijkste innovaties in kernel 6.0:

  • Schijfsubsysteem, I/O en bestandssystemen
    • Het XFS-bestandssysteem heeft ondersteuning toegevoegd voor asynchrone gebufferde schrijfbewerkingen met behulp van het io_uring-mechanisme. Prestatietests uitgevoerd met behulp van fio-tools (1 thread, 4kB blokgrootte, 600 seconden, sequentieel schrijven) laten een toename zien in input/output-bewerkingen per seconde (IOPS) van 77k naar 209k, gegevensoverdrachtsnelheid van 314MB/s naar 854MB/s, en een daling van de latentie van 9600ns naar 120ns (80 keer).
    • Het Btrfs-bestandssysteem implementeert een tweede versie van het protocol voor de opdracht “send”, die ondersteuning implementeert voor aanvullende metagegevens, het verzenden van gegevens in grotere blokken (meer dan 64 KB) en het verzenden van gebieden in gecomprimeerde vorm. De prestaties van directe leesbewerkingen zijn aanzienlijk verbeterd (tot 3 keer) dankzij het gelijktijdig lezen van maximaal 256 sectoren. Verminderde vergrendelingsconflicten en versnelde de controle van metagegevens door de gereserveerde metagegevens voor uitgestelde elementen te verminderen.
    • Nieuwe ioctl-bewerkingen EXT4_IOC_GETFSUUID en EXT4_IC_SETFSUUID zijn toegevoegd aan het ext4-bestandssysteem om de UUID die is opgeslagen in het superblok op te halen of in te stellen.
    • Het F2FS-bestandssysteem biedt een modus voor laag geheugenverbruik, waardoor de werking op apparaten met een kleine hoeveelheid RAM wordt geoptimaliseerd en u het geheugenverbruik kunt verminderen ten koste van verminderde prestaties.
    • Ondersteuning toegevoegd voor NVMe-schijfverificatie.
    • De NFSv4-server implementeert een limiet op het aantal actieve clients, die is ingesteld op 1024 geldige clients voor elke gigabyte RAM in het systeem.
    • De CIFS-clientimplementatie heeft de prestaties in de meerkanaalstransmissiemodus verbeterd.
    • Een nieuwe vlag FAN_MARK_IGNORE is toegevoegd aan het subsysteem voor het volgen van gebeurtenissen in de fanotify FS om specifieke gebeurtenissen te negeren.
    • In de Overlayfs FS wordt, indien gemonteerd bovenop een FS met gebruikers-ID-toewijzing, correcte ondersteuning geboden voor POSIX-compatibele toegangscontrolelijsten.
    • De ublk-blokdriver toegevoegd, die specifieke logica naar de kant van het achtergrondproces in de gebruikersruimte verplaatst en het io_uring-subsysteem gebruikt.
  • Geheugen- en systeemservices
    • Er zijn nieuwe functies toegevoegd aan het DAMON-subsysteem (Data Access MONitor), waardoor niet alleen de procestoegang tot RAM vanuit de gebruikersruimte kan worden bewaakt, maar ook het geheugenbeheer kan worden beïnvloed. Er is met name een nieuwe module “LRU_SORT” voorgesteld, die het hergroeperen van LRU-lijsten (Least Recent Used) mogelijk maakt om de prioriteit van bepaalde geheugenpagina's te verhogen.
    • De mogelijkheid om nieuwe geheugenregio's te creëren is geïmplementeerd met behulp van de mogelijkheden van de CXL-bus (Compute Express Link), die wordt gebruikt om snelle interactie tussen de CPU en geheugenapparaten te organiseren. Met CXL kunt u nieuwe geheugenregio's van externe geheugenapparaten aansluiten en deze gebruiken als extra fysieke adresruimtebronnen om het Random Access Memory (DDR) of het permanente geheugen (PMEM) van het systeem uit te breiden.
    • Prestatieproblemen met AMD Zen-processors opgelost, veroorzaakt door code die 20 jaar geleden werd toegevoegd om een ​​hardwareprobleem in sommige chipsets te omzeilen (er werd een extra WAIT-instructie toegevoegd om de processor te vertragen, zodat de chipset de tijd had om in een inactieve toestand te gaan). De wijziging resulteerde in verminderde prestaties onder werklasten die vaak afwisselen tussen inactieve en drukke statussen. Na het uitschakelen van de oplossing zijn de gemiddelde tbench-testscores bijvoorbeeld gestegen van 32191 MB/s naar 33805 MB/s.
    • Code met heuristieken is uit de taakplanner verwijderd, waardoor de migratie van processen naar de minst belaste CPU's is verzekerd, rekening houdend met de voorspelde winst in energieverbruik. De ontwikkelaars concludeerden dat de heuristiek niet nuttig genoeg was en dat het gemakkelijker was om deze te verwijderen en processen te migreren zonder aanvullende evaluatie wanneer een dergelijke migratie mogelijk zou kunnen resulteren in een lager energieverbruik (bijvoorbeeld wanneer de doel-CPU zich in een lager energieniveau bevindt). Het uitschakelen van heuristieken leidde tot een vermindering van het energieverbruik bij het uitvoeren van intensieve taken. Bij de videodecoderingstest daalde het energieverbruik bijvoorbeeld met 5.6%.
    • De verdeling van taken over CPU-kernen op grote systemen is geoptimaliseerd, wat de prestaties voor bepaalde soorten werkbelasting heeft verbeterd.
    • De io_uring asynchrone I/O-interface biedt een nieuwe vlag, IORING_RECV_MULTISHOT, waarmee u de multi-shot-modus kunt gebruiken met de recv()-systeemaanroep om meerdere leesbewerkingen tegelijk uit te voeren vanaf dezelfde netwerksocket. io_uring ondersteunt ook netwerkoverdracht zonder tussentijdse buffering (zero-copy).
    • De mogelijkheid geïmplementeerd om BPF-programma's die aan de uprobe zijn gekoppeld, in een slaapstand te brengen. BPF voegt ook een nieuwe iterator ksym toe voor het werken met kernelsymbooltabellen.
    • De verouderde “efivars”-interface in sysfs, bedoeld voor toegang tot UEFI-opstartvariabelen, is verwijderd (de virtuele efivarfs-FS wordt nu universeel gebruikt om toegang te krijgen tot EFI-gegevens).
    • Het perf-hulpprogramma heeft nieuwe rapporten voor het analyseren van vergrendelingsconflicten en de tijd die de processor besteedt aan het uitvoeren van kernelcomponenten.
    • De CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3 instelling is verwijderd, waardoor de kernel in de "-O3" optimalisatiemodus kon worden gebouwd. Opgemerkt wordt dat experimenten met optimalisatiemodi kunnen worden uitgevoerd door vlaggen door te geven tijdens de assemblage (“make KCFLAGS=-O3”), en het toevoegen van een instelling aan Kconfig vereist herhaalbare prestatieprofilering, wat aantoont dat het afrollen van de lus wordt gebruikt in de “-O3” -modus geeft een voordeel in vergelijking met het “-O2” optimalisatieniveau.
    • Er is een debugfs-interface toegevoegd om informatie te verkrijgen over de werking van individuele “geheugenverkleiners” (handlers die worden opgeroepen wanneer er onvoldoende geheugen is en kernelgegevensstructuren inpakken om hun geheugengebruik te verminderen).
    • Voor de OpenRISC- en LoongArch-architecturen is ondersteuning voor de PCI-bus geïmplementeerd.
    • Voor de RISC-V-architectuur is de “Zicbom” -extensie geïmplementeerd om apparaten te beheren met DMA die niet cache-coherent is.
  • Virtualisatie en beveiliging
    • Er is een RV-verificatiemechanisme (Runtime Verification) toegevoegd om de juiste werking te verifiëren op zeer betrouwbare systemen die geen fouten garanderen. Verificatie wordt tijdens runtime uitgevoerd door handlers aan traceerpunten te koppelen die de feitelijke voortgang van de uitvoering controleren aan de hand van een vooraf bepaald referentiedeterministisch model van de machine dat het verwachte gedrag van het systeem definieert. Verificatie met het model tijdens runtime wordt gepositioneerd als een lichtere en eenvoudig te implementeren methode voor het bevestigen van de juistheid van de uitvoering op kritieke systemen, als aanvulling op de klassieke methoden voor betrouwbaarheidsverificatie. Een van de voordelen van RV is de mogelijkheid om strikte verificatie te bieden zonder een afzonderlijke implementatie van het hele systeem in een modelleringstaal, evenals de flexibele reactie op onvoorziene gebeurtenissen.
    • Geïntegreerde kernelcomponenten voor het beheer van enclaves op basis van Intel SGX2-technologie (Software Guard eXtensions), waarmee applicaties code kunnen uitvoeren in geïsoleerde gecodeerde geheugengebieden, waartoe de rest van het systeem beperkte toegang heeft. Intel SGX2-technologie wordt ondersteund in Intel Ice Lake- en Gemini Lake-chips en verschilt van Intel SGX1 in aanvullende instructies voor dynamisch geheugenbeheer van enclaves.
    • Voor de x86-architectuur is de mogelijkheid geïmplementeerd om het zaad voor de generator van pseudowillekeurige getallen over te dragen via de bootloader-instellingen.
    • De SafeSetID LSM-module heeft nu de mogelijkheid om wijzigingen te beheren die zijn aangebracht via de setgroups()-aanroep. Met SafeSetID kunnen systeemservices gebruikers veilig beheren zonder rechten te escaleren (CAP_SETUID) en zonder rootrechten te verkrijgen.
    • Ondersteuning toegevoegd voor ARIA-blokcodering.
    • De op BPF gebaseerde beveiligingsbeheermodule biedt de mogelijkheid om handlers aan individuele processen en procesgroepen (cgroups) te koppelen.
    • Er is een mechanisme met een watchdog-implementatie toegevoegd om het vastlopen van gastsystemen te detecteren op basis van het monitoren van vCPU-activiteit.
  • Netwerksubsysteem
    • Handlers voor het genereren en controleren van SYN-cookies zijn toegevoegd aan het BPF-subsysteem. Er is ook een reeks functies (kfunc) toegevoegd voor het openen en wijzigen van de status van verbindingen.
    • De draadloze stack heeft ondersteuning toegevoegd voor het MLO-mechanisme (Multi-Link Operation), gedefinieerd in de WiFi 7-specificatie en waardoor apparaten tegelijkertijd gegevens kunnen ontvangen en verzenden via verschillende frequentiebanden en kanalen, om bijvoorbeeld tegelijkertijd meerdere communicatiekanalen tot stand te brengen tussen een toegangspunt naar een clientapparaat.
    • De prestaties van het in de kernel ingebouwde TLS-protocol zijn verbeterd.
    • Een kernelopdrachtregeloptie "hostname=" toegevoegd, zodat de hostnaam vroeg in het opstartproces kan worden ingesteld, voordat componenten van de gebruikersruimte worden gestart.
  • Uitrusting
    • De i915 (Intel) driver biedt ondersteuning voor Intel Arc (DG2/Alchemist) A750 en A770 discrete videokaarten. Er is een eerste implementatie van ondersteuning voor Intel Ponte Vecchio (Xe-HPC) en Meteor Lake GPU's voorgesteld. Er wordt verder gewerkt aan de ondersteuning van het Intel Raptor Lake-platform.
    • Het amdgpu-stuurprogramma blijft ondersteuning bieden voor de AMD RDNA3 (RX 7000) en CDNA (Instinct) platforms.
    • De Nouveau-driver heeft de ondersteuningscode voor NVIDIA nv50 GPU-beeldschermengines herwerkt.
    • Nieuw logicvc DRM-stuurprogramma toegevoegd voor LogiCVC-schermen.
    • Het v3d-stuurprogramma (voor Broadcom Video Core GPU) ondersteunt Raspberry Pi 4-kaarten.
    • Ondersteuning toegevoegd voor Qualcomm Adreno 619 GPU aan het msm-stuurprogramma.
    • Ondersteuning toegevoegd voor ARM Mali Valhall GPU aan de Panfrost-driver.
    • Initiële ondersteuning toegevoegd voor Qualcomm Snapdragon 8cx Gen3-processors die worden gebruikt in Lenovo ThinkPad X13s-laptops.
    • Geluidsstuurprogramma's toegevoegd voor AMD Raphael (Ryzen 7000), AMD Jadeite, Intel Meteor Lake en Mediatek MT8186-platforms.
    • Ondersteuning toegevoegd voor Intel Habana Gaudi 2 machine learning-versnellers.
    • Ondersteuning toegevoegd voor ARM SoC Allwinner H616, NXP i.MX93, Sunplus SP7021, Nuvoton NPCM8XX, Marvell Prestera 98DX2530, Google Chameleon v3.

Tegelijkertijd vormde de Latin American Free Software Foundation een versie van de volledig vrije kernel 6.0 - Linux-libre 6.0-gnu, ontdaan van elementen van de firmware en stuurprogramma's die niet-vrije componenten of delen van code bevatten, waarvan de reikwijdte beperkt door de fabrikant. De nieuwe release schakelt het gebruik van blobs in de CS35L41 HD-audiodriver en de UCSI-driver voor STM32G0-microcontrollers uit. DTS-bestanden voor Qualcomm- en MediaTek-chips zijn opgeschoond. Het uitschakelen van blobs in het MediaTek MT76-stuurprogramma is herwerkt. Bijgewerkte blob-opschoningscode in AMDGPU-, Adreno-, Tegra VIC-, Netronome NFP- en Habanalabs Gaudi2-stuurprogramma's en subsystemen. Gestopt met het opschonen van het VXGE-stuurprogramma, dat uit de kernel was verwijderd.

Bron: opennet.ru

Voeg een reactie