Na twee maanden ontwikkeling heeft Linus Torvalds de release van de Linux-kernel 6.0 gepresenteerd. De aanzienlijke wijziging van het versienummer is om esthetische redenen gedaan en is een formele stap die de ongemakken van het accumuleren van een groot aantal releases in de serie verhelpt (Linus grapte dat de reden voor de wijziging van het versienummer eerder is dat hij geen vingers meer over heeft om de versienummers te tellen). Tot de meest opvallende wijzigingen behoren: ondersteuning voor asynchrone buffer writing in XFS, de ublk-blokdriver, optimalisatie van de taakplanner, een mechanisme voor het verifiëren van de correctheid van de kernel en ondersteuning voor de ARIA-blokcipher.
Belangrijkste vernieuwingen in kernel 6.0:
- Opslagsubsystemen, invoer/uitvoer en bestandssystemen
- De XFS-bestandssysteem heeft ondersteuning voor asynchrone buffer writing met behulp van het io_uring-mechanisme toegevoegd. Prestatie-testen uitgevoerd met behulp van de fio-tool (1 thread, blokgrootte van 4kB, 600 seconden, sequentiële schrijf) tonen een toename van het aantal input/output-bewerkingen per seconde (IOPS) van 77k naar 209k, een toename van de dataverbindingsnelheid van 314MB/s naar 854MB/s, en een daling van de vertraging van 9600ns naar 120ns (80 keer).
- In het Btrfs-bestandssysteem is de tweede versie van het protocol voor de 'send'-opdracht geïmplementeerd, waarmee ondersteuning voor extra metadata, verzending van gegevens in grotere blokken (meer dan 64K) en het overdragen van extenten in gecomprimeerde vorm wordt gerealiseerd. De prestatie van directe leesoperaties is aanzienlijk verbeterd (tot 3 keer) door gelijktijdig tot 256 sectoren te lezen. Conflicten bij blokkeringen zijn verminderd en de controle van metadata is versneld door de gereserveerde metadata voor uitgestelde elementen te verkorten.
- In het ext4-bestandssysteem zijn nieuwe ioctl-bewerkingen toegevoegd: EXT4_IOC_GETFSUUID en EXT4_IC_SETFSUUID voor het ophalen of instellen van de UUID-identificator die in de superblock is opgeslagen.
- In het F2FS-bestandssysteem is er een modus met een laag geheugenverbruik voorgesteld die de prestaties optimaliseert op apparaten met weinig RAM en het geheugenverbruik vermindert ten koste van de prestaties.
- Ondersteuning voor de authenticatie van NVMe-opslagapparaten is toegevoegd.
- In de server NFSv4 heeft een limiet ingevoerd voor het aantal actieve clients, dat is ingesteld op 1024 toegestane clients per gigabyte RAM in het systeem.
- De prestaties in de modus van meervoudige overdracht van de CIFS-client zijn verbeterd.
- In het subsysteem voor gebeurtenistracking in het FS fanotify is een nieuwe vlag FAN_MARK_IGNORE toegevoegd om specifieke gebeurtenissen te negeren.
- In het FS Overlayfs is bij het mounten bovenop een FS met mapper van gebruikersidentificatie correcte ondersteuning voor POSIX-compatibele toegangscontroleslijsten verzekerd.
- Er is een blockdriver ublk toegevoegd, die specifieke logica naar de achtergrondprocessen in de gebruikersruimte verplaatst en gebruikmaakt van het io_uring-subsysteem.
- Geheugen en systeemdiensten
- In het DAMON-subsysteem (Data Access MONitor) zijn nieuwe mogelijkheden toegevoegd, waarmee niet alleen de toegang van processen tot het geheugen in de gebruikersruimte kan worden gevolgd, maar ook invloed kan worden uitgeoefend op het geheugengebruik. In het bijzonder is er een nieuwe module ‘LRU_SORT’ voorgesteld, die hergroepering van LRU (Least Recently Used)-lijsten mogelijk maakt om bepaalde geheugensegmenten hoger te prioriteren.
- De mogelijkheid is geïmplementeerd om nieuwe geheugenregio's te creëren met behulp van de CXL (Compute Express Link)-bus, die wordt gebruikt voor de organisatie van hoge snelheid interactie tussen de CPU en geheugentoestellen. CXL staat het aansluiten van nieuwe geheugenregio's toe, aangeboden door externe geheugentoestellen, en gebruikt deze als extra middelen van de fysieke adresruimte om de systeemberoepbaarheid (DDR) of non-volatile memory (PMEM) uit te breiden.
- Problemen met de prestaties van systemen op AMD Zen-processors zijn opgelost die werden veroorzaakt door code die 20 jaar geleden is toegevoegd om een hardwareprobleem in sommige chipsets te omzeilen (er werd een extra WAIT-instructie toegevoegd, waardoor de processor werd vertraagd zodat de chipset de idle-status kon bereiken). Deze wijziging leidde tot een vermindering van de prestaties bij workloads waarbij vaak tussen idle- en druktoestanden werd gewisseld. Bijvoorbeeld, na het uitschakelen van de omweg stegen de gemiddelde testresultaten van tbench van 32191 MB/s naar 33805 MB/s.
- De heuristische code die verantwoordelijk was voor het migreren van processen naar de minst belaste CPU's op basis van de verwachte winst in energieverbruik, is verwijderd uit de taakplanner. Ontwikkelaars zijn tot de conclusie gekomen dat de heuristiek niet de gewenste voordelen oplevert en dat het eenvoudiger is om processen te verplaatsen zonder extra beoordelingen telkens wanneer zo'n verhuizing potentieel kan leiden tot een vermindering van het energieverbruik (bijvoorbeeld wanneer de doel-CPU zich op een niveau met een lager energieverbruik bevindt). Het uitschakelen van de heuristiek heeft geleid tot een verlaging van het energieverbruik bij intensieve taken; bijvoorbeeld in de videodecoderingstest daalde het energieverbruik met 5,6%.
- Er is een optimalisatie doorgevoerd voor de taakverdeling over CPU-cores in grote systemen, waardoor de prestaties bij bepaalde soorten belasting zijn verhoogd.
- In de interface voor asynchrone invoer/uitvoer io_uring is een nieuwe vlag IORING_RECV_MULTISHOT voorgesteld, die het mogelijk maakt om de 'multi-shot' modus met de systeemaanroep recv() te gebruiken om meerdere leesoperaties tegelijk van één netwerk-socket uit te voeren. In io_uring is ook ondersteuning voor netwerktransmissie zonder tussentijdse buffering (zero-copy) gerealiseerd.
- De mogelijkheid is geïmplementeerd om BPF-programma's, die aan uprobe zijn gekoppeld, in de slaapstand te zetten. In BPF is ook een nieuwe iterator ksym toegevoegd voor het werken met kernelsymbooltabellen.
- De verouderde interface 'efivars' in sysfs, bedoeld voor toegang tot UEFI-opstartvariabelen (voor toegang tot EFI-gegevens wordt nu overal de virtuele FS efivarfs gebruikt), is verwijderd.
- In de perf-tool zijn nieuwe rapporten geïmplementeerd voor het analyseren van lockconflicten en de tijd die een processor besteedt aan het uitvoeren van kernelcomponenten.
- De instelling CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3, die het mogelijk maakte om het kernel in de optimalisatiemodus '-O3' te compileren, is verwijderd. Er wordt opgemerkt dat experimenten met optimalisatiemodi kunnen worden uitgevoerd door vlagen door te geven tijdens de compilatie ('make KCFLAGS=-O3'), en om de instelling aan Kconfig toe te voegen, moet herhaalbaar prestatieprofilering worden gewaarborgd, die laat zien dat de cycli die in de '-O3' modus worden uitgezet een winst opleveren in vergelijking met het optimalisatieniveau '-O2'.
- Een debugfs-interface is toegevoegd om informatie te verkrijgen over de werking van individuele 'memory shrinkers' (handlers die worden aangeroepen bij geheugentekorten en die de datastructuren van de kernel comprimeren om geheugenverbruik te verminderen).
- Voor de OpenRISC- en LoongArch-architecturen is ondersteuning voor de PCI-bus geïmplementeerd.
- Voor de RISC-V-architectuur is de 'Zicbom'-uitbreiding geïmplementeerd voor het beheer van apparaten met DMA die niet met de cache zijn afgestemd (non-cache-coherent).
- Virtualisatie en beveiliging
- Een mechanisme voor runtime-verificatie (RV) is toegevoegd om de correctheid van de werking in hoogbetrouwbare systemen te controleren, die gegarandeerd vrij van storingen zijn. De controle vindt plaats tijdens de uitvoering door handlers aan te hechten aan traceerpunten, die de feitelijke uitvoering vergelijken met een vooraf gedefinieerd model van een deterministische automaat dat het verwachte gedrag van het systeem definieert. De verificatie met het model tijdens de uitvoering wordt gepositioneerd als een lichtere en eenvoudigere implementatie in de praktijk voor het bevestigen van de correctheid van de uitvoering in kritische systemen, aanvullend op klassieke methoden voor betrouwbaarheid. Voordelen van RV zijn onder andere de mogelijkheid om strikte verificatie te bieden zonder een aparte implementatie van het gehele systeem in een modelleertaal, evenals flexibele reacties op onvoorziene gebeurtenissen.
- Kerncomponenten zijn geïntegreerd voor het beheer van enclaves op basis van Intel SGX2 (Software Guard eXtensions) technologie, die applicaties in staat stelt om code uit te voeren in geïsoleerde, versleutelde geheugengebieden, waar de toegang van de rest van het systeem tot beperkt is. De Intel SGX2-technologie wordt ondersteund op Intel Ice Lake- en Gemini Lake-chips en verschilt van Intel SGX1 door extra instructies voor dynamisch beheer van enclave-geheugen.
- Voor de x86-architectuur is de mogelijkheid geïmplementeerd om zaadwaarden voor de pseudowillekeurige getallengenerator door te geven via de bootloader-instellingen.
- De LSM-module SafeSetID heeft de mogelijkheid toegevoegd om wijzigingen te beheren die worden aangebracht via de aanroep setgroups(). SafeSetID stelt systeemdiensten in staat om veilig gebruikers te beheren zonder escalatie van privileges (CAP_SETUID) en zonder de rechten van de root-gebruiker.
- Ondersteuning voor de blokversleuteling ARIA is toegevoegd.
- In de BPF-gebaseerde beveiligingsmodule is het mogelijk geworden om handlers aan te hechten aan individuele processen en groepen processen (cgroup).
- Een mechanisme is toegevoegd met een implementatie van watchdog voor het bepalen van vastlopers van gastsystemen op basis van het monitoren van de activiteit van vCPU.
- Netwerk subsysteem
- In het BPF-subsysteem zijn handlers toegevoegd voor het genereren en controleren van SYN-cookies. Ook is een set functies (kfunc) toegevoegd voor toegang tot en wijziging van de status van verbindingen.
- In de draadloze stack is ondersteuning toegevoegd voor het MLO-mechanisme (Multi-Link Operation), gedefinieerd in de WiFi 7-specificatie, waarmee apparaten gelijktijdig gegevens kunnen ontvangen en verzenden via verschillende frequentiebanden en kanalen, bijvoorbeeld voor het gelijktijdig opzetten van meerdere communicatielinks tussen een toegangspunt en het klantapparaat.
- De prestaties van de in de kernel opgenomen implementatie van het TLS-protocol zijn verbeterd.
- Een kernel-opdrachtregelparameter 'hostname=' is toegevoegd, waarmee de hostnaam in een vroeg stadium van het opstarten kan worden ingesteld, voordat de gebruikersruimtec omgevingen worden gestart.
- Apparatuur
- In de i915-driver (Intel) is ondersteuning toegevoegd voor de discrete Intel Arc (DG2/Alchemist) GPU's A750 en A770. Een beginimplementatie van ondersteuning voor de Intel Ponte Vecchio (Xe-HPC) GPU en Meteor Lake is voorgesteld. De ondersteuning voor het Intel Raptor Lake-platform is voortgezet.
- In de amdgpu-driver is de ondersteuning voor de AMD RDNA3 (RX 7000) en CDNA (Instinct) platforms voortgezet.
- In de Nouveau-driver is de ondersteuning voor de display-engines van de NVIDIA nv50 GPU opnieuw geschreven.
- Een nieuwe DRM-driver logicvc voor LogiCVC-schermen is toegevoegd.
- In de v3d-driver (voor de GPU Broadcom Video Core) is ondersteuning gerealiseerd voor Raspberry Pi 4-borden.
- In de msm-driver is ondersteuning toegevoegd voor de Qualcomm Adreno 619 GPU.
- In de Panfrost-driver is ondersteuning toegevoegd voor de ARM Mali Valhall GPU.
- Beginondersteuning voor Qualcomm Snapdragon 8cx Gen3-processoren, die worden gebruikt in Lenovo ThinkPad X13s-laptops, is toegevoegd.
- Geluid drivers zijn toegevoegd voor de AMD Raphael (Ryzen 7000), AMD Jadeite, Intel Meteor Lake en Mediatek MT8186-platforms.
- Ondersteuning is toegevoegd voor Intel Habana Gaudi 2 machine learning acceleraors.
- Ondersteuning is toegevoegd voor ARM SoC Allwinner H616, NXP i.MX93, Sunplus SP7021, Nuvoton NPCM8XX, Marvell Prestera 98DX2530, Google Chameleon v3.
Tegelijkertijd heeft de Latijns-Amerikaanse Stichting voor Vrije Software een volledig vrij kernel 6.0 — Linux-libre 6.0-gnu ontwikkeld, vrij van firmware- en stuurprogramma-elementen die niet-vrije componenten of codefragmenten bevatten, welke door de fabrikant zijn beperkt. In deze nieuwe release is het gebruik van blobs in de driver CS35L41 HD-audio en de driver met het UCSI-interface voor de STM32G0-microcontrollers uitgeschakeld. DTS-bestanden voor Qualcomm- en MediaTek-chips zijn opgeschoond. Het uitschakelen van blobs in de MediaTek MT76-driver is opnieuw ontworpen. De code voor het opschonen van blobs in de drivers en subsystemen van AMDGPU, Adreno, Tegra VIC, Netronome NFP en Habanalabs Gaudi2 is geüpdatet. De opschoning van de VXGE-driver, die uit de kernel is verwijderd, is stopgezet.
Bron: opennet.ru
