Linux kernel 5.14

Linux kernel 5.14

Na twee maanden ontwikkeling heeft Linus Torvalds gepresenteerd kernel release Linux 5.14. Among the most notable changes are: new system calls quotactl_fd() and memfd_secret(), removal of ide and raw drivers, new input/output priority controller for cgroup, SCHED_CORE scheduling mode, infrastructure for creating verified BPF program loaders.

The new version includes 15,883 fixes from 2,002 developers, with the patch size being 69 MB (the changes affected 12,580 files, added 861,501 lines of code, and removed 321,654 lines). About 47% of all changes presented in 5.14 are related to device drivers, roughly 14% concerns updates specific to hardware architectures, 13% is related to the networking stack, 3% to file systems, and 3% to the kernel's internal subsystems.

Belangrijkste vernieuwingen:

  • disk subsystem, input/output and file systems:
    • for cgroup is geïmplementeerd new input/output prioritization controller — rq-qos, which can manage the priority of processing requests to block devices generated by each cgroup member. Support for the new priority controller has been added to the mq-deadline I/O scheduler;
    • in the ext4 file system geïmplementeerd new ioctl command EXT4_IOC_CHECKPOINT, which forces all pending transactions from the log and their associated buffers to be flushed to disk, and rewrites the journal area in storage. This change has been prepared as part of the initiative to prevent information leaks from file systems;
    • in Btrfs correcties en kleine verbeteringen aangebracht. performance optimizations: by eliminating unnecessary logging of extended attributes during fsync, performance for intensive operations with extended attributes has increased by up to 17%. Additionally, full synchronization during truncation operations that do not affect extents has been disabled, reducing operation time by 12%. A setting has been added in sysfs to limit I/O throughput during filesystem checks. ioctl calls have been added to cancel resizing operations and device removal;
    • in XFS reworked the implementation of the buffer cache, which has been switched to page allocation in batch mode. Cache efficiency has been improved;
    • In F2FS is added an option to operate in read-only mode, and a caching mode for compressed blocks (compress_cache) has been implemented to enhance the performance of random reading. Support for compressing files mapped in memory using the mmap() operation has been realized. A new mount option, nocompress, has been proposed to selectively disable file compression by mask;
    • In the exFAT driver, work has been done to improve compatibility with storage from certain digital cameras;
    • A system call has been added, quotactl_fd(),, which allows managing quotas not through a special device file, but by specifying a file descriptor associated with the filesystem for which the quota applies;
    • Old drivers for block devices with an IDE interface have been removed from the kernel, which have long since been replaced by the libata subsystem. Support for old devices remains fully intact; changes only affect the ability to use old drivers, in which the drives were named /dev/hd*, not /dev/sd*;
    • The 'raw' driver, providing unbuffered access to block devices through the /dev/raw interface, has been removed from the kernel. This functionality has long been implemented in applications using the O_DIRECT flag;
  • Memory and system services:
    • In the task scheduler, a new scheduling mode has been implemented, SCHED_CORE,, allowing control over which processes can run together on the same CPU core. Each process can be assigned a cookie identifier, defining the trust domain between processes (for example, belonging to the same user or container). When organizing code execution, the scheduler can ensure shared use of a single CPU core only for processes associated with one owner, which can be used to block certain Spectre-class attacks by preventing the execution of both trusted and untrusted tasks in the same SMT (Hyper Threading) thread;
    • For the cgroup mechanism, support for the kill operation has been implemented, allowing all processes attached to the group to be terminated at once (sending SIGKILL) by writing "1" to the virtual file cgroup.kill;
    • De mogelijkheden voor het reageren op de detectie van gesplitste blokkades («split lock»), die optreden bij toegang tot niet-uitgelijnde gegevens in het geheugen omdat gegevens tijdens de uitvoering van een atomische instructie twee CPU-cachelijnen kruisen. Dergelijke blokkades leiden tot een aanzienlijke daling van de prestaties, daarom werd eerder de optie geboden om de toepassing die de blokkade veroorzaakte geforceerd te beëindigen. In de nieuwe release is de commando-lijnparameter van de kernel «split_lock_detect=ratelimit:N» toegevoegd, waarmee de algemene systeemlimiet voor de intensiteit van blokkade-operaties per seconde kan worden bepaald. Zodra deze limiet is overschreden, wordt elk proces dat heeft geleid tot een gesplitste blokkade in plaats van beëindigd, forcerend gestopt voor 20 ms;
    • In de cgroup-bandbreedte beheercontroller CFS (CFS bandwidth controller), die bepaalt hoeveel CPU-tijd aan elke cgroup kan worden toegewezen, is de mogelijkheid toegevoegd om limieten te definiëren die zijn beperkt door een bepaalde tijdsduur. Dit maakt het beter mogelijk om laadtijden te reguleren die gevoelig zijn voor vertragingen. Bijvoorbeeld, het instellen van de waarde cpu.cfs_quota_us op 50000 en cpu.cfs_period_us op 100000 geeft een groep processen de mogelijkheid om elke 100 ms 50 ms CPU-tijd te gebruiken;
    • toegevoegd Initiële infrastructuur voor het maken van BPF-programma's die in de toekomst alleen de mogelijkheid zal bieden om BPF-programma's te laden die zijn ondertekend met een vertrouwde digitale sleutel;
    • Een nieuwe futex-operatie FUTEX_LOCK_PI2 is toegevoegd, die een monotone timer gebruikt voor het berekenen van de time-out, rekening houdend met de tijd die het systeem in de slaapmodus heeft doorgebracht;
    • Voor de RISC-V-architectuur is ondersteuning voor grote geheugenseiten (Transparent Huge-Pages) en de toepassing van het mechanisme geïmplementeerd. KFENCE voor het detecteren van geheugenfouten;
    • In de systeemaanroep madvise(), die middelen biedt voor het optimaliseren van het beheer van het geheugen van het proces, zijn toegevoegd de vlaggen MADV_POPULATE_READ en MADV_POPULATE_WRITE voor het genereren van een «page fault» in alle geheugenseiten, die zijn aangewezen voor lees- of schrijfoperaties, zonder daadwerkelijke lezing of schrift (prefault) uit te voeren. Het gebruik van deze vlaggen kan nuttig zijn om vertragingen tijdens de uitvoering van het programma te verminderen, doordat de «page fault»-handler proactief voor alle niet-geallocateerde pagina's wordt uitgevoerd, zonder te wachten op feitelijke toegang tot deze pagina's;
    • in het unit-testingssysteem kunit toegevoegd ondersteuning voor het uitvoeren van tests in de QEMU-omgeving;
    • nieuwe tracers toegevoegd: «osnoise» om vertragingen in applicaties, veroorzaakt door interruptverwerking, te volgen, en «timerlat» voor gedetailleerde informatie over vertragingen bij wake-ups door een timeronderbreking;
  • virtualisatie en beveiliging:
    • is toegevoegd de systeemaanroep memfd_secret(), waarmee een privé geheugengebied kan worden gecreëerd in een geïsoleerde adresruimte, zichtbaar alleen voor de eigenaar van het proces, niet gereflecteerd in andere processen en rechtstreeks niet toegankelijk voor de kernel;
    • in het seccomp-systeem voor systeemaanroepen is de mogelijkheid geboden om een enkele atomische operatie te gebruiken voor het creëren van een bestandshandle voor een geïsoleerde taak en deze terug te geven tijdens de verwerking van een systeemaanroep wanneer de blokkeringverwerkers naar de gebruikersruimte zijn verplaatst. De voorgestelde operatie lost een probleem op met het onderbreken van de handler in de gebruikersruimte bij ontvangst van een signaal;
    • is toegevoegd een nieuw mechanisme voor resourcebeheersing in de gebruikers-id namespace, die individuele rlimit-tellers aan een gebruiker in de «user namespace» koppelt. De wijziging lost het probleem op van het gebruik van gedeelde resourcetellers wanneer door één gebruiker processen in verschillende containers worden gestart;
    • in de KVM-hypervisor voor ARM64-systemen is de mogelijkheid toegevoegd om in gasten gebruik te maken van de MTE (MemTag, Memory Tagging Extension), waarmee tags aan elke geheugentoewijzing kunnen worden gekoppeld en de juistheid van het gebruik van pointers kan worden gecontroleerd om uitbuiting van kwetsbaarheden te blokkeren, veroorzaakt door toegang tot al vrijgegeven geheugengebieden, bufferoverflows, toegang vóór initialisatie en gebruik buiten de huidige context;
    • de door het ARM64-platform geboden middelen voor pointer-authenticatie kunnen nu afzonderlijk worden ingesteld voor de kernel en de gebruikersruimte. Technologie maakt gebruik van speciale ARM64-instructies voor de controle van retouradressen met behulp van digitale handtekeningen die zijn opgeslagen in de ongebruikte bovenste bits van de pointer zelf;
    • in User-mode Linux toegevoegd ondersteuning voor het gebruik van stuurprogramma's voor PCI-apparaten met een virtuele PCI-bus, geïmplementeerd door de PCI-over-virtio-driver;
    • Voor x86-systemen is ondersteuning toegevoegd voor het para-virtualiseerde apparaat virtio-iommu, waarmee IOMMU-aanvragen zoals ATTACH, DETACH, MAP en UNMAP via de virtio-transportlaag kunnen worden verzonden zonder de geheugenpagina-tabellen te emuleren;
    • Voor Intel CPU's, beginnend met het Skylake-familie en eindigend met Coffee Lake, is het gebruik van de Intel TSX (Transactional Synchronization Extensions) standaard uitgeschakeld, die middelen bieden om de prestaties van multi-threaded toepassingen te verbeteren door dynamisch overbodige synchronisatie-operaties uit te sluiten. Het uitschakelen is gedaan vanwege de mogelijkheid om aanvallen uit te voeren, Zombieload, die gebruikmaken van gegevenslekken via zijkanalen die optreden tijdens de werking van het mechanisme voor asynchrone onderbreking van operaties (TAA, TSX Asynchronous Abort);
  • Netwerksubsystemen:
    • De integratie in de kernel van MPTCP (MultiPath TCP) is voortgezet, een uitbreiding van het TCP-protocol voor het tot stand brengen van TCP-verbindingen met gelijktijdige aflevering van pakketten over meerdere routes via verschillende netwerkinterfaces die aan verschillende IP-adressen zijn gekoppeld. In deze nieuwe release, is toegevoegd is er een mechanisme toegevoegd voor het instellen van eigen hash-beleid voor verkeer voor zowel IPv4 als IPv6 (multipath hash policy), waarmee vanuit de gebruikersruimte kan worden bepaald welke velden in de pakketten, inclusief ingekapselde pakketten, zullen worden gebruikt bij de hash-berekening die de padkeuze voor het pakket bepaalt;
    • Ondersteuning voor sockets is toegevoegd aan het virtuele transport virtio SOCK_SEQPACKET (geordende en betrouwbare overdracht van datagrammen);
    • De mogelijkheden van het SO_REUSEPORT-socketmechanisme zijn uitgebreid, waardoor meerdere luisterende sockets kunnen worden verbonden met één poort voor het ontvangen van verbindingen met gelijktijdige distributie van binnenkomende verzoeken over alle via SO_REUSEPORT verbonden sockets, wat het creëren van multi-threaded servertoepassingen vereenvoudigt. In de nieuwe versie, zijn toegevoegd zijn er middelen toegevoegd voor het overdragen van beheer naar een andere socket in het geval van een fout bij de verwerking van een verzoek door de oorspronkelijk geselecteerde socket (dit lost het probleem op van het verlies van afzonderlijke verbindingen bij het herstarten van services);
  • Apparatuur:
    • in de amdgpu-stuurprogramma geïmplementeerd ondersteuning voor nieuwe GPU-serie van AMD Radeon RX 6000, ontwikkeld onder de codenaam «Beige Goby» (Navi 24) en «Yellow Carp», evenals verbeterde ondersteuning voor de GPU Aldebaran (gfx90a) en APU Van Gogh. De mogelijkheid voor gelijktijdig gebruik van meerdere eDP-panelen is toegevoegd. Voor de APU Renoir is ondersteuning voor het werken met versleutelde buffers in videogeheugen (TMZ, Trusted Memory Zone) geïmplementeerd. Ondersteuning voor hot-swapping van grafische kaarten (hot-unplug) is toegevoegd. Voor de GPU Radeon RX 6000 (Navi 2x) en oudere AMD GPU's is de ondersteuning voor het energiebeheermechanisme ASPM (Active State Power Management) standaard ingeschakeld, wat eerder alleen voor de GPU Navi 1x, Vega en Polaris was geactiveerd;
    • voor AMD-chips is ondersteuning voor gedeeld virtueel geheugen (SVM, shared virtual memory) toegevoegd op basis van het HMM-systeem (Heterogeneous memory management), waarmee apparaten met eigen geheugenbeheereenheden (MMU, memory management unit) toegang kunnen krijgen tot het hoofdgeheugen. Onder andere kan met HMM een gedeeld adresruimte tussen GPU en CPU worden georganiseerd, waarbij de GPU toegang heeft tot het hoofdgeheugen van een proces;
    • eerste ondersteuning voor technologie toegevoegd AMD Smart Shift, dat dynamisch de energieverbruikparameters van CPU en GPU op laptops met een AMD-chipset en videokaart wijzigt om de prestaties tijdens gaming, videobewerking en 3D-rendering te optimaliseren;
    • in de i915-driver voor Intel-grafische kaarten is ingeschakeld ondersteuning voor Intel Alderlake P-chips;
    • driver drm/hyperv toegevoegd voor de virtuele grafische adapter Hyper-V;
    • is toegevoegd de grafische driver simpledrm, die gebruikmaakt van de framebuffer EFI-GOP of VESA, geleverd door UEFI-firmware of BIOS. Het hoofddoel van de driver is het bieden van grafische uitvoer in de vroege fasen van het opstarten, voordat het mogelijk is om een volledige DRM-driver te gebruiken. De driver kan ook worden gebruikt als een tijdelijke oplossing voor hardware waarvoor momenteel geen native DRM-drivers beschikbaar zijn;
    • toegevoegd ondersteuning voor de alles-in-één computer Raspberry Pi 400;
    • de dell-wmi-privacy-driver toegevoegd ter ondersteuning van hardware-schakelaars voor camera en microfoon in Dell-laptops;
    • voor Lenovo laptops is toegevoegd WMI-interface voor het wijzigen van BIOS-instellingen via sysfs /sys/class/firmware-attributes/;
    • uitgebreid ondersteuning voor apparaten met een 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 geluidsupport op HP- en ASUS-laptops. Toegevoegd patches om vertragingen vóór het starten van geluidsweergave op apparaten met USB-interface te verminderen.

Bron – opennet.ru.

Bron: linux.org.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster