Kernelrelease Linux 5.14

Na twee maanden ontwikkeling bracht Linus Torvalds de kernel uit. Linux 5.14. Среди наиболее заметных изменений: новые системные вызовы quotactl_fd() и memfd_secret(), удаление драйверов ide и raw, новый контроллер приоритетов ввода/вывода для cgroup, режим планирования задач SCHED_CORE, инфраструктура для создания загрузчиков верифицированных BPF-программ.

De nieuwe versie bevat 15883 oplossingen van 2002 ontwikkelaars, de patch is 69 MB groot (wijzigingen hadden betrekking op 12580 bestanden, er werden 861501 regels code toegevoegd en 321654 regels verwijderd). Ongeveer 47% van alle wijzigingen in versie 5.14 heeft betrekking op apparaatstuurprogramma's, ongeveer 14% op het bijwerken van code die specifiek is voor hardwarearchitecturen, 13% op de netwerkstack, 3% op bestandssystemen en 3% op interne kernelsubsystemen.

Belangrijkste innovaties:

  • Schijfsubsysteem, I/O en bestandssystemen
    • Er is een nieuwe I/O-prioriteitscontroller, rq-qos, geïmplementeerd voor cgroups. Deze controller kan de prioriteit bepalen van de verwerking van verzoeken om apparaten te blokkeren die door leden van elke cgroup worden gegenereerd. Ondersteuning voor de nieuwe prioriteitscontroller is toegevoegd aan de mq-deadline I/O-scheduler.
    • 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.
    • Btrfs heeft prestatieoptimalisaties: door onnodige registratie van uitgebreide kenmerken tijdens fsync te elimineren, zijn de prestaties van intensieve bewerkingen met uitgebreide kenmerken met wel 17% toegenomen. Bovendien is volledige synchronisatie nu uitgeschakeld voor extent-neutrale afkappingsbewerkingen, waardoor de bewerkingstijd met 12% wordt verkort. Er is een instelling aan sysfs toegevoegd om de I/O-doorvoer te beperken bij het controleren van een bestandssysteem. Er zijn Ioctl-aanroepen toegevoegd om bewerkingen voor het wijzigen van de grootte en het verwijderen van apparaten 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 heeft een optie voor alleen-lezen en er is een gecomprimeerde blokcachemodus (compress_cache) geïmplementeerd om de prestaties bij willekeurig lezen te verbeteren. Ondersteuning voor compressie van bestanden die aan het geheugen zijn toegewezen met behulp van de mmap()-bewerking is geïmplementeerd. Er is een nieuwe mount-optie, nocompress, voorgesteld om bestandscompressie per masker selectief uit te schakelen.
    • De exFAT-driver is verbeterd om de compatibiliteit met sommige opslagapparaten van digitale camera's 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 één CPU-kern kunnen worden uitgevoerd. Aan elk proces kan een cookie worden toegewezen die de vertrouwensbandbreedte tussen processen definieert (bijvoorbeeld eigendom van dezelfde gebruiker of container). Bij het organiseren van code-uitvoering kan de planner ervoor zorgen dat alleen processen die aan dezelfde eigenaar zijn gekoppeld één CPU-kern delen. Dit 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-bewerking geïmplementeerd, waarmee u alle processen die aan de groep zijn gekoppeld in één keer kunt beëindigen (SIGKILL verzenden) door "1" naar het virtuele bestand cgroup.kill te schrijven.
    • Verbeterde mogelijkheden voor het reageren op detectie van split locks, die optreden bij toegang tot niet-uitgelijnde gegevens in het geheugen doordat de gegevens twee CPU-cachelijnen overschrijden tijdens de uitvoering van een atomaire instructie. Dergelijke locks veroorzaken een aanzienlijke prestatievermindering, waardoor de mogelijkheid om de applicatie die de lock veroorzaakte geforceerd te beëindigen voorheen breed beschikbaar was. Deze release voegt een kernel-opdrachtregelparameter "split_lock_detect=ratelimit:N" toe om een ​​systeembrede snelheidslimiet voor lock-bewerkingen per seconde te specificeren. Daarna wordt elk proces dat een split lock veroorzaakte gedurende 20 ms geforceerd beëindigd in plaats van beëindigd.
    • De CFS-bandbreedtecontroller, die bepaalt hoeveel CPU-tijd aan elke cgroup kan worden toegewezen, kan nu tijdgebaseerde limieten definiëren, wat een betere controle over latentiegevoelige workloads mogelijk maakt. Door bijvoorbeeld cpu.cfs_quota_us in te stellen op 50000 en cpu.cfs_period_us op 100000, kan een procesgroep elke 100 ms 50 ms CPU-tijd besteden.
    • 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.
    • Er is een nieuwe futex-bewerking toegevoegd FUTEX_LOCK_PI2, die een monotone timer gebruikt om een ​​time-out te berekenen die rekening houdt met de tijd dat het systeem in de slaapstand heeft gestaan.
    • Voor de RISC-V-architectuur zijn ondersteuning voor grote geheugenpagina's (Transparent Huge-Pages) en de mogelijkheid om het KFENCE-mechanisme te gebruiken voor het detecteren van fouten bij het werken met geheugen geïmplementeerd.
    • De systeemaanroep madvise(), die een manier biedt om het procesgeheugenbeheer te optimaliseren, beschikt nu over de vlaggen MADV_POPULATE_READ en MADV_POPULATE_WRITE om een ​​"paginafout" te genereren op alle geheugenpagina's die zijn toegewezen voor lees- of schrijfbewerkingen, zonder daadwerkelijk te lezen of te schrijven (prefault). Het gebruik van deze vlaggen kan nuttig zijn om de programmalatentie te verminderen door de "paginafout"-handler proactief uit te voeren voor alle niet-toegewezen pagina's tegelijk, zonder te wachten tot ze daadwerkelijk worden geopend.
    • 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.
    • Er is een nieuw mechanisme toegevoegd voor het beheren van resourcelimieten in de gebruikers-ID-naamruimte, waarmee individuele rlimit-tellers aan een gebruiker in de "gebruikersnaamruimte" worden gekoppeld. Deze wijziging lost het probleem op van het gebruik van gedeelde resourcetellers wanneer dezelfde gebruiker processen in verschillende containers uitvoert.
    • In de hypervisor KVM Voor ARM64-systemen is de mogelijkheid toegevoegd om de Memory Tagging Extension (MTE) in gastsystemen te gebruiken. Deze extensie maakt het mogelijk om tags te koppelen aan elke geheugentoewijzingsbewerking en voert controles uit op correct pointergebruik om misbruik van kwetsbaarheden te voorkomen die worden veroorzaakt door toegang tot reeds vrijgegeven geheugenblokken, bufferoverloop, 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.
    • В User-mode Linux добавлена поддержка использования драйверов к PCI-устройствам с виртуальной шиной PCI, реализуемой драйвером PCI-over-virtio.
    • Voor x86-systemen is ondersteuning toegevoegd voor het geparavirtaliseerde virtio-iommu-apparaat, waarmee IOMMU-verzoeken zoals ATTACH, DETACH, MAP en UNMAP via het virtio-transport kunnen worden verzonden zonder dat geheugenpaginatabellen hoeven te worden geëmuleerd.
    • 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
    • Verdere integratie in de MPTCP (MultiPath TCP)-kern, een uitbreiding van het TCP-protocol voor het organiseren van de werking van een TCP-verbinding met de gelijktijdige aflevering van pakketten over meerdere routes via verschillende netwerkinterfaces die aan verschillende apparaten zijn gekoppeld. IP-adressenDe nieuwe release voegt een mechanisme toe voor het definiëren van aangepaste hashbeleidsregels voor IPv4 en IPv6 (multipath hashbeleid). Dit biedt de gebruiker de mogelijkheid om te bepalen welke velden in pakketten, inclusief ingekapselde velden, worden gebruikt om de hash te berekenen die de padselectie voor een pakket bepaalt.
    • 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 luisterende sockets verbinding kunnen maken met één poort om verbindingen te accepteren en inkomende verzoeken gelijktijdig te verdelen over alle sockets die via SO_REUSEPORT zijn verbonden. Dit vereenvoudigt het maken van multithreaded servertoepassingen. De nieuwe versie voegt tools toe voor het overdragen van de controle aan een andere socket in geval van een storing in de verwerking van een verzoek door de aanvankelijk geselecteerde socket (lost het probleem op van het verlies van individuele verbindingen bij het herstarten van services).
  • Uitrusting
    • De amdgpu-driver implementeert ondersteuning voor de nieuwe AMD Radeon RX 6000-serie GPU's, codenaam "Beige Goby" (Navi 24) en "Yellow Carp", en verbetert tevens de ondersteuning voor de Aldebaran (gfx90a) GPU en Van Gogh APU. De mogelijkheid om met meerdere eDP-panelen tegelijk te werken is toegevoegd. Voor de Renoir APU is ondersteuning voor het werken met gecodeerde buffers in videogeheugen (TMZ, Trusted Memory Zone) geïmplementeerd. Ondersteuning voor hot-unplugging van grafische kaarten is toegevoegd. Voor de Radeon RX 6000 (Navi 2x) GPU en oudere AMD GPU's is ondersteuning voor het energiebesparende ASPM-mechanisme (Active State Power Management) standaard ingeschakeld, wat voorheen alleen was ingeschakeld voor de 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 geluidsondersteuning op HP en ASUS laptops. Patches toegevoegd om vertragingen te verminderen voordat het afspelen van geluid op USB-apparaten start.

Bron: opennet.ru

Koop betrouwbare hosting voor sites met DDoS-bescherming, VPS VDS-servers 🔥 Koop betrouwbare websitehosting met DDoS-bescherming, VPS- en VDS-servers | ProHoster