Efter tvÄ mÄnaders utveckling presenterade Linus Torvalds release av Linux-kÀrna 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 prioritetskontroller för I/O för cgroup, schemalÀggningslÀge SCHED_CORE, och infrastruktur för att skapa laddare av verifierade BPF-program.
Den nya versionen innehÄller 15883 korrigeringar frÄn 2002 utvecklare, patchstorleken Àr 69 MB (Àndringarna berör 12580 filer, 861501 kodrader har lagts till och 321654 kodrader har tagits bort). Cirka 47% av alla förÀndringar i 5.14 Àr relaterade till enhetsdrivrutiner, ungefÀr 14% av förÀndringarna gÀller uppdatering av kod som Àr specifik för hÄrdvaruarkitekturer, 13% Àr relaterade till nÀtverksstacken, 3% till filsystem och 3% till interna subsystem i kÀrnan.
Huvudsakliga nyheter:
- Disksubsystem, in- och utmatning och filsystem
- För cgroup har en ny I/O-prioriteringkontroller â rq-qos â implementerats, som kan hantera prioriteten för behandlingen av förfrĂ„gningar frĂ„n blockenheter som genereras av medlemmarna i varje cgroup. Stöd för den nya prioriteringskontrollen har lagts till I/O-schemalĂ€ggaren mq-deadline.
- I filsystemet ext4 har en ny ioctl-kommando EXT4_IOC_CHECKPOINT implementerats, som tvingar diskning av alla vĂ€ntande transaktioner frĂ„n loggen och de relaterade buffertarna, samt överskriver det omrĂ„de som anvĂ€nds av loggen i lagringen. Ăndringen har förberetts inom ramen för initiativet att förhindra lĂ€ckage av information frĂ„n filsystem.
- I Btrfs har prestandaoptimeringar genomförts: genom att utesluta onödig loggning av utökade attribut under fsync har prestandan för intensiva operationer med utökade attribut ökat med upp till 17%. Dessutom har full synkronisering avbrutits vid utförande av avskÀrningsoperationer som inte berör extens och minskat tidsÄtgÄngen för operationen med 12%. En instÀllning har lagts till sysfs för att begrÀnsa in- och utgÄngskapaciteten vid kontroll av FS. ioctl-anrop för att avbryta operationer för storleksÀndring och borttagning av enheten har lagts till.
- I XFS har implementeringen av buffertcachets omarbetats, vilket har övergÄtt till allokering av minnessidor i batchlÀge. Effektiviteten i cachearbetet har ökat.
- I F2FS har en option lagts till för att arbeta i skrivskyddat lÀge och implementerats en cache-lÀgesfunktion för komprimerade block (compress_cache) för att öka prestandan vid slumpmÀssig lÀsning. Stöd för komprimering av filer som Äterspeglas i minnet genom operationen mmap() har lagts till. En ny monteringsoption nocompress har föreslagits för att selektivt stÀnga av filkomprimering efter mask.
- I exFAT-drivrutinen har arbete utförts för att förbÀttra kompatibiliteten med lagringsenheter frÄn vissa digitalkameror.
- Ett systemanrop, quotactl_fd(), har lagts till, vilket möjliggör hantering av kvoter inte via en speciell enhetsfil, utan genom att ange en filbeskrivare kopplad till filsystemet som kvoten gÀller.
- Gamla drivrutiner för blockenheter med IDE-grÀnssnitt har tagits bort frÄn kÀrnan, som lÀnge har ersatts av libata-subsystemet.
- Drivrutinen "raw", som ger 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 applikationer med hjÀlp av flaggan O_DIRECT.
- Minne och systemtjÀnster
- En ny schemalÀggningslÀge SCHED_CORE har implementerats i schemalÀggaren som möjliggör styrning över vilka processer som kan köras tillsammans pÄ en CPU-kÀrna. Varje process kan tilldelas en cookie-ID som definierar en förtroendeomrÄde mellan processerna (till exempel tillhörighet till en anvÀndare eller en behÄllare). Vid organisering av kodexekvering kan schemalÀggaren se till att endast processer relaterade till samma Àgare delar pÄ en CPU-kÀrna, vilket kan anvÀndas för att blockera vissa attacker av typen Spectre genom att förhindra körning av bÄde betrodda och icke-betrodda uppgifter i samma SMT-trÄd (Hyper Threading).
- För cgroup har stöd för operationen kill implementerats, vilket gör att alla processer kopplade till gruppen kan avslutas samtidigt (skicka SIGKILL) genom att skriva "1" i den virtuella filen cgroup.kill.
- Funktionerna relaterade till upptÀckten av delade lÄs ("split lock") har utvidgats, vilket uppstÄr vid Ätkomst till ojusterade data i minnet eftersom data under utförandet av en atomÀr instruktion korsar tvÄ CPU-cachelinjer. SÄdana lÄs leder till en betydande prestationsoch förut fanns möjligheten att tvÄngsavsluta den applikation som orsakade lÄset. I den nya versionen har en kÀrnkommandoradsparameter "split_lock_detect=ratelimit:N" lagts till, vilket gör det möjligt att definiera systemomfattande grÀnser för intensiteten av lÄsoperationer per sekund, efter överskridandet av vilket en process som blivit en kÀlla till delat lÄs istÀllet för att avslutas, kommer att stoppas i 20 ms.
- I cgroup-bandbreddskontrollern CFS (CFS bandwidth controller), som bestÀmmer hur mycket processortid som kan tilldelas varje cgroup, har möjligheten att definiera grÀnser begrÀnsade av en angiven giltighetstidsperiod införts, vilket möjliggör bÀttre reglering av latenskÀnsliga belastningar. 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 processgrupp att varje 100 ms anvÀnda 50 ms CPU-tid.
- Den initiala infrastrukturen för att skapa BPF-programladdare har lagts till, vilket i framtiden kommer att möjliggöra uppladdning av endast BPF-program som Àr signerade med en pÄlitlig digital nyckel.
- En ny futex-operation FUTEX_LOCK_PI2 har lagts till, vilken anvÀnder en monoton timer för att berÀkna tidsgrÀnsen som tar hÀnsyn till den tid systemet varit i vilolÀge.
- För RISC-V-arkitekturen har stöd för stora minnessidor (Transparent Huge-Pages) genomförts samt möjligheten att anvÀnda mekanismen KFENCE för att upptÀcka fel vid minneshantering.
- I systemanropet madvise() har flagg MADV_POPULATE_READ och MADV_POPULATE_WRITE lagts till för att generera "page fault" för alla minnessidor som Äterspeglas för lÀs- eller skrivoperationer, utan att faktiskt lÀsa eller skriva (prefault). AnvÀndningen av flaggorna kan vara till nytta för att minska fördröjningar i programmet, genom att proaktivt köra "page fault"-hanteraren för alla oallokerade sidor utan att vÀnta pÄ faktisk Ätkomst.
- I enhetstestningssystemet kunit har stöd för att köra tester i QEMU-miljö lagts till.
- Nya spÄrningsverktyg har lagts till: "osnoise" för att spÄra fördröjningar i applikationer orsakade av avbrottshantering, och "timerlat" för att ge detaljerad information om fördröjningar vid vÀckning pÄ grund av timer-signaler.
- Virtualisering och sÀkerhet
- Ett systemanrop, memfd_secret(), har lagts till, vilket möjliggör skapandet av ett privat minnesomrÄde i ett isolerat adressutrymme, synligt endast för Àgarprocessen, vilket inte Äterspeglas i andra processer och inte Àr direkt tillgÀngligt för kÀrnan.
- I systemet för filtrering av systemanrop seccomp, har möjligheten att anvÀnda en atomÀr operation för att skapa en filbeskrivare för en isolerad uppgift och returnera den vid hantering av systemanrop lagts till för att hantera blockeringshanterare i anvÀndarrummet. Den föreslagna operationen löser problemet med avbrott av hanteraren i anvÀndarrummet vid ankomst av signaler.
- En ny mekanism för att hantera resursbegrĂ€nsning i anvĂ€ndar-ID-namnrymden har lagts till, vilken kopplar separata rlimit-rĂ€knare till anvĂ€ndaren i "user namespace". Ăndringen löser problemet med tillĂ€mpning av gemensamma resurserĂ€knare nĂ€r en anvĂ€ndare startar processer i olika behĂ„llare.
- I hypervisorn KVM För ARM64-system har möjligheten att anvÀnda MTE (MemTag, Memory Tagging Extension) i gÀstdatorer lagts till, vilket möjliggör koppling av taggar till varje minnesallokeringsoperation och organiserar kontroll av riktigheten vid anvÀndning av pekare för att blockera exploatering av sÄrbarheter orsakade av Ätkomst till redan frigjorda minnesblock, buffertöverflöd, Ätkomst innan initiering och utanför aktuell kontext.
- De verktyg för pekarautentisering (Pointer Authentication) som tillhandahÄlls av ARM64-plattformen kan nu konfigureras separat för kÀrnan och anvÀndarutrymmet. 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 stöd lagts till för att anvÀnda drivrutiner för PCI-enheter med en virtuell PCI-buss, som implementeras av PCI-over-virtio-drivrutinen.
- För x86-system har stöd lagts till för det para-virtualiserade enheten virtio-iommu, som möjliggör att skicka IOMMU-förfrÄgningar, sÄsom ATTACH, DETACH, MAP och UNMAP, över virtio-transporter utan emulering av minnessidan.
- För Intel-CPU:er, frÄn Skylake-familjen till Coffee Lake, Àr anvÀndning av Intel TSX (Transactional Synchronization Extensions) som standard inaktiverat. Dessa tillÀgg erbjuder medel för att förbÀttra prestandan av flertrÄdade applikationer genom att dynamiskt undvika onödiga synkroniseringsÄtgÀrder. TillÀggen Àr inaktiverade pÄ grund av risken för Zombieload-attacker som manipulerar lÀckage av information genom sidokanaler som uppstÄr under drift av den asynkrona avbrottsmekanismen (TAA, TSX Asynchronous Abort).
- NĂ€tverkssystemet
- Integrationen i MPTCP (MultiPath TCP) har fortsatt, ett protokolltillÀgg för TCP som möjliggör att TCP-anslutningar levererar paket samtidigt över flera rutter via olika nÀtverksgrÀnssnitt som Àr kopplade till olika IP-adresser. Den nya versionen har lagt till mekanismer för att definiera egna trafikhashpolicyer för IPv4 och IPv6 (multipath hash policy), vilket ger möjlighet för anvÀndarutrymmet att specificera vilka fÀlt i paketen, inklusive inkapslade, som ska anvÀndas för att berÀkna hash-vÀrdet som bestÀmmer vÀgen för paketet.
- I den virtuella transporten virtio har stöd lagts till för SOCK_SEQPACKET-sockets (ordnad och pÄlitlig överföring av datagram).
- Möjligheterna för socket-mekanismen SO_REUSEPORT har utökats, vilket gör att flera lyssnande sockets kan ansluta till en och samma port för att ta emot anslutningar med en fördelning av inkommande förfrÄgningar över alla anslutna sockets via SO_REUSEPORT, vilket förenklar skapandet av flertrÄdade serverapplikationer. I den nya versionen har medel lagts till för att överföra kontrollen till en annan socket vid fel under behandling av en begÀran av den ursprungligen valda socketen (löser problemet med förlust av enskilda anslutningar vid omstart av tjÀnster).
- Utrustning
- I drivrutin amdgpu Àr stöd för nya serier av GPU AMD Radeon RX 6000 implementerat, som utvecklas under kodnamnen "Beige Goby" (Navi 24) och "Yellow Carp", samt förbÀttrat stöd för GPU Aldebaran (gfx90a) och APU Van Gogh. Möjligheten att arbeta med flera eDP-paneler samtidigt 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 varmkoppling av grafikkort (hot-unplug) har lagts till. För GPU Radeon RX 6000 (Navi 2x) och Àldre GPU AMD Àr stöd för energihanteringsmekanismen ASPM (Active State Power Management) som tidigare endast aktiverades för GPU Navi 1x, Vega och Polaris nu aktiverat som standard.
- För AMD-chips har stöd för delad virtuellt minne (SVM, shared virtual memory) baserat pÄ HMM (Heterogeneous memory management) lagts till, vilket möjliggör anvÀndning av enheter med egna minneshanteringsmoduler (MMU, memory management unit) som kan fÄ Ätkomst till huvudminnet. Med hjÀlp av HMM kan ett gemensamt adressutrymme mellan GPU och CPU organiseras, dÀr GPU kan fÄ Ätkomst till huvudminnet för processen.
- Stöd för teknologin AMD Smart Shift har lagts till, vilket dynamiskt Àndrar strömningsparametrarna för CPU och GPU pÄ bÀrbara datorer med AMD-chipset och grafikkort för att maximera prestandan vid spel, videoredigering och 3D-rendering.
- I drivrutinen i915 för Intel-grafikkort har stöd för Intel Alderlake P-chips aktiverats.
- Drivrutinen drm/hyperv för den virtuella grafiska adaptern Hyper-V har lagts till.
- Stöd för Raspberry Pi 400 allt-i-ett-datorn har lagts till.
- Drivrutinen dell-wmi-privacy har lagts till för att stödja hÄrdvarubrytare för kamera och mikrofon i Dell-bÀrbara datorer.
- För Lenovo-bÀrbara datorer har WMI-grÀnssnitt för att Àndra BIOS-instÀllningar via sysfs /sys/class/firmware-attributes/ lagts till.
- Stödet för enheter med USB4-grÀnssnitt har utökats.
- Stöd för ljudkort och codecs som AmLogic SM1 TOACODEC, Intel AlderLake-M, NXP i.MX8, NXP TFA1, TDF9897, Rockchip RK817, Qualcomm Quinary MI2 och Texas Instruments TAS2505 har lagts till. Stödet för ljud pÄ bÀrbara datorer frÄn HP och ASUS har förbÀttrats. Patchar har lagts till för att minska fördröjningar innan ljuduppspelningen pÄbörjas pÄ enheter med USB-grÀnssnitt.
KĂ€lla: opennet.ru
