Linux 5.14 kernel-release

Na twee maanden ontwikkeling presenteerde Linus Torvalds de release van de Linux-kernel 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.

Belangrijkste innovaties:

  • Schijfsubsysteem, I/O en bestandssystemen
    • Er is een nieuwe I/O-prioriteringscontroller geïmplementeerd voor cgroups, rq-qos, die de verwerkingsprioriteit kan controleren 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.
    • Het ext4-bestandssysteem implementeert een nieuwe ioctl-opdracht, EXT4_IOC_CHECKPOINT, die ervoor zorgt dat alle lopende transacties uit het journaal en de bijbehorende buffers naar schijf worden leeggemaakt, en ook het gebied overschrijft dat door het journaal in de opslag wordt gebruikt. De wijziging is voorbereid als onderdeel van een initiatief om informatielekken uit bestandssystemen te voorkomen.
    • Er zijn prestatie-optimalisaties doorgevoerd voor Btrfs: door onnodige registratie 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 is de implementatie van de buffercache opnieuw ontworpen, waarbij is overgeschakeld naar het toewijzen van geheugenpagina's in batchmodus. Verbeterde cache-efficiëntie.
    • F2FS voegt een optie toe om in de alleen-lezen-modus te werken en implementeert een gecomprimeerde blokcachemodus (compress_cache) 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 op basis van een masker selectief uit te schakelen, is een nieuwe mount-optie nocompress voorgesteld.
    • Er is aan het exFAT-stuurprogramma gewerkt om de compatibiliteit met bepaalde digitale camera-opslag te verbeteren.
    • De systeemaanroep quotactl_fd() toegevoegd, 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.
    • De oude stuurprogramma's voor blokapparaten met de IDE-interface zijn uit de kernel verwijderd; ze zijn al lang vervangen door het libata-subsysteem.
    • Het "raw" stuurprogramma is uit de kernel verwijderd en biedt ongebufferde toegang tot blokapparaten via de /dev/raw interface. Deze functionaliteit is al lang geïmplementeerd in toepassingen die de vlag O_DIRECT gebruiken.
  • Geheugen- en systeemservices
    • De taakplanner implementeert een nieuwe planningsmodus, 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 vertrouwde en niet-vertrouwde taken op dezelfde SMT-thread (Hyper Threading) worden uitgevoerd. .
    • Voor cgroup is ondersteuning voor de kill-operatie geïmplementeerd, waarmee u alle processen die aan de groep zijn gekoppeld in één keer kunt beëindigen (verzend 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 een kernelopdrachtregelparameter “split_lock_detect=ratelimit:N” toe, waarmee je een systeembrede limiet kunt definiëren voor de snelheid van vergrendelingsbewerkingen per seconde, waarna elk proces dat de bron is geworden van een split lock kan worden overschreden. wordt gedwongen om gedurende 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, implementeert de mogelijkheid om in de tijd beperkte limieten te definiëren, wat een betere regulering van latentiegevoelige werklasten 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.
    • Initiële infrastructuur toegevoegd voor het maken van BPF-programmaladers, waardoor alleen BPF-programma's kunnen worden geladen die zijn ondertekend met een vertrouwde digitale sleutel.
    • Een nieuwe futex-operatie FUTEX_LOCK_PI2 toegevoegd, die een monotone timer gebruikt om een ​​time-out te berekenen die rekening houdt met de tijd die het systeem in de slaapmodus doorbrengt.
    • Voor de RISC-V-architectuur zijn ondersteuning voor grote geheugenpagina's (Transparent Huge-Pages) en de mogelijkheid om het KFENCE-mechanisme te gebruiken om fouten te detecteren bij het werken met geheugen geïmplementeerd.
    • De systeemaanroep madvise(), die een manier biedt om het geheugenbeheer van een proces te optimaliseren, heeft de vlaggen MADV_POPULATE_READ en MADV_POPULATE_WRITE toegevoegd om een ​​"paginafout" te genereren op alle geheugenpagina's die zijn toegewezen aan lees- of schrijfbewerkingen, zonder daadwerkelijk een lees- of schrijfbewerking uit te voeren (voorinstelling). Het gebruik van vlaggen kan nuttig zijn om vertragingen bij de uitvoering van het programma te verminderen, dankzij de proactieve uitvoering van de “page error”-handler voor alle niet-toegewezen pagina's tegelijk, zonder te wachten op de daadwerkelijke toegang daartoe.
    • Het Kunit Unit Testing-systeem heeft ondersteuning toegevoegd voor het uitvoeren van tests in de QEMU-omgeving.
    • Er zijn nieuwe tracers toegevoegd: "osnoise" om applicatievertragingen te volgen die worden veroorzaakt door interruptafhandeling, en "timerlat" om gedetailleerde informatie weer te geven over vertragingen bij het ontwaken door een timersignaal.
  • Virtualisatie en beveiliging
    • De systeemaanroep memfd_secret() is toegevoegd om een ​​privégeheugengebied te creëren in een geïsoleerde adresruimte, alleen zichtbaar voor het proces dat eigenaar is, niet weerspiegeld voor andere processen, en niet direct toegankelijk voor de kernel.
    • In het seccomp-systeemoproepfiltersysteem is het bij het verplaatsen van blokkeringshandlers naar de gebruikersruimte mogelijk om een ​​enkele 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 het probleem op van het onderbreken van een handler in de gebruikersruimte wanneer een signaal arriveert.
    • Een nieuw mechanisme toegevoegd voor het beheren van resourcelimieten in de gebruikers-ID-naamruimte, dat individuele rlimit-tellers koppelt aan een gebruiker in de "gebruikersnaamruimte". 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, waardoor 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, overflows-buffer, toegang vóór initialisatie en gebruik buiten de huidige context.
    • De Pointer Authentication-faciliteiten van het ARM64-platform kunnen 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.
    • Gebruikersmodus Linux heeft ondersteuning toegevoegd 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 virtio-iommu geparavirtualiseerde apparaat, waardoor IOMMU-verzoeken zoals ATTACH, DETACH, MAP en UNMAP via het virtio-transport kunnen worden verzonden 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 Zombieload-aanvallen die het lekken van informatie via kanalen van derden manipuleren die optreedt tijdens de werking van het TAA-mechanisme (TSX Asynchronous Abort).
  • Netwerksubsysteem
    • 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 die zijn gekoppeld aan verschillende IP-adressen. De nieuwe release voegt een mechanisme toe voor het instellen van uw eigen verkeers-hashing-beleid voor IPv4 en IPv6 (multipath-hash-beleid), waardoor het mogelijk wordt om vanuit de gebruikersruimte te bepalen welke velden in pakketten, inclusief ingekapselde pakketten, zullen worden gebruikt bij het berekenen van de hash die de waarde bepaalt. keuze van het pad voor het pakket.
    • Ondersteuning voor SOCK_SEQPACKET sockets (geordende en betrouwbare overdracht van datagrammen) is toegevoegd aan het virtuele virtuele transport.
    • 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 . De nieuwe versie voegt tools toe 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 opstarten van services).
  • Uitrusting
    • Het amdgpu-stuurprogramma biedt 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 de 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 ASPM-ondersteuning (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 HMM kunt u met name een gedeelde adresruimte tussen de GPU en CPU organiseren, waarin de GPU toegang heeft tot het hoofdgeheugen van het proces.
    • Initiële ondersteuning toegevoegd voor AMD Smart Shift-technologie, die de CPU- en GPU-energie-instellingen op laptops met een AMD-chipset en grafische kaart dynamisch verandert om de prestaties bij gaming, videobewerking en 3D-rendering te verbeteren.
    • Het i915-stuurprogramma voor Intel grafische kaarten biedt ondersteuning voor Intel Alderlake P-chips.
    • Drm/hyperv-stuurprogramma toegevoegd voor Hyper-V virtuele grafische adapter.
    • Ondersteuning toegevoegd voor de Raspberry Pi 400 alles-in-één computer.
    • Dell-wmi-privacy-stuurprogramma toegevoegd ter ondersteuning van de hardwarecamera- en microfoonschakelaars die op Dell-laptops worden meegeleverd.
    • Voor Lenovo-laptops is een WMI-interface toegevoegd voor het wijzigen van BIOS-instellingen via sysfs /sys/class/firmware-attributes/.
    • Uitgebreide ondersteuning voor apparaten met USB4-interface.
    • Ondersteuning toegevoegd voor AmLogic SM1 TOACODEC, Intel AlderLake-M, NXP i.MX8, NXP TFA1, TDF9897, Rockchip RK817, Qualcomm Quinary MI2 en Texas Instruments TAS2505 geluidskaarten en codecs. Verbeterde audio-ondersteuning op HP- en ASUS-laptops. Patches toegevoegd om vertragingen te verminderen voordat audio begint te spelen op USB-apparaten.

Bron: opennet.ru

Voeg een reactie