Linux-kärnan version 5.12

Efter två månaders utveckling presenterade Linus Torvalds releasen av Linux-kärnan 5.12. Bland de mest anmärkningsvärda förändringarna: stöd för zonerade blockenheter i Btrfs, möjligheten att kartlägga användar-ID:n för filsystemet, rensa upp äldre ARM-arkitekturer, ett "ivrigt" skrivläge i NFS, LOOKUP_CACHED-mekanismen för att bestämma filsökvägar från cachen , stöd för atominstruktioner i BPF, ett felsökningssystem KFENCE för att identifiera fel vid arbete med minne, NAPI pollingläge som körs i en separat kärntråd i nätverksstacken, ACRN hypervisor, möjligheten att ändra preemptmodellen i farten i uppgiften schemaläggare och stöd för LTO-optimeringar när man bygger i Clang.

Den nya versionen innehåller 14170 (i den tidigare utgåvan 15480) korrigeringar från 1946 (1991) utvecklare, patchstorleken är 38 MB (ändringarna påverkade 12102 (12090) filer, 538599 (868025) kodrader lades till, (333377) rader raderades). Cirka 261456 % av alla ändringar som introduceras i 43 är relaterade till drivrutiner, cirka 5.12 % av ändringarna är relaterade till uppdateringskod som är specifik för hårdvaruarkitekturer, 17 % är relaterade till nätverksstacken, 12 % är relaterade till filsystem och 5 % är relaterade till interna kärndelsystem.

Huvudsakliga innovationer:

  • Diskundersystem, I/O och filsystem
    • Möjligheten att mappa användar-ID:n för monterade filsystem har implementerats (du kan mappa filer för en användare på en monterad främmande partition med en annan användare på det aktuella systemet). Mappning stöds för filsystem FAT, ext4 och XFS. Den föreslagna funktionen gör det lättare att dela filer mellan olika användare och på olika datorer, inklusive mappning kommer att användas i den systemd-homed bärbara hemkatalogmekanismen, vilket gör det möjligt för användare att flytta sina hemkataloger till externa media och använda dem på olika datorer, mappning användar-ID som inte matchar. En annan användbar applikation är att organisera tillhandahållandet av delad åtkomst till filer från en extern värd, utan att faktiskt ändra data om ägarna av filerna i filsystemet.
    • LOOKUP_CACHED-korrigeringarna har införts i kärnan, vilket gör det möjligt för operationer att bestämma en filsökväg från användarutrymmet utan att blockera, endast baserat på tillgänglig data i cachen. LOOKUP_CACHED-läget aktiveras i openat2()-anropet genom att skicka RESOLVE_CACHED-flaggan, där data endast serveras från cachen, och om sökvägsbestämningen kräver åtkomst till enheten, returneras EAGAIN-felet.
    • Btrfs-filsystemet har lagt till initialt stöd för zonerade blockenheter (enheter på hårdmagnetiska diskar eller NVMe SSD:er, vars lagringsutrymme är uppdelat i zoner som utgör grupper av block eller sektorer, till vilka endast sekventiell tillägg av data är tillåten, uppdatera hela gruppen av block). I skrivskyddat läge implementeras stöd för block med metadata och data mindre än en sida (undersida).
    • I F2FS-filsystemet har möjligheten att välja algoritm och komprimeringsnivå lagts till. Tillagt stöd för högnivåkomprimering för LZ4-algoritmen. Implementerade monteringsalternativet checkpoint_merge.
    • Ett nytt ioctl-kommando FS_IOC_READ_VERITY_METADATA har implementerats för att läsa metadata från filer skyddade med fs-verity.
    • NFS-klienten implementerar ett "ivrigt" skrivläge (writes=eager), när det är aktiverat, överförs skrivoperationer till en fil omedelbart till servern och kringgår sidcachen. Detta läge låter dig minska minnesförbrukningen, ger omedelbar mottagning av information om slutet på ledigt utrymme i filsystemet och gör det i vissa situationer möjligt att uppnå ökad prestanda.
    • Nya monteringsalternativ har lagts till i CIFS (SMB): acregmax för att kontrollera filcachelagring och acdirmax för att styra cachelagring av katalogmetadata.
    • I XFS har flertrådigt kvotkontrollläge aktiverats, fsync-exekveringen har accelererats och growfs-kod har förberetts för att implementera funktionen att minska storleken på filsystemet.
  • Minnes- och systemtjänster
    • Delsystemet DTMP (Dynamic Thermal Power Management) har lagts till, vilket gör att du dynamiskt kan reglera strömförbrukningen för olika enheter baserat på de inställda allmänna temperaturgränserna.
    • Möjligheten att bygga kärnan med hjälp av Clang-kompilatorn med inkludering av optimeringar i länkningsstadiet (LTO, Link Time Optimization) har implementerats. LTO-optimeringar skiljer sig genom att ta hänsyn till tillståndet för alla filer som är involverade i byggprocessen, medan traditionella optimeringslägen optimerar varje fil separat och inte tar hänsyn till villkoren för att anropa funktioner definierade i andra filer. Till exempel med LTO är inline-distribution möjlig för funktioner från andra filer, oanvänd kod ingår inte i den körbara filen, typkontroll och generell optimering utförs på projektnivå som helhet. LTO-stöd är för närvarande begränsat till x86- och ARM64-arkitekturer.
    • Det är möjligt att välja preemption-lägen (PREEMPT) i aktivitetsschemaläggaren vid uppstartsstadiet (preempt=ingen/frivillig/full) eller när man arbetar genom debugfs (/debug/sched_debug), om PREEMPT_DYNAMIC-inställningen angavs när kärnan byggdes. Tidigare kunde extruderingsläget endast ställas in på monteringsparametrarnas nivå. Ändringen tillåter distributioner att skicka kärnor med PREEMPT-läge aktiverat, vilket ger minimal latens för stationära datorer till priset av en liten genomströmningsstraff, och vid behov falla tillbaka till PREEMPT_VOLUNTARY (ett mellanläge för stationära datorer) eller PREEMPT_NONE (ger maximal genomströmning för servrar) .
    • Stöd för atomoperationer BPF_ADD, BPF_AND, BPF_OR, BPF_XOR, BPF_XCHG och BPF_CMPXCHG har lagts till i BPF-delsystemet.
    • BPF-program ges möjlighet att komma åt data på stacken med hjälp av pekare med variabla förskjutningar. Till exempel, om du tidigare bara kunde använda ett konstant elementindex för att komma åt en array i stacken, kan du nu använda ett föränderligt. Tillträdeskontroll endast inom de befintliga gränserna utförs av BPF-verifieraren. Den här funktionen är endast tillgänglig för privilegierade program på grund av farhågor om utnyttjande av sårbarheter i spekulativ kodexekvering.
    • Lade till möjligheten att koppla BPF-program till blotta spårpunkter som inte är associerade med spårningshändelser som är synliga i användarutrymmet (ABI-bevarande garanteras inte för sådana spårpunkter).
    • Stöd för CXL 2.0 (Compute Express Link)-bussen har implementerats, som används för att organisera höghastighetsinteraktion mellan CPU och minnesenheter (låter dig använda externa minnesenheter som en del av RAM eller permanent minne, som om detta minne var anslutna via en standardminneskontroller i CPU).
    • Tillagd nvmem-drivrutin för att hämta data från firmware-reserverade minnesområden som inte är direkt åtkomliga för Linux (till exempel EEPROM-minne som är fysiskt tillgängligt endast för den fasta programvaran, eller data som endast är tillgänglig under den tidiga startfasen).
    • Stödet för profileringssystemet "oprofile" har tagits bort, som inte användes så ofta och har ersatts av den modernare perf-mekanismen.
    • Det asynkrona I/O-gränssnittet io_uring ger integration med cgroups som styr minnesanvändningen.
    • RISC-V-arkitekturen stöder NUMA-system, såväl som kprobes och uprobes-mekanismer.
    • Lade till möjligheten att använda systemanropet kcmp() oavsett funktionaliteten hos ögonblicksbilder av processtillstånd (kontrollpunkt/återställning).
    • Makron EXPORT_UNUSED_SYMBOL() och EXPORT_SYMBOL_GPL_FUTURE(), som inte har använts i praktiken på många år, har tagits bort.
  • Virtualisering och säkerhet
    • Tillagd KFence (Kernel Electric Fence) skyddsmekanism, som fångar upp fel vid arbete med minne, såsom buffertöverskridanden och åtkomst efter frigöring av minne. Till skillnad från KASAN-felsökningsmekanismen kännetecknas KFence-delsystemet av hög driftshastighet och låg overhead, vilket gör att du kan fånga minnesfel som endast visas på fungerande system eller under långvarig drift.
    • Tillagt stöd för ACRN-hypervisorn, skriven med tanke på beredskap för realtidsuppgifter och lämplighet för användning i verksamhetskritiska system. ACRN ger minimal overhead, garanterar låg latens och adekvat respons vid interaktion med utrustning. Stöder virtualisering av CPU-resurser, I/O, nätverksundersystem, grafik och ljudoperationer. ACRN kan användas för att köra flera isolerade virtuella maskiner i elektroniska styrenheter, instrumentpaneler, fordonsinformationssystem, konsument-IoT-enheter och annan inbäddad teknologi. ACRN stöder två typer av gästsystem - privilegierade tjänste-VM, som används för att hantera systemresurser (CPU, minne, I/O, etc.), och anpassade användar-VM, som kan köra Linux-, Android- och Windows-distributioner.
    • I undersystemet IMA (Integrity Measurement Architecture), som upprätthåller en hashdatabas för att kontrollera integriteten hos filer och tillhörande metadata, blir det nu möjligt att kontrollera integriteten för själva kärnans data, till exempel för att spåra ändringar i SELinux-regler .
    • Möjligheten att avlyssna Xen-hyperanrop och vidarebefordra dem till emulatorn som körs i användarutrymmet har lagts till i KVM-hypervisorn.
    • Lade till möjligheten att använda Linux som rotmiljö för Hyper-V hypervisor. Rotmiljön har direkt tillgång till hårdvaran och används för att köra gästsystem (analogt med Dom0 i Xen). Hittills stödde Hyper-V (Microsoft Hypervisor) Linux endast i gästmiljöer, men själva hypervisorn styrdes från en Windows-baserad miljö.
    • Tillagt stöd för inline-kryptering för eMMC-kort, så att du kan använda krypteringsmekanismer inbyggda i enhetskontrollern som transparent krypterar och dekrypterar I/O.
    • Stödet för hasharna RIPE-MD 128/256/320 och Tiger 128/160/192, som inte används i kärnan, samt Salsa20-strömchifferet, som ersattes av ChaCha20-algoritmen, har tagits bort från kryptosubsystem. Blake2-algoritmen har uppdaterats för att implementera blake2s.
  • Nätverksdelsystem
    • Lade till möjligheten att flytta NAPI-avfrågningshanteraren för nätverksenheter till en separat kärntråd, vilket möjliggör förbättrad prestanda för vissa typer av arbetsbelastning. Tidigare utfördes polling i samband med softirq och täcktes inte av uppgiftsschemaläggaren, vilket gjorde det svårt att utföra finkorniga optimeringar för att uppnå maximal prestanda. Körning i en separat kärntråd gör att pollinghanteraren kan observeras från användarutrymmet, kopplas till individuella CPU-kärnor och tas med i beräkningen vid schemaläggning av uppgiftsbyte. För att aktivera det nya läget i sysfs, föreslås parametern /sys/class/net//threaded.
    • Integrering i kärnan av MPTCP (MultiPath TCP), en förlängning av TCP-protokollet för att organisera driften av en TCP-anslutning med leverans av paket samtidigt längs flera rutter genom olika nätverksgränssnitt associerade med olika IP-adresser. Den nya utgåvan lägger till möjligheten att tilldela prioritet till vissa trådar, vilket gör att man till exempel kan organisera arbetet med backup-trådar som bara aktiveras om det finns problem med den primära tråden.
    • IGMPv3 lägger till stöd för EHT-mekanismen (Explicit Host Tracking).
    • Netfilters paketfiltreringsmotor ger möjligheten att äga vissa tabeller för att få exklusiv kontroll (till exempel kan en bakgrundsbrandväggsprocess ta äganderätten till vissa tabeller, vilket hindrar någon annan från att störa dem).
  • Оборудование
    • Vi städade föråldrade och ounderhållna ARM-plattformar. Koden för plattformarna efm32, picoxcell, prima2, tango, u300, zx och c6x, samt deras tillhörande drivrutiner, har tagits bort.
    • Amdgpu-drivrutinen ger möjlighet att överklocka (OverDrive) kort baserade på Sienna Cichlid GPU (Navi 22, Radeon RX 6xxx). Tillagt stöd för FP16-pixelformat för DCE (display controller engine) från 8:e till 11:e generationen. För GPU Navy Flounder (Navi 21) och APU Van Gogh har möjligheten att återställa GPU:n implementerats.
    • i915-drivrutinen för Intel-grafikkort implementerar parametern i915.mitigations för att inaktivera isolerings- och skyddsmekanismer till förmån för förbättrad prestanda. För chips som börjar från Tiger Lake ingår stöd för mekanismen VRR (Variable Rate Refresh), som gör att du kan anpassa skärmens uppdateringsfrekvens för att säkerställa jämnhet och inga luckor under spel. Stöd för Intel Clear Color-teknik ingår för förbättrad färgnoggrannhet. Tillagt stöd för DP-HDMI 2.1. Möjligheten att styra bakgrundsbelysningen på eDP-paneler har implementerats. För Gen9 GPU:er med stöd för LSPCON (Level Shifter and Protocol Converter) är HDR-stöd aktiverat.
    • Nouveau-drivrutinen lägger till initialt stöd för NVIDIA GPU:er baserade på GA100 (Ampere)-arkitekturen.
    • Msm-drivrutinen lägger till stöd för Adreno 508, 509 och 512 GPU:er som används i SDM (Snapdragon) 630, 636 och 660 chips.
    • Tillagt stöd för Sound BlasterX AE-5 Plus, Lexicon I-ONIX FW810s och Pioneer DJM-750 ljudkort. Lagt till stöd för Intel Alder Lake PCH-P ljudsubsystem. Stöd för mjukvarusimulering av att ansluta och koppla bort en ljudkontakt har implementerats för felsökningshanterare i användarutrymmet.
    • Lade till stöd för Nintendo 64-spelkonsoler tillverkade från 1996 till 2003 (tidigare försök att porta Linux till Nintendo 64 slutfördes inte och klassificerades som Vaporware). Motivationen för att skapa en ny port för en föråldrad plattform, som inte har släppts på nästan tjugo år, är viljan att stimulera utvecklingen av emulatorer och förenkla porteringen av spel.
    • Tillagd drivrutin för Sony PlayStation 5 DualSense spelkontroller.
    • Tillagt stöd för ARM-kort, enheter och plattformar: PineTab, Snapdragon 888 / SM8350, Snapdragon MTP, Two Beacon EmbeddedWorks, Intel eASIC N5X, Netgear R8000P, Plymovent M2M, Beacon i.MX8M Nano, Nano.
    • Lagt till stöd för Purism Librem5 Evergreen, Xperia Z3+/Z4/Z5, ASUS Zenfone 2 Laser, BQ Aquaris X5, OnePlus6, OnePlus6T, Samsung GT-I9070 smartphones.
    • Tillagd bcm-vk-drivrutin för Broadcom VK-acceleratorkort (till exempel Valkyrie- och Viper PCIe-kort), som kan användas för att ladda ner ljud-, video- och bildbehandlingsoperationer, såväl som krypteringsrelaterade operationer, till en separat enhet.
    • Tillagt stöd för Lenovo IdeaPad-plattformen med möjlighet att styra konstant laddning och tangentbordsbakgrundsbelysning. Det finns också stöd för ACPI-profilen för ThinkPad-plattformen med möjlighet att styra strömförbrukningslägen. Tillagd drivrutin för Lenovo ThinkPad X1 Tablet Gen 2 HID-delsystem.
    • Lade till ov5647-drivrutin med stöd för kameramodul för Raspberry Pi.
    • Tillagt stöd för RISC-V SoC FU740 och HiFive Unleashed-kort. En ny drivrutin för Kendryte K210-chippet har också lagts till.

Källa: opennet.ru

Lägg en kommentar