Efter tvÄ mÄnaders utveckling presenterade Linus Torvalds kÀrnlansering Bland de mest anmÀrkningsvÀrda förÀndringarna finns: ny implementering av filsystemet exFAT, modulen bareudp för att skapa UDP-tunnlar, skydd baserat pÄ pekarautentisering för ARM64, möjligheten att bifoga BPF-program till LSM-hanterare, ny implementering av Curve25519, split-lock-detektor, BPF-kompatibilitet med PREEMPT_RT, borttagning av begrÀnsningen pÄ 80 tecken i koden, övervakning av CPU-temperatur i schemalÀggaren, möjlighet att anvÀnda clone() för att skapa processer i en annan cgroup, samt skydd mot skrivning till minne med hjÀlp av userfaultfd.
I den nya versionen har 15033 korrigeringar godtagits frÄn 1961 utvecklare,
patchstorleken Àr 39 MB (förÀndringarna berör 11590 filer, 570560 rader kod har lagts till,
297401 rader har tagits bort). Cirka 41% av alla Àndringar i 5.7
Àr relaterade till enhetsdrivrutiner, ungefÀr 16% av Àndringarna har
att göra med uppdatering av arkitekturanpassad kod, 13%
med nÀtverksstacken, 4% med filsystem och 4% med interna
kÀrnunderavdelningar.
:
- Disksubsystem, in- och utmatning och filsystem
- En ny implementering av exFAT-drivrutinen har lagts till, pÄ den aktuella kodbasen 'sdfat' (2.x), som utvecklas av Samsung för sina Android-smartphones. Den tidigare tillagda drivrutinen i kÀrnan var baserad pÄ utdaterad kod frÄn Samsung (version 1.2.9) och var ungefÀr 10% mindre prestandakraftig Àn den nya drivrutinen. TÀnk pÄ att tillÀgget av stöd för exFAT i kÀrnan blev möjligt efter att Microsoft gjorde specifikationerna offentliga och möjliggjorde gratis anvÀndning av patent för exFAT i Linux.
- I Btrfs har en ny ioctl()-kommando - BTRFS_IOC_SNAP_DESTROY_V2 - implementerats, vilket möjliggör borttagning av en del baserat pÄ dess identifierare. FullstÀndig stöd för kloning av inline-extent har sÀkerstÀllts. Antalet punkter för att Ängra omfördelningsoperationer har utökats, vilket har minskat lÄnga vÀntetider nÀr kommandot 'balance cancel' utförs. Identifieringen av bakÄtreferenser till extents har snabbats upp (t.ex. har tiden för att utföra testscenariet minskat frÄn en timme till flera minuter). Möjligheten att bifoga varje inode i filens extenttrÀd har lagts till. LÄsstrategin som anvÀnds vid skrivning till delsystem och vid undantag av NOCOW har omarbetats. Effektiviteten vid utförande av fsync för intervall har ökat.
- I XFS har metadata-kontrollen och fsck-körningen förbÀttrats för aktiva partitioner. Ett bibliotek för omskrivning av btree-strukturer har föreslagits, vilket i framtiden kommer att anvÀndas för omarbetning av xfs_repair och för att implementera ÄterstÀllningsmöjligheter utan att mounta partitionen.
- I CIFS har experimentellt stöd för att placera swap-partitioner i SMB3-lagringsutrymmen lagts till. POSIX-tillÀgg i readdir, definierade i specifikationen SMB3.1.1, har implementerats. Skrivprestanda för sidor med storlek 64KB har förbÀttrats nÀr cache=strict Àr aktiverad och versioner av protokollet 2.1+ anvÀnds.
- Filsystemet EXT4 har övergÄtt frÄn bmap och iopoll till att anvÀnda iomap.
- I F2FS har valfritt stöd för datakomprimering med zstd-algoritmen implementerats. Som standard anvÀnds LZ4-algoritmen för komprimering. Stödet för kommandot 'chattr -c commit' har lagts till. Tiden för montering visas nu. Ioctl F2FS_IOC_GET_COMPRESS_BLOCKS har lagts till för att hÀmta information om antalet komprimerade block. Information om komprimering visas nu via statx.
- I Ceph-filsystemet har möjlighet till lokal utförande av filskapande och borttagning (unlink) implementerats utan att vÀnta pÄ svar frÄn servern (asynkron drift). Denna Àndring gör att prestandan vid anvÀndning av rsync-verktyget avsevÀrt förbÀttras.
- I OVERLAYFS har möjlighet till att anvÀnda virtiofs som överordnat filsystem lagts till.
- kod för vÀggenomgÄng i VFS, omarbetad kod för att parsa symboliska lÀnkar och enhetlig vÀggenomgÄng av monteringspunkter.
- I SCSI-underystemet kan icke-privilegerade anvÀndare utföra ZBC-kommandon.
- I dm_writecache har möjligheten till gradvis rensning av cachen baserat pÄ parametern max_age, som anger den maximala livslÀngden för en block.
- I dm_integrity har stöd för operationen 'discard' lagts till.
- I null_blk kan feletsÀttning anvÀndas för att simulera fel under testning.
- möjlighet till att skicka udev-meddelanden om Àndringar i storleken pÄ blockenheten.
- NĂ€tverkssystemet
- I Netfilter har en funktion introducerats som avsevÀrt pÄskyndar behandlingen av stora matchningslistor (nftables set), dÀr kontroll av kombinationer av subnet, nÀtverksportar, protokoll och MAC-adresser krÀvs.
Optimeringar I nft_set_pipapo-modulen (PIle PAcket POlicies), som löser uppgiften att matcha paketets innehĂ„ll med de anvĂ€nda filtreringsreglerna av godtyckliga intervall i fĂ€ltets tillstĂ„nd, sĂ„som intervall av IP-adresser och nĂ€tverksportar (nft_set_rbtree och nft_set_hash hanterar matchning av intervall och direkt reflektion av vĂ€rden). Den vektoriserade versionen av pipapo med 256-bitars AVX2-instruktioner pĂ„ ett system med AMD Epyc 7402-processor visade en prestationsökning pĂ„ 420 % vid analys av 30 000 poster som inkluderade port-protokollpar. Ăkningen vid matchning av paret av nĂ€tverksadress och portnummer vid analys av 1000 poster var 87 % för IPv4 och 128 % för IPv6. - bareudp-modulen, som gör det möjligt att kapsla in olika L3-protokoll i en UDP-tunnel, sĂ„som MPLS, IP och NSH.
- Integrationen av MPTCP (MultiPath TCP) komponenter fortsÀtter, en utvidgning av TCP-protokollet för att organisera TCP-anslutningar med leverans av paket simultant över flera vÀgar genom olika nÀtverksgrÀnssnitt kopplade till olika IP-adresser.
- Stöd för mekanismer för hÄrdvaruaccelerering av inkapsling av Ethernet-ramar i 802.11 (Wi-Fi).
- Vid flytt av en enhet frÄn ett nÀtverkssynonymrum (network namespace) till ett annat sÀkerstÀlls justering av ÄtkomstrÀttigheter och Àgare av motsvarande filer i sysfs.
- Möjlighet att anvÀnda flaggan SO_BINDTODEVICE för anvÀndare utan root-rÀttigheter har tillhandahÄllits.
- Den tredje delen av patcharna har accepterats, vilket översÀtter verktyget ethtool frÄn ioctl() till anvÀndning av netlink-grÀnssnittet. Det nya grÀnssnittet förenklar tillÀgg av utvidgningar, förbÀttrar felhantering, möjliggör meddelanden vid statusÀndring, underlÀttar interaktionen mellan kÀrnan och anvÀndarutrymmet och minskar antalet synkroniserade namngivna listor.
- Möjlighet att anvÀnda speciella hÄrdvaruacceleratorer för att utföra operationsspÄrning har lagts till.
- I netfilter en hook för att koppla klassificerare av utgÄende paket (egress), som kompletterar den tidigare nÀrvarande hooken för inkommande paket (ingress).
- I Netfilter har en funktion introducerats som avsevÀrt pÄskyndar behandlingen av stora matchningslistor (nftables set), dÀr kontroll av kombinationer av subnet, nÀtverksportar, protokoll och MAC-adresser krÀvs.
- Virtualisering och sÀkerhet
- En hÄrdvaruimplementation av pekarautentisering har lagts till (), som anvÀnder specialiserade ARM64 CPU-instruktioner för att skydda mot attacker som anvÀnder teknik för ÄtervÀnder-orienterad programmering (ROP), dÀr angriparen inte försöker placera sin kod i minnet, utan arbetar med redan existerande maskininstruktioner i inlÀsta bibliotek som avslutas med en ÄtergÄngsinstruktion. Skyddet handlar om att anvÀnda digitala signaturer för att verifiera ÄtergÄngsadresser pÄ kÀrnnivÄ. Signaturen lagras i de oanvÀnda övre bitarna av sjÀlva pekaren. Till skillnad frÄn programvarulösningar sker skapandet och verifieringen av digitala signaturer med hjÀlp av speciella CPU-instruktioner.
- möjligheten att skydda minnesomrÄdet frÄn skrivning med hjÀlp av systemanropet userfaultfd(), avsett för hantering av sidfel (Ätkomst till obestÀmda minnessidor) i anvÀndarutrymmet. Idén Àr att anvÀnda userfaultfd() Àven för att spÄra övertrÀdelser av Ätkomst till sidor som Àr mÀrkta som skrivskyddade och anropa en hanterare som kan reagera pÄ sÄdana skrivförsök (till exempel för att hantera Àndringar i processen för att skapa live-snapshots av körande processer, faststÀlla tillstÄnd vid nedladdning av minnesdumpningar till disk, implementera delat minne, spÄra förÀndringar i minnet). Funktionalitet anvÀndningen av mprotect() i kombination med signalhanteraren SIGSEGV, men fungerar avsevÀrt snabbare.
- I SELinux har parametern "checkreqprot" förklarats som förÄldrad, vilket gör det möjligt att stÀnga av skyddskontrollen av minnet vid hantering av regler (tillÀt anvÀndning av exekverbara minnesomrÄden, oavsett bestÀmmelserna i de angivna reglerna). Symboliska lÀnkar till kernfs tillÄts Àrva kontext frÄn förÀldrakataloger.
- I sammansĂ€ttningen modul , vilket gör det möjligt att bifoga BPF-program till alla LSM-hookar i kĂ€rnan. Ăndringen möjliggör skapandet av LSM-moduler (Linux Security Module) i form av BPF-program för att lösa uppgifter inom revision och mandatkontroll.
- prestandaoptimering av /dev/random genom batchöverföring av CRNG-vÀrden istÀllet för separata instruktionanrop för RNG. FörbÀttrad funktionalitet för getrandom och /dev/random pÄ ARM64-system som erbjuder RNG-instruktioner.
- Implementering av den elliptiska kurvan Curve25519 till en variant frÄn biblioteket , för vilken matematisk bevis för formell verifiering av pÄlitlighet.
- mekanism för att informera om lediga minnessidor. Genom denna mekanism kan gÀstsystem överföra information till vÀrdsystemet om sidor som inte lÀngre anvÀnds, och dessa sidor kan vÀrden Äterta.
- I vfio/pci stöd för SR-IOV (Single-Root I/O Virtualization).
- Minne och systemtjÀnster
- FrĂ„n 80 till 100 tecken begrĂ€nsning pĂ„ maximal radlĂ€ngd i kĂ€lltexter. Utvecklare rekommenderas fortfarande att hĂ„lla sig inom 80 tecken per rad, men det Ă€r nu inte en strikt grĂ€ns. Dessutom kommer överskridande av radlĂ€ngdgrĂ€nsen nu att leda till att en varning ges vid kompilering endast om verktyget checkpatch körs med alternativet "--strictâ. Denna Ă€ndring gör det möjligt för utvecklare att kĂ€nna sig mer avslappnade vid kodjustering och onödig radbrytning, lĂ€sbarheten av koden och sökningen.
- stöd för blandat bootlÀge EFI, som gör det möjligt att starta en 64-bitars kÀrna frÄn 32-bitars firmware som körs pÄ en 64-bitars CPU utan att anvÀnda en specialiserad bootloader.
- system för att upptÀcka och felsöka split-locks (""), som uppstÄr vid Ätkomst till ojusterade data i minnet, eftersom data vid utförande av en atomisk instruktion korsar tvÄ cachelinjer i CPU: n. SÄdana lÄsningar leder till en avsevÀrd prestandaförlust (upp till 1000 cykler lÄngsammare Àn en atomÀr operation med data som ligger i en cachelinje). Beroende pÄ bootparametern "split_lock_detect" kan kÀrnan upptÀcka sÄdana lÄsningar i realtid och ge varningar eller skicka en SIGBUS-signal till den applikation som orsakade lÄsningen.
- I schemalÀggaren för uppgifter finns spÄrning av temperaturgivarsensorer () och realiseringen av överhettningsövervakning vid planering av uppgifter. Genom att anvÀnda den statistik som ges kan temperaturprocessorn (thermal governor) justera den maximala CPU-frekvensen vid överhettning, och schemalÀggaren tar nu hÀnsyn till den reducerade berÀkningskraften pÄ grund av sÄdana frekvensjusteringar vid schemalÀggning av uppgifter (tidigare reagerade schemalÀggaren pÄ frekvensÀndringar med viss fördröjning, och beslutade baserat pÄ överdrivna antaganden om tillgÀngliga berÀkningsresurser).
- I schemalĂ€ggaren anvĂ€nds för att övervaka belastningen, vilket gör det möjligt att korrekt bedöma belastningen oavsett den aktuella CPU-frekvensen. Ăndringen möjliggör en mer exakt prognos av uppgifternas beteende under förhĂ„llanden med dynamisk förĂ€ndring av spĂ€nning och CPU-frekvens. Till exempel, en uppgift som anvĂ€nde 1/3 av CPU-resurserna vid 1000 MHz, kommer att anvĂ€nda 2/3 av resurserna vid en sĂ€nkning av frekvensen till 500 MHz, vilket tidigare skapade en felaktig uppfattning om att den arbetade med full kapacitet (d.v.s. uppgifterna för schemalĂ€ggaren verkade större endast pĂ„ grund av sĂ€nkningen av frekvensen, vilket ledde till felaktiga beslut i schedutil cpufreq governor).
- Intel P-state-drivrutinen, som ansvarar för valet av prestandalÀgen, har övergÄtt till att anvÀnda .
- Möjligheten att anvÀnda BPF-underhÄllsystemet i kÀrnan under realtidslÀge (PREEMPT_RT) har realiserats. Tidigare krÀvdes att BPF stÀngdes av vid aktivering av PREEMPT_RT.
- En ny typ av BPF-program â BPF_MODIFY_RETURN â har lagts till, som kan kopplas till funktioner i kĂ€rnan och Ă€ndra vĂ€rdet som returneras av dessa funktioner.
- Tillagd anvÀndningen av systemanropet clone3() för att skapa en process i en cgroup som skiljer sig frÄn den överordnade cgroupen, vilket möjliggör för den överordnade processen att tillÀmpa begrÀnsningar och aktivera redovisning direkt efter skapandet av en ny process eller trÄd. Till exempel kan tjÀnstehanteraren direkt allokera nya tjÀnster i separata cgroups, och nya processer som placeras i
- i Kbuild stöd för miljövariabeln 'LLVM=1' för att vÀxla till Clang/LLVM-verktyget vid kompilering av kÀrnan. Kraven för versionen av binutils (2.23) har höjts.
- I debugfs har en sektion /sys/kernel/debug/kunit/ lagts till med resultaten av kunit-tester.
- En parameter för laddning av kÀrnan pm_debug_messages har lagts till (analog till /sys/power/pm_debug_messages), som inkluderar debugginginformation om hur strömhanteringssystemet fungerar (anvÀndbart för att felsöka problem med vilolÀge och vÀntelÀge).
- I grÀnssnittet för asynkron in-/utmatning fÄtt stöd för och .
- Profileringen av cgroup har förbÀttrats med hjÀlp av verktygssatsen perf. Tidigare kunde perf endast profilera uppgifter i en viss cgroup och kunde inte ta reda pÄ vilken cgroup den nuvarande provtagningen tillhörde. Nu fÄr perf information om cgroup för varje provtagning, vilket gör det möjligt att profilera mer Àn en cgroup och tillÀmpa sortering efter
cgroup i rapporterna. - I cgroupfs, ett pseudo-FS för hantering av cgroups, har stöd för utökade attribut (xattrs) lagts till, vilket gör det möjligt att till exempel lÀmna ytterligare information för hanterare i anvÀndarutrymmet.
- I cgroup minneskontroller har stöd för rekursiv skydd av vÀrdet "memory.low" införts, vilket reglerar den minimi mÀngd RAM-minne som tillhandahÄlls för gruppmedlemmarna. Vid montering av hierarkin cgroup med alternativet "memory_recursiveprot" kommer vÀrdet "memory.low", som har stÀllts in för nedre noder, automatiskt att distribueras för alla underordnade noder.
- ramverket Uacce (Unified/User-space-access-intended Accelerator Framework) för delning av virtuella adresser (SVA, Shared Virtual Addressing) mellan CPU och kringutrustning, vilket gör det möjligt för hÄrdvaruacceleratorer att fÄ Ätkomst till datakonstruktioner i huvud-CPU:n.
- HÄrdvaruarkitekturer
- För ARM-arkitekturen har möjligheten till varm borttagning av minne implementerats.
- För RISC-V-arkitekturen har stöd för varm anslutning och frÄnkoppling av CPU (CPU hotplug) lagts till. För 32-bitars RISC-V har eBPF JIT implementerats.
- Möjligheten att anvÀnda 32-bitars ARM-system för att köra KVM-gÀstmiljöer har tagits bort.
- Den "fiktiva" implementeringen av NUMA för s390-arkitekturen har avlÀgsnats, eftersom inga anvÀndningsscenarier för att uppnÄ prestandaförbÀttring har hittats.
- För ARM64 har stöd för tillÀgget AMU (Activity Monitors Unit), definierat i ARMv8.4, lagts till och erbjuder prestanda rÀknare som anvÀnds för att berÀkna skalningskorrektioner av frekvens i schemalÀggaren.
- Utrustning
- stöd för vDPA-enheter som anvÀnder en datakanal som Àr i enlighet med virtio-specifikationerna. vDPA-enheter kan vara bÄde fysiskt ansluten hÄrdvara och emulerade virtuella enheter.
- I GPIO-underkategorin ett nytt ioctl()-kommando för att övervaka förÀndringar, vilket gör det möjligt att informera processen om förÀndringar i tillstÄndet för vilken GPIO-linje som helst. Som ett exempel pÄ hur det nya kommandot anvÀnds verktyget gpio-watch.
- I DRM-drivrutinen i915 för Intel-grafikkort har standardstödet för Tigerlake-chips ('Gen12') lagts till och inledande stöd för OLED-bakgrundsbelysning. Stödet för Ice Lake, Elkhart Lake, Baytrail och Haswell-chips har förbÀttrats.
- I amdgpu-drivrutinen möjlighet att ladda firmware till USBC-chippen för ASIC. Stödet för AMD Ryzen 4000 'Renoir'-chips har förbÀttrats. Stöd för OLED-panelhantering har lagts till. Visning av firmwarestatus i debugfs har sÀkerstÀllts.
- I DRM-drivrutinen vmwgfx för VMware-virtualiseringssystem har stöd för OpenGL 4 i gÀstsysten lagts till (tidigare stöddes OpenGL 3.3).
- En ny DRM-drivrutin tidss för TI Keystone-plattformens displaysystem har lagts till.
- Drivrutiner för LCD-paneler har lagts till: Feixin K101 IM2BA02, Samsung s6e88a0-ams452ef01, Novatek NT35510, Elida KD35T133, EDT, NewEast Optoelectronics WJFH116008A, Rocktech RK101II01D-CT, Frida FRD350H54004.
- I strömhanteringssystemet stöd för Intel Jasper Lake (JSL)-plattformen baserad pÄ Atom.
- Stöd för bÀrbara datorer Pinebook Pro baserade pÄ Rockchip RK3399, surfplattor Pine64 PineTab och smartphones baserade pÄ Allwinner A64.
- Stöd för nya ljudkodekar och chip har lagts till:
Amlogic AIU, Amlogic T9015, Texas Instruments TLV320ADCX140, Realtek RT5682, ALC245, Broadcom BCM63XX I2S, Maxim MAX98360A, Presonus Studio 1810c, MOTU MicroBook IIc. - Stöd för ARM-kort och Qualcomm Snapdragon 865 (SM8250), IPQ6018, NXP i.MX8M Plus, Kontron 'sl28', 11 varianter av i.MX6 TechNexion Pico, tre nya varianter av Toradex Colibri, Samsung S7710 Galaxy Xcover 2 baserad pÄ ST-Ericsson u8500, DH Electronics DHCOM SoM och PDK2, Renesas M3ULCB, Hoperun HiHope, Linutronix Testbox v2, PocketBook Touch Lux 3.
KĂ€lla: opennet.ru
