Efter tvÄ mÄnaders utveckling presenterade Linus Torvalds Är kÀrnrelease Linux 5.14. Bland de mest anmÀrkningsvÀrda förÀndringarna finns nya systemanrop quotactl_fd() och memfd_secret(), borttagning av ide- och raw-drivrutiner, en ny in-/ut-prioriteringskontroller för cgroup, SCHED_CORE schemalÀggningslÀge samt infrastruktur för att skapa bootloaders för verifierade BPF-program.
I den nya versionen har 15883 korrigeringar gjorts av 2002 utvecklare, patchens storlek Àr 69 MB (Àndringarna berörde 12580 filer, 861501 kodrader lades till, 321654 rader togs bort). Cirka 47% av alla förÀndringar i 5.14 gÀller enhetsdrivrutiner, ungefÀr 14% av Àndringarna avser uppdatering av arkitektspecifik kod, 13% relaterar till nÀtverksstacken, 3% till filsystem och 3% till interna kÀrnsystem.
- disksubsystem, in-/ut och filsystem:
- för cgroup genomförd en ny in-/ut-prioriteringskontroller â rq-qos, som kan hantera prioriteten av behandling av blockenhetsförfrĂ„gningar som genereras av deltagarna i varje cgroup. Stöd för den nya prioriteringskontrollen har lagts till i in-/ut-schemalĂ€ggaren mq-deadline;
- i ext4-filsystemet har möjligheten ny ioctl-kommando EXT4_IOC_CHECKPOINT, som tvingar fram skrivning av alla vÀntande transaktioner frÄn loggen till disken och relaterade buffertar, samt Äter skriver den omrÄde som anvÀnds av loggen i lagringen. FörÀndringen förbereds som en del av initiativet för att förhindra informationslÀckor frÄn filsystem;
- i Btrfs har prestandaoptimeringar: genom att utesluta onödig loggning av utökade attribut under fsync-utförande har prestandan för intensiva operationer med utökade attribut ökat med upp till 17%. Dessutom har full synkronisering inaktiverats vid utförande av truncations som inte pÄverkar extent, vilket har minskat operationstiden med 12%. En instÀllning har lagts till i sysfs för att begrÀnsa in-/ut-kapaciteten vid filsystemskontroller. Ioctl-anrop har lagts till för att avbryta operationer för storleksÀndringar och enhetsborttagning;
- i XFS omdesignad implementering av cache-systemet som har omvandlats till sidallokering i packat lÀge. Effektiviteten i cache-arbetet har ökat;
- I F2FS har en ny möjlighet lagts till för att arbeta i skrivskyddat lÀge och en cachemetod för komprimerade block (compress_cache) har implementerats för att förbÀttra prestanda vid slumpmÀssig lÀsning. Stöd för komprimering av filer som Äterspeglas i minnet via mmap()-operationen har genomförts. För selektiv avstÀngning av filkomprimering genom mask föreslÄs en ny monteringsalternativ nocompress;
- i exFAT-drivaren har arbete genomförts för att förbÀttra kompatibiliteten med lagringsenheter frÄn vissa digitalkameror;
- ett systemanrop quotactl_fd(), som gör det möjligt att hantera kvoter inte via en specialenhetsfil, utan genom att ange en filbeskrivare kopplad till filsystemet som kvoten gÀller;
- gamla drivare för blockenheter med IDE-grÀnssnitt har tagits bort frÄn kÀrnan, vilka redan lÀnge har ersatts av libata-subsystemet. Stödet för gamla enheter har bevarats i sin helhet, förÀndringarna rör endast möjligheten att anvÀnda gamla drivare, dÀr lagringsenheterna namngavs /dev/hd* istÀllet för /dev/sd*;
- drivaren "raw", som tillhandahÄller obuffrat tillgÄng till blockenheter via grÀnssnittet /dev/raw, har tagits bort frÄn kÀrnan. Den angivna funktionen har lÀnge implementerats i program med hjÀlp av flaggan O_DIRECT;
- minne och systemtjÀnster:
- i schemalÀggaren har ett nytt schemalÀggningslÀge implementerats SCHED_CORE, vilket gör det möjligt att styra vilka processer som kan köras tillsammans pÄ en och samma CPU-kÀrna. Varje process kan tilldelas en cookie-identifierare som definierar förtroendeomrÄdet mellan processerna (till exempel tillhörande en anvÀndare eller container). Vid organisation av kodexekvering kan schemalÀggaren sÀkerstÀlla delning av en CPU-kÀrna endast för processer relaterade till en och samma Àgare, vilket kan anvÀndas för att blockera vissa attacker av typen Spectre genom att förhindra exekvering i en SMT-trÄd (Hyper Threading) av bÄde betrodda och icke-betrodda uppgifter;
- stöd för kill-operationen har implementerats för cgroup-mekanismen, vilket gör att alla processer kopplade till gruppen kan avslutas pÄ en gÄng (skickar SIGKILL) genom att skriva "1" till den virtuella filen cgroup.kill;
- Möjligheterna som rör reaktion pÄ upptÀckten av split-lÄsningar har utvidgats, vilka uppstÄr vid Ätkomst till ojusterade data i minnet pÄ grund av att data korsar tvÄ CPU-cachelinjer nÀr en atomÀr instruktion utförs. SÄdana lÄsningar leder till en betydande nedgÄng i prestanda, sÄ tidigare fanns möjligheten att tvinga avslutande av den applikation som orsakade lÄsningen. I den nya versionen har en kommandoradsparameter i kÀrnan, "split_lock_detect=ratelimit:N", lagts till, vilket möjliggör att faststÀlla ett allmÀnt systemgrÀns för intensiteten av blockeringar per sekund, efter vilken alla processer som blivit kÀllan till en split-lÄsning istÀllet för att avslutas kommer att tvingas stoppas i 20 ms;
- I cgroup-kontrollern för CFS (CFS-bandbreddskontroller), som bestÀmmer hur mycket processor-tid som kan tilldelas varje cgroup, har möjligheten att definiera begrÀnsningar med angivna tidsintervall genomförts, vilket gör att man bÀttre kan reglera belastningar som Àr kÀnsliga för fördröjningar. Till exempel, att stÀlla in vÀrdet cpu.cfs_quota_us till 50000 och cpu.cfs_period_us till 100000 gör det möjligt för en grupp processer att anvÀnda 50 ms CPU-tid var 100 ms;
- har lagts till Det finns en grundlÀggande infrastruktur för att skapa lastare av BPF-program, vilket i framtiden kommer att möjliggöra uppladdning av endast BPF-program som Àr signerade med en betrodd digital nyckel;
- En ny futex-operation FUTEX_LOCK_PI2 har lagts till, som anvÀnder en monotontimer för att berÀkna timeouten och tar hÀnsyn till den tid som systemet har varit i vilolÀge;
- Stöd för stora minnessidor (Transparent Huge-Pages) och möjligheten att anvÀnda mekanismen har implementerats för RISC-V-arkitekturen, KFENCE för att upptÀcka minnesfel;
- i systemanropet madvise(), som ger medel för att optimera minneshanteringen av processen, har lagts till flaggorna MADV_POPULATE_READ och MADV_POPULATE_WRITE för att generera "page fault" pÄ alla minnessidor som reflekteras för lÀs- eller skrivoperationer, utan att faktiskt utföra nÄgot lÀs- eller skrivande (prefault). AnvÀndningen av flaggorna kan vara anvÀndbara för att minska fördröjningar under programkörning, genom att pÄ förhand utföra hanteraren av "page fault" pÄ alla ouppdelade sidor, utan att vÀnta pÄ att de verkliga Ätkomsterna ska ske;
- i systemet för enhetstestning kunit har lagts till stöd för körning av tester i QEMU-miljö;
- nya spÄrningsverktyg har lagts till: "osnoise" för att spÄra fördröjningar i applikationer orsakade av interruptbearbetning, och "timerlat" för att ge detaljerad information om fördröjningar vid vÀckning av en timer;
- virtualisering och sÀkerhet:
- tillagd systemanropet memfd_secret(), som gör det möjligt att skapa ett privat minnesomrÄde i ett isolerat adresseringsutrymme, synligt endast för Àgarprocessen, inte reflekterat i andra processer och direkt oÄtkomligt för kÀrnan;
- i systemet för filtrering av systemanrop seccomp har möjligheten införts att anvÀnda en atomÀr operation för att skapa en filbeskrivare för isolerade uppgifter och ÄterlÀmna den vid hantering av systemanrop. Den föreslagna operationen löser problemet med avbrottshantering i anvÀndarrummet vid mottagande av signal;
- tillagd en ny mekanism för att hantera resursbegrĂ€nsningar inom anvĂ€ndaridentifieringsnamnrymden, som kopplar individuella rlimit-tellare till anvĂ€ndaren i "user namespace". Ăndringen löser problemet med tillĂ€mpning av gemensamma resursrĂ€knare vid körning av processer frĂ„n en anvĂ€ndare i olikaContainrar;
- i hypervisor KVM för ARM64-system har möjligheten att anvÀnda MTE (MemTag, Memory Tagging Extension) i gÀstsystem lagts till, vilket möjliggör koppling av taggar till varje minnesallokeringsoperation och organiserar kontroll av korrekt anvÀndning av pekare för att blockera utnyttjande av sÄrbarheter orsakade av Ätkomst till redan frigjort minne, buffertöverskridningar, Ätkomster innan initiering och anvÀndning utanför nuvarande sammanhang;
- de verktyg för pekarautentisering som tillhandahÄlls av ARM64-plattformen kan nu konfigureras separat för kÀrnan och anvÀndarrummet. Tekniken möjliggör anvÀndning av specialiserade ARM64-instruktioner för att verifiera returadresser med hjÀlp av digitala signaturer som lagras i de oanvÀnda översta bitarna av sjÀlva pekaren;
- i User-mode Linux har lagts till stöd för att anvÀnda drivrutiner för PCI-enheter med en virtuell PCI-buss, som implementeras av drivrutinen PCI-over-virtio;
- För system med x86 har stöd för det paravirtualiserade enheten virtio-iommu lagts till, vilket möjliggör att skicka IOMMU-förfrÄgningar sÄsom ATTACH, DETACH, MAP och UNMAP ovh transportera dem med virtio utan att emulera sidtabeller.
- För Intel CPU:er, frÄn Skylake- till Coffee Lake-familjen, Àr anvÀndningen av Intel TSX (Transactional Synchronization Extensions) som standard avstÀngd, vilket ger medel för att öka prestandan för multitrÄdiga applikationer genom att dynamiskt undanta onödiga synkroniseringsoperationer. Utökningarna stÀngdes av pÄ grund av möjligheten till attacker Zombieload, som manipulerar lÀckage av information genom sidokanaler som uppstÄr vid drift av den asynkrona avbrottshanteringsmekanismen (TAA, TSX Asynchronous Abort);
- nÀtverksunderstöd:
- Integrationen med kÀrnan för MPTCP (MultiPath TCP), en utvidgning av TCP-protokollet för att organisera TCP-anslutningar med paketleverans samtidigt över flera vÀgar genom olika nÀtverksgrÀnssnitt kopplade till olika IP-adresser, har fortsatt. I den nya versionen tillagd har mekanismen för att ange egna trafikhashpolicys för IPv4 och IPv6 (multipath hash policy) lagts till, vilket ger möjlighet att frÄn anvÀndarutrymmet definiera vilka av fÀlten i paketen, inklusive inkapslade sÄdana, som kommer att anvÀndas vid berÀkningen av hash som bestÀmmer vÀgen för ett paket;
- Det virtuella transportprotokollet virtio har lagt till stöd för sockets SOCK_SEQPACKET (ordnad och tillförlitlig överföring av datagram);
- Möjligheterna för mekanismen för sockets SO_REUSEPORT har utökats, vilket gör att flera lyssnande sockets kan koppla upp sig till en port för att ta emot anslutningar med spridning av inkommande förfrÄgningar över alla kopplade sockets med SO_REUSEPORT, vilket förenklar skapandet av multitrÄdiga serverapplikationer. I den nya versionen har lagts till finns medel för att överföra kontrollen till en annan socket i hÀndelse av fel vid behandling av en förfrÄgan frÄn den ursprungligt valda socketen (löser problemet med att enstaka anslutningar gÄr förlorade vid omstart av tjÀnster);
- utrustning:
- i drivrutinen amdgpu har möjligheten stöd för nya serier av AMD Radeon RX 6000 GPU:er, som utvecklas under kodnamnen "Beige Goby" (Navi 24) och "Yellow Carp", samt förbÀttrad support för GPU Aldebaran (gfx90a) och APU Van Gogh. Möjlighet till samtidig anvÀndning av flera eDP-paneler har lagts till. För APU Renoir har stöd för arbete med krypterade buffertar i videominnet (TMZ, Trusted Memory Zone) implementerats. Stöd för varm uttagning av grafikkort (hot-unplug) har lagts till. För GPU Radeon RX 6000 (Navi 2x) och Àldre AMD GPU:er Àr stöd för mekanismen för energibesparing ASPM (Active State Power Management) aktiverat som standard, vilket tidigare endast aktiverats för GPU Navi 1x, Vega och Polaris;
- stöd för SVM (shared virtual memory) har lagts till för AMD-chips baserat pÄ HMM (Heterogeneous memory management) subsystemet, vilket möjliggör anvÀndning av enheter med egna minneshanteringsenheter (MMU, memory management unit) som kan fÄ tillgÄng till huvudminnet. Med hjÀlp av HMM kan man organisera ett delat adressutrymme mellan GPU och CPU, dÀr GPU kan fÄ tillgÄng till processens huvudminne;
- början pÄ stöd för teknologin AMD Smart Shift, som dynamiskt Àndrar parametrar för energiförbrukning för CPU och GPU i bÀrbara datorer med AMD chipset och grafikkort för att öka prestandan vid spel, videoredigering och 3D-rendering;
- i i915-drivrutinen för Intel-grafikkort Àr inkluderad stöd för Intel Alderlake P-chips;
- drivrutin drm/hyperv för den virtuella grafikadaptern Hyper-V har lagts till;
- tillagd grafikdrivrutinen simpledrm, som anvÀnder EFI-GOP eller VESA framebuffer tillhandahÄllet av UEFI-firmware eller BIOS för grafisk utgÄng. Huvudsyftet med drivrutinen Àr att möjliggöra grafisk utgÄng under tidiga uppstartsfasen, innan det Àr möjligt att anvÀnda en komplett DRM-drivrutin. Drivrutinen kan ocksÄ anvÀndas som en tillfÀllig lösning för utrustning som Ànnu inte har egna DRM-drivrutiner;
- har lagts till stöd för allt-i-ett-datorn Raspberry Pi 400;
- drivrutin dell-wmi-privacy för att stödja fysiska avstÀngningsknappar för kameran och mikrofonen pÄ Dell-bÀrbara datorer har lagts till;
- för Lenovo-bÀrbara datorer tillagd WMI-grÀnssnitt för att Àndra BIOS-instÀllningar via sysfs /sys/class/firmware-attributes/;
- utökat stöd för enheter med USB4-grÀnssnitt;
- har lagts till stöd för ljudkort och codecs AmLogic SM1 TOACODEC, Intel AlderLake-M, NXP i.MX8, NXP TFA1, TDF9897, Rockchip RK817, Qualcomm Quinary MI2 och Texas Instruments TAS2505. FörbÀttrat ljudstöd pÄ bÀrbara datorer frÄn HP och ASUS. Tillagda patchar för att minska fördröjningar innan ljuduppspelning börjar pÄ enheter med USB-grÀnssnitt.
KĂ€lla â opennet.ru.
KĂ€lla: linux.org.ru
