Linux-kernel 5.14

Linux-kernel 5.14

Na twee maanden ontwikkeling, Linus Torvalds ingediend kernel-release Linux 5.14. Een van de meest opvallende veranderingen: nieuwe systeemaanroepen quotactl_fd() en memfd_secret(), verwijdering van ide- en raw-stuurprogramma's, nieuwe I/O-prioriteitcontroller voor cgroup, SCHED_CORE taakplanningsmodus, infrastructuur voor het maken van geverifieerde BPF-programmaladers.

De nieuwe versie bevat 15883 reparaties van 2002 ontwikkelaars, de patchgrootte is 69 MB (de wijzigingen betroffen 12580 bestanden, 861501 regels code zijn toegevoegd en 321654 regels zijn verwijderd). Ongeveer 47% van alle wijzigingen die in 5.14 zijn geïntroduceerd, hebben betrekking op apparaatstuurprogramma's, ongeveer 14% van de wijzigingen heeft betrekking op het updaten van code die specifiek is voor hardware-architecturen, 13% heeft betrekking op de netwerkstack, 3% heeft betrekking op bestandssystemen en 3% zijn gerelateerd aan interne kernelsubsystemen.

De belangrijkste innovaties:

  • schijfsubsysteem, invoer/uitvoer en bestandssystemen:
    • voor cgroep geïmplementeerd nieuwe I/O-prioriteitcontroller - rq-qos, die de prioriteit kan regelen van het verwerken van verzoeken om apparaten te blokkeren die zijn gegenereerd door leden van elke cgroup. Er is nieuwe ondersteuning voor prioriteitscontrollers toegevoegd aan de mq-deadline I/O-planner;
    • op ext4-bestandssysteem geïmplementeerd nieuwe ioctl-opdracht EXT4_IOC_CHECKPOINT, die alle lopende transacties van het logboek en de bijbehorende buffers naar schijf dwingt, en ook het gebied overschrijft dat wordt gebruikt door de inlogopslag. De wijziging is voorbereid als onderdeel van een initiatief om informatielekken uit bestandssystemen te voorkomen;
    • in Btrfs ingevoerde Prestatie-optimalisaties: Door het onnodig loggen van uitgebreide attributen tijdens fsync-uitvoering te elimineren, zijn de prestaties van intensieve bewerkingen met uitgebreide attributen met maximaal 17% toegenomen. Bovendien wordt bij het uitvoeren van trimbewerkingen die geen invloed hebben op gebieden de volledige synchronisatie uitgeschakeld, waardoor de bewerkingstijd met 12% wordt verkort. Er is een instelling toegevoegd aan sysfs om de I/O-bandbreedte te beperken bij het controleren van de FS. Ioctl-aanroepen toegevoegd om het wijzigen van de grootte en het verwijderen van apparaatbewerkingen te annuleren;
    • in XFS herdaan implementatie van een buffercache, die wordt overgedragen naar de toewijzing van geheugenpagina's in batchmodus. Verbeterde cache-efficiëntie;
    • F2FS heeft een optie toegevoegd om in de alleen-lezen-modus te werken en een gecomprimeerde blokcachemodus (compress_cache) geïmplementeerd om de willekeurige leesprestaties te verbeteren. Er is ondersteuning geïmplementeerd voor het comprimeren van bestanden die aan het geheugen zijn toegewezen met behulp van de mmap()-bewerking. Om bestandscompressie door masker selectief uit te schakelen, is een nieuwe mount-optie nocompress voorgesteld;
    • er is werk gedaan in het exFAT-stuurprogramma om de compatibiliteit met de opslag van sommige digitale camera's te verbeteren;
    • systeemoproep toegevoegd quotactl_fd(), waarmee u quota's niet via een speciaal apparaatbestand kunt beheren, maar door een bestandsdescriptor op te geven die is gekoppeld aan het bestandssysteem waarvoor de quota worden toegepast;
    • Oude stuurprogramma's voor blokapparaten met de IDE-interface zijn uit de kernel verwijderd; ze zijn al lang vervangen door het libata-subsysteem. Ondersteuning voor oude apparaten is volledig behouden gebleven, de veranderingen hebben alleen betrekking op de mogelijkheid om oude stuurprogramma's te gebruiken, waarbij de schijven /dev/hd* werden genoemd, en niet /dev/sd*;
    • Het “raw” stuurprogramma is uit de kernel verwijderd en biedt ongebufferde toegang om apparaten te blokkeren via de /dev/raw interface. Deze functionaliteit is al lang geïmplementeerd in toepassingen die de vlag O_DIRECT gebruiken;
  • geheugen- en systeemservices:
    • er is een nieuwe planningsmodus geïmplementeerd in de taakplanner SCHED_CORE, waarmee u kunt bepalen welke processen samen op dezelfde CPU-kern kunnen worden uitgevoerd. Aan elk proces kan een cookie-ID worden toegewezen die de reikwijdte van het vertrouwen tussen processen definieert (bijvoorbeeld die tot dezelfde gebruiker of container behoren). Bij het organiseren van code-uitvoering kan de planner ervoor zorgen dat één CPU-kern alleen wordt gedeeld tussen processen die aan dezelfde eigenaar zijn gekoppeld, wat kan worden gebruikt om sommige Spectre-aanvallen te blokkeren door te voorkomen dat betrouwbare en onbetrouwbare taken op dezelfde SMT-thread (Hyper Threading) worden uitgevoerd. ;
    • voor het cgroup-mechanisme is ondersteuning voor de kill-operatie geïmplementeerd, waarmee u alle processen die aan de groep zijn gekoppeld in één keer kunt beëindigen (stuur SIGKILL) door “1” naar het virtuele bestand cgroup.kill te schrijven;
    • uitgebreide mogelijkheden met betrekking tot het reageren op de detectie van gesplitste vergrendelingen ("split locks") die optreden bij toegang tot 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 leidt tot een aanzienlijke prestatievermindering, dus voorheen was het mogelijk om de applicatie die de blokkering veroorzaakte met geweld te beëindigen. De nieuwe release voegt de kernelopdrachtregelparameter “split_lock_detect=ratelimit:N” toe, waarmee u een systeembrede limiet kunt definiëren voor de snelheid van vergrendelingsbewerkingen per seconde, waarna elk proces dat de bron van een split lock werd, zal worden overschreden. gedwongen worden om 20 ms te stoppen in plaats van te beëindigen;
    • De cgroup bandbreedtecontroller CFS (CFS bandbreedtecontroller), die bepaalt hoeveel processortijd aan elke cgroup kan worden toegewezen, heeft de mogelijkheid om limieten te definiëren die worden beperkt door een bepaalde actieduur, wat een betere regeling van latentiegevoelige belastingen mogelijk maakt. Als u bijvoorbeeld cpu.cfs_quota_us instelt op 50000 en cpu.cfs_period_us op 100000, kan een groep processen elke 100 ms 50 ms CPU-tijd verspillen;
    • toegevoegd initiële infrastructuur voor het creëren van BPF-programmaladers, waardoor verder alleen BPF-programma's kunnen worden gedownload die zijn ondertekend met een betrouwbare digitale sleutel;
    • een nieuwe futex-operatie FUTEX_LOCK_PI2 toegevoegd, die een monotone timer gebruikt om de time-out te berekenen, waarbij rekening wordt gehouden met de tijd die het systeem in de slaapmodus doorbrengt;
    • voor de RISC-V-architectuur, ondersteuning voor grote geheugenpagina's (Transparent Huge-Pages) en de mogelijkheid om de KHEIN om fouten te identificeren bij het werken met geheugen;
    • in de madvise() systeemaanroep, die een manier biedt om het procesgeheugenbeheer te optimaliseren, toegevoegd MADV_POPULATE_READ en MADV_POPULATE_WRITE vlaggen om een ​​"paginafout" te genereren op alle geheugenpagina's die zijn toegewezen voor lees- of schrijfbewerkingen, zonder daadwerkelijk een lees- of schrijfbewerking uit te voeren (prefault). Het gebruik van vlaggen kan nuttig zijn om vertragingen bij de uitvoering van het programma te verminderen, dankzij de proactieve uitvoering van de “paginafout”-handler voor alle niet-toegewezen pagina's tegelijk, zonder te wachten op de daadwerkelijke toegang daartoe;
    • in een unit-testsysteem kunit toegevoegd ondersteuning voor het uitvoeren van tests in de QEMU-omgeving;
    • nieuwe tracers toegevoegd: "osgeluid" om applicatievertragingen bij te houden die worden veroorzaakt door interruptafhandeling, en " timerlat " om gedetailleerde informatie weer te geven over vertragingen bij het ontwaken na een timersignaal;
  • virtualisatie en beveiliging:
    • toegevoegd systeem oproep memfd_geheim(), waarmee u een privégeheugengebied in een geïsoleerde adresruimte kunt creëren, alleen zichtbaar voor het eigenaarproces, niet weerspiegeld in andere processen en niet direct toegankelijk voor de kernel;
    • In het seccomp-systeemoproepfiltersysteem is het bij het verplaatsen van vergrendelingshandlers naar de gebruikersruimte mogelijk om één atomaire bewerking te gebruiken om een ​​bestandsdescriptor voor een geïsoleerde taak te maken en deze terug te sturen bij het verwerken van een systeemaanroep. De voorgestelde operatie lost op probleem met onderbreking van de handler in de gebruikersruimte bij binnenkomst van een signaal;
    • toegevoegd nieuw mechanisme om de resourcebeperking in de gebruikers-ID-naamruimte te beheren, die individuele rlimit-tellers aan een gebruiker in de "gebruikersnaamruimte" bindt. De wijziging lost het probleem op met het gebruik van gemeenschappelijke resourcetellers wanneer één gebruiker processen in verschillende containers uitvoert;
    • De KVM-hypervisor voor ARM64-systemen heeft de mogelijkheid toegevoegd om de MTE-extensie (MemTag, Memory Tagging Extension) in gastsystemen te gebruiken, waarmee u tags kunt binden aan elke geheugentoewijzingsbewerking en het controleren van het juiste gebruik van pointers kunt organiseren om de exploitatie van kwetsbaarheden veroorzaakt door toegang tot reeds vrijgemaakte geheugenblokken, overloopbuffers, toegang vóór initialisatie en gebruik buiten de huidige context;
    • Pointer-authenticatie van het ARM64-platform kan nu afzonderlijk worden geconfigureerd voor kernel- en gebruikersruimte. Met deze technologie kunt u gespecialiseerde ARM64-instructies gebruiken om retouradressen te verifiëren met behulp van digitale handtekeningen die zijn opgeslagen in de ongebruikte bovenste bits van de aanwijzer zelf;
    • in gebruikersmodus Linux toegevoegd ondersteuning voor het gebruik van stuurprogramma's voor PCI-apparaten met een virtuele PCI-bus, geïmplementeerd door het PCI-over-virtio-stuurprogramma;
    • voor x86-systemen is ondersteuning toegevoegd voor het geparavirtualiseerde virtio-iommu-apparaat, waarmee je IOMMU-verzoeken, zoals ATTACH, DETACH, MAP en UNMAP, via het virtio-transport kunt verzenden zonder geheugenpaginatabellen te emuleren;
    • Voor Intel CPU's, van de Skylake-familie tot Coffee Lake, is het gebruik van Intel TSX (Transactional Synchronization Extensions), die tools bieden voor het verbeteren van de prestaties van multi-threaded applicaties door onnodige synchronisatiebewerkingen dynamisch te elimineren, standaard uitgeschakeld. Extensies zijn uitgeschakeld vanwege de mogelijkheid van aanvallen Zombieload, het manipuleren van het lekken van informatie via kanalen van derden die optreedt tijdens de werking van het mechanisme voor asynchrone onderbreking van operaties (TAA, TSX Asynchronous Abort);
  • netwerksubsysteem:
    • voortdurende integratie in de kern van MPTCP (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 geassocieerd met verschillende IP-adressen. In het nieuwe nummer toegevoegd een mechanisme voor het instellen van uw eigen verkeershashingbeleid voor IPv4 en IPv6 (multipath hash policy), waardoor het mogelijk wordt vanuit de gebruikersruimte te bepalen welke velden in pakketten, inclusief ingekapselde pakketten, zullen worden gebruikt bij het berekenen van de hash die de padkeuze bepaalt voor het pakket;
    • socket-ondersteuning is toegevoegd aan de virtuele transportvirtio SOCK_SEQPACKET (ordelijke en betrouwbare verzending van datagrammen);
    • De mogelijkheden van het SO_REUSEPORT-socketmechanisme zijn uitgebreid, waardoor meerdere luister-sockets tegelijk verbinding kunnen maken met één poort om verbindingen te ontvangen met de distributie van inkomende verzoeken gelijktijdig over alle sockets die zijn verbonden via SO_REUSEPORT, wat het creëren van multi-threaded servertoepassingen vereenvoudigt . In de nieuwe versie toegevoegd middelen voor het overdragen van de controle naar een andere socket in geval van een storing bij het verwerken van een verzoek door de initieel geselecteerde socket (lost het probleem op met het verlies van individuele verbindingen bij het opnieuw starten van services);
  • apparatuur:
    • in het amdgpu-stuurprogramma geïmplementeerd ondersteuning voor de nieuwe AMD Radeon RX 6000-serie GPU's, met de codenaam "Beige Goby" (Navi 24) en "Yellow Carp", evenals verbeterde ondersteuning voor Aldebaran GPU (gfx90a) en Van Gogh APU. De mogelijkheid toegevoegd om gelijktijdig met meerdere eDP-panelen te werken. Voor APU Renoir is ondersteuning geïmplementeerd voor het werken met gecodeerde buffers in videogeheugen (TMZ, Trusted Memory Zone). Ondersteuning toegevoegd voor hot-unplug grafische kaarten. Voor Radeon RX 6000 (Navi 2x) GPU's en oudere AMD GPU's is ondersteuning voor het ASPM-energiebesparende mechanisme (Active State Power Management) standaard ingeschakeld, wat voorheen alleen was ingeschakeld voor Navi 1x, Vega en Polaris GPU's;
    • voor AMD-chips is ondersteuning voor gedeeld virtueel geheugen (SVM, gedeeld virtueel geheugen) toegevoegd op basis van het HMM-subsysteem (Heterogeneous Memory Management), dat het gebruik van apparaten met hun eigen geheugenbeheereenheden (MMU, geheugenbeheereenheid) mogelijk maakt. die toegang heeft tot het hoofdgeheugen. Met behulp van HMM kunt u een gedeelde adresruimte organiseren tussen de GPU en CPU, waarin de GPU toegang heeft tot het hoofdgeheugen van het proces;
    • initiële technologische ondersteuning toegevoegd AMD Smartshift, dat de energieverbruiksparameters van de CPU en GPU op laptops met een chipset en een AMD grafische kaart dynamisch verandert om de prestaties te verbeteren tijdens het gamen, videobewerking en 3D-rendering;
    • in het i915-stuurprogramma voor Intel-videokaarten inbegrepen ondersteuning voor Intel Alderlake P-chips;
    • toegevoegd drm/hyperv-stuurprogramma voor de Hyper-V virtuele grafische adapter;
    • toegevoegd simpledrm grafische driver die gebruikmaakt van de EFI-GOP- of VESA-framebuffer die wordt geleverd door de UEFI-firmware of BIOS voor uitvoer. Het belangrijkste doel van het stuurprogramma is het bieden van grafische uitvoermogelijkheden tijdens de beginfase van het opstarten, voordat een volledig DRM-stuurprogramma kan worden gebruikt. De driver kan ook worden gebruikt als tijdelijke oplossing voor apparatuur die nog niet over native DRM-drivers beschikt;
    • toegevoegd alles-in-één computerondersteuning Framboos Pi 400;
    • Dell-wmi-privacy-driver toegevoegd ter ondersteuning van de camera- en microfoonhardwareschakelaars die op Dell-laptops worden meegeleverd;
    • voor Lenovo-laptops toegevoegd WMI-interface voor het wijzigen van BIOS-parameters via sysfs /sys/class/firmware-attributes/;
    • uitgebreid ondersteuning voor apparaten met USB4-interface;
    • toegevoegd ondersteuning voor geluidskaarten en codecs AmLogic SM1 TOACODEC, Intel AlderLake-M, NXP i.MX8, NXP TFA1, TDF9897, Rockchip RK817, Qualcomm Quinary MI2 en Texas Instruments TAS2505. Verbeterde audio-ondersteuning op HP- en ASUS-laptops. Toegevoegd patches om vertragingen te verminderen voordat audio begint te spelen op apparaten met een USB-interface.

Bron – opennet.ru.

Bron: linux.org.ru