Linuxi 5.7 kerneli väljalase

Pärast kahekuulist arendustööd Linus Torvalds tutvustatud kerneli väljalase Linux 5.7. Märkimisväärsemate muudatuste hulgas: uus exFAT-failisüsteemi juurutamine, bareudp-moodul UDP-tunnelite loomiseks, ARM64 kursori autentimisel põhinev kaitse, BPF-programmide lisamise võimalus LSM-käitlejatele, Curve25519 uus juurutus, split- lukudetektor, BPF-i ühilduvus PREEMPT_RT-ga, 80-tähemärgilise rea suuruse piirangu eemaldamine koodist, protsessori temperatuuri indikaatorite arvestamine ülesannete planeerijas, võimalus kasutada clone()-d protsesside loomiseks teises crühmas, kaitse kirjutamise eest mällu, kasutades userfaultfd.

Uus versioon sisaldab 15033 1961 parandust XNUMX arendajalt,
plaastri suurus - 39 MB (muudatused mõjutasid 11590 faili, lisati 570560 koodirida,
297401 rida eemaldatud). Umbes 41% kõigist punktis 5.7
muudatused on seotud seadme draiveritega, ligikaudu 16% muudatustest on
suhtumine riistvaraarhitektuurile omase koodi värskendamisse, 13%
seotud võrgupinuga, 4% failisüsteemidega ja 4% sisemisega
kerneli alamsüsteemid.

Kõik uuendused:

  • Ketta alamsüsteem, I/O ja failisüsteemid
    • Lisatud uus exFAT-draiveri juurutamine, asutatud põhineb praegusel "sdfat" (2.x) koodibaasil, mille Samsung on oma Android-nutitelefonide jaoks välja töötanud. Varem kernelile lisatud draiver põhines Samsungi pärandkoodil (versioon 1.2.9) ja jäi jõudluses uuest draiverist alla umbes 10%. Tuletagem meelde, et exFAT-i toe lisamine kernelile sai võimalikuks pärast Microsofti опубликовала avalikud spetsifikatsioonid ja tegid exFAT-i patendid Linuxis kasutustasuta kasutamiseks kättesaadavaks.
    • Btrfs rakendab uut käsku ioctl() - BTRFS_IOC_SNAP_DESTROY_V2, mis võimaldab kustutada alajaotuse selle identifikaatori järgi. Pakutakse täielikku tuge sisemise ulatuse kloonimiseks. Suurenenud on ümberjagamistoimingute tühistamispunktide arv, mis on vähendanud pikki ootamisi käsu 'saldo tühistamise' täitmisel. Kiirendatud on tagasilinkide määramist ulatusse (näiteks testskripti täitmise aeg on vähenenud tunnilt mitme minutini). Lisati võimalus lisada faili ulatused puu igale sisendile. Alamsektsioonidesse kirjutamisel ja NOCOW välistamisel kasutatav blokeerimisskeem on ümber kujundatud. Parem fsynci täitmise tõhusus vahemike jaoks.
    • XFS on täiustanud aktiivsete partitsioonide metaandmete kontrolli ja fsck-d. Btree struktuuride ümberehitamiseks on pakutud välja teek, mida tulevikus kasutatakse xfs_repair ümbertöötamiseks ja taastamise võimaluse juurutamiseks ilma partitsiooni lahti ühendamata.
    • CIFS-ile on lisatud eksperimentaalne tugi vahetuspartitsiooni paigutamiseks SMB3-mäluseadmetesse. SMB3.1.1 spetsifikatsioonis määratletud readdir-i juurutatud POSIX-i laiendused. Parem kirjutamisjõudlus 64KB lehtede jaoks, kui režiim cache=strict on lubatud ja kasutatakse protokolli versioone 2.1+.
    • FS EXT4 on bmapist ja iopollist üle viidud iomapi kasutamisse.
    • F2FS pakub valikulist tuge andmete tihendamiseks zstd-algoritmi abil. Vaikimisi kasutatakse tihendamiseks LZ4 algoritmi. Lisatud tugi käsule "chattr -c commit". Paigaldusaja näidik on olemas. Lisatud ioctl F2FS_IOC_GET_COMPRESS_BLOCKS, et saada teavet tihendatud plokkide arvu kohta. Lisatud tihendusandmete väljund statx-i kaudu.
    • Failisüsteem Ceph on lisanud võimaluse teha lokaalselt failide loomise ja kustutamise toiminguid (unlink) ilma serverilt vastust ootamata (töötab asünkroonses režiimis). Näiteks võib muudatus rsynci utiliidi käitamisel jõudlust oluliselt parandada.
    • OVERLAYFS-ile on lisatud võimalus kasutada virtiofe tipptaseme failisüsteemina.
    • Ümber kirjutatud tee läbimise kood VFS-is, sümboolse lingi parsimise kood on ümber töödeldud ja ühenduspunkti läbimine on ühtlustatud.
    • Scsi alamsüsteemis privilegeerimata kasutajatele lubatud ZBC käskude täitmine.
    • dm_writecache'is rakendatud võimalus vahemälu järk-järgult tühjendada parameetri max_age alusel, mis määrab ploki maksimaalse eluea.
    • In dm_integrity lisatud toimingu "viskamine" tugi.
    • In null_blk lisatud vigade asendamise tugi, et simuleerida rikkeid testimise ajal.
    • Lisatud võimalus saata udev-i teateid seadme suuruse muutmise kohta.
  • Võrgu alamsüsteem
    • Netfilter kaasas muutused, kiirendades oluliselt suurte vasteloendite (nftables sets) töötlemist, mis nõuavad alamvõrkude, võrguportide, protokolli ja MAC-aadresside kombinatsiooni kontrollimist.
      Optimeerimised kasutusele võetud moodulisse nft_set_pipapo (PIle PAcket POLicies), mis lahendab paketi sisu sobitamise probleemi filtreerimisreeglites kasutatavate suvaliste väljaolekuvahemikega, nagu IP ja võrgupordi vahemikud (nft_set_rbtree ja nft_set_hash manipuleerivad intervallide sobitamist ja väärtuste otsest peegeldust ). 256-bitiste AVX2 juhiste abil vektoriseeritud pipapo versioon AMD Epyc 7402 protsessoriga süsteemis näitas 420 tuhande kirje, sealhulgas pordi-protokolli kombinatsioonide analüüsimisel, 30% jõudluse kasvu. Kui võrrelda alamvõrgu ja pordi numbri kombinatsiooni 1000 kirje sõelumisel, oli kasv IPv87 puhul 4% ja IPv128 puhul 6%.

    • Lisatud bareudp moodul, mis võimaldab UDP tunnelisse kapseldada erinevaid L3 protokolle, nagu MPLS, IP ja NSH.
    • Jätkus MPTCP (MultiPath TCP) komponentide integreerimine, mis on TCP-protokolli laiendus TCP-ühenduse toimimise korraldamiseks koos pakettide üheaegse edastamisega mitmel marsruudil erinevate IP-aadressidega seotud erinevate võrguliideste kaudu.
    • Lisatud riistvarakiirendusmehhanismide tugi Etherneti kaadrite 802.11 (Wi-Fi) kapseldamiseks.
    • Seadme teisaldamisel ühest võrgu nimeruumist teise korrigeeritakse sysf-is olevate vastavate failide juurdepääsuõigusi ja omandiõigust.
    • Lisati võimalus kasutada lippu SO_BINDTODEVICE mitte-juurkasutajate jaoks.
    • Kolmas osa paikadest on vastu võetud, teisendades ethtool tööriistakomplekti ioctl()-st netlinki liidese kasutamiseks. Uus liides muudab laienduste lisamise lihtsamaks, parandab veakäsitlust, võimaldab saata teateid oleku muutumisel, lihtsustab tuuma ja kasutajaruumi vahelist suhtlust ning vähendab sünkroonimist vajavate nimeliste loendite arvu.
    • Lisatud võimalus kasutada ühenduse jälgimise toimingute tegemiseks spetsiaalseid riistvarakiirendeid.
    • Netfiltris lisatud konks väljaminevate pakettide klassifikaatorite ühendamiseks (väljapääs), mis täiendas varem olemasolevat sissetulevate pakettide konksu (sisenemine).
  • Virtualiseerimine ja turvalisus
    • Lisatud osuti autentimise riistvararakendus (Osuti autentimine), mis kasutab spetsiaalseid ARM64 protsessori käske, et kaitsta rünnete eest, kasutades tagastusorienteeritud programmeerimise (ROP) tehnikaid, mille puhul ründaja ei püüa oma koodi mällu paigutada, vaid töötab masinakäskude tükkidega, mis on juba laaditud teekides saadaval, lõpetades koos kontrolli tagastusjuhisega. Turvalisus taandub digitaalallkirjade kasutamisele tagastusaadresside kontrollimiseks kerneli tasemel. Signatuur salvestatakse kursori enda kasutamata ülemistesse bittidesse. Erinevalt tarkvararakendustest toimub digitaalallkirjade loomine ja kontrollimine CPU spetsiaalsete juhiste abil.
    • Lisatud võimalus kaitsta mälupiirkonda kirjutamise eest, kasutades süsteemikutset userfaultfd(), mis on loodud käsitlema lehetõrkeid (juurdepääs eraldamata mälulehtedele) kasutajaruumis. Idee on kasutada userfaultfd() nii kirjutuskaitsega märgistatud lehtede juurdepääsurikkumiste tuvastamiseks kui ka töötleja kutsumiseks, mis suudab sellistele kirjutamiskatsetele reageerida (näiteks muudatuste käsitlemiseks jooksvate protsesside reaalajas hetktõmmiste loomisel, olek jäädvustamine mälu kettale tõmmates, ühismälu rakendamine, mälumuutuste jälgimine). Funktsionaalsus samaväärne mprotect() kasutamine koos SIGSEGV signaalitöötlejaga, kuid see töötab märgatavalt kiiremini.
    • SELinux on aegunud parameetri "checkreqprot", mis võimaldab reeglite töötlemisel mälukaitse kontrollid keelata (võimaldab kasutada käivitatavaid mälualasid, olenemata reeglites määratud reeglitest). Kernfsi sümlinkidel on lubatud pärida oma ülemkataloogide kontekst.
    • Struktuur sisse lülitatud moodul KRSI, mis võimaldab ühendada BPF-programme tuuma mis tahes LSM-konksu külge. Muudatus võimaldab luua LSM-mooduleid (Linux Security Module) BPF-programmide kujul, et lahendada auditiprobleeme ja kohustuslikku juurdepääsukontrolli.
    • Läbi viidud Optimeerib /dev/random toimivust, komplekteerides CRNG väärtusi, selle asemel et kutsuda RNG juhiseid eraldi. Getrandom ja /dev/random parem jõudlus RNG-juhiseid pakkuvates ARM64 süsteemides.
    • Elliptilise kõvera rakendamine Curve25519 asendatud valiku eest raamatukogust HACL, mille jaoks antud formaalse usaldusväärsuse kontrolli matemaatiline tõend.
    • Lisatud mehhanism vabade mälulehtede kohta teavitamiseks. Seda mehhanismi kasutades saavad külalissüsteemid edastada hostsüsteemile teavet lehtede kohta, mida enam ei kasutata, ja host saab lehe andmed tagasi võtta.
    • Vfio/pci-s lisatud SR-IOV (Single-Root I/O Virtualization) tugi.
  • Mälu- ja süsteemiteenused
    • 80 kuni 100 tähemärki suurenenud lähtetekstide maksimaalse reapikkuse piirang. Samal ajal soovitatakse arendajatel siiski jääda 80 tähemärgi piiresse rea kohta, kuid see pole enam range piirang. Lisaks annab rea suuruse piirangu ületamine nüüd järguhoiatuse ainult siis, kui kontrollpaiga käivitatakse valikuga '--strict'. Muudatus võimaldab arendajate tähelepanu mitte häirida manipuleerimine tühikutega ja tunnete end koodi joondamisel vabamalt, samuti takistab liigne joonte katkemine, häiriv koodi mõistmine ja otsing.
    • Lisatud EFI segakäivitusrežiimi tugi, mis võimaldab laadida 64-bitise kerneli 32-bitisest püsivarast, mis töötab 64-bitisel CPU-l, ilma spetsiaalset alglaadurit kasutamata.
    • Kaasas süsteem jagatud lukkude tuvastamiseks ja silumiseks (“poolitatud lukk"), mis tekib mälus joondamata andmetele juurdepääsul, kuna aatomikäsu täitmisel läbivad andmed kaks protsessori vahemälu rida. Selline blokeerimine toob kaasa märkimisväärse jõudluse löögi (1000 tsüklit aeglasem kui aatomoperatsioon andmetega, mis tabavad ühte vahemälu rida). Olenevalt alglaadimisparameetrist "split_lock_detect" suudab kernel sellised lukud käigupealt tuvastada ja anda hoiatusi või saata SIGBUS-signaali lukustust põhjustavale rakendusele.
    • Tööülesannete planeerija võimaldab jälgida temperatuuriandureid (Termiline rõhk) ja rakendatakse, võttes ülesannete paigutamisel arvesse ülekuumenemist. Kasutades pakutavat statistikat, saab termoregulaator reguleerida ülekuumenemise korral CPU maksimaalset sagedust ja ülesannete planeerija võtab nüüd ülesannete käivitamise ajastamisel arvesse arvutusvõimsuse vähenemist, mis on tingitud sellisest sageduse vähenemisest (varem reageeris plaanija muudatustele sagedusega teatud viivitusega, tehes mõnda aega otsuseid olemasolevate arvutusressursside kohta tehtud ülepaisutatud eelduste põhjal).
    • Tööülesannete planeerija sisaldab muutumatud näitajad koormuse jälgimine, mis võimaldab teil koormust õigesti hinnata, sõltumata praegusest protsessori töösagedusest. Muudatus võimaldab täpsemalt ennustada ülesannete käitumist pinge ja protsessori sageduse dünaamiliste muutuste tingimustes. Näiteks ülesanne, mis tarbis 1/3 protsessori ressurssidest sagedusel 1000 MHz, tarbib 2/3 ressurssidest, kui sagedus langeb 500 MHz-ni, mis tekitas varem vale eelduse, et see töötab täisvõimsusel (st ilmusid ülesanded suuremaks planeerijale ainult sageduse vähendamisega, mis tõi kaasa valede otsuste tegemise schedutil cpufreq kuberneris).
    • Intel P-state draiver, mis vastutab jõudlusrežiimide valimise eest, on kasutusele võetud sõiduplaan.
    • Rakendatud on võimalus kasutada BPF-i alamsüsteemi, kui kernel töötab reaalajas (PREEMPT_RT). Varem, kui PREEMPT_RT oli lubatud, pidi BPF olema keelatud.
    • Lisatud on uut tüüpi BPF-programm - BPF_MODIFY_RETURN, mida saab ühendada kernelis oleva funktsiooniga ja muuta selle funktsiooni tagastatavat väärtust.
    • Lisatud võimalus Süsteemikutsungi clone3() kasutamine, et luua cgroupis protsess, mis erineb ema-cgroupist, võimaldades ülemprotsessil rakendada piiranguid ja lubada arvestust kohe pärast uue protsessi või lõime loomist. Näiteks saab teenusehaldur uusi teenuseid otse eraldada eraldi c-gruppidele ja uued protsessid, kui need paigutatakse "külmutatud" c-gruppidesse, peatatakse kohe.
    • Kbuildis lisatud keskkonnamuutuja "LLVM=1" tugi, et lülituda kerneli loomisel tööriistakomplektile Clang/LLVM. Binutils versiooni nõudeid on tõstetud (2.23).
    • Debugfidesse on lisatud jaotis /sys/kernel/debug/kunit/ kunit testide tulemustega.
    • Lisatud kerneli alglaadimisparameeter pm_debug_messages (analoogne /sys/power/pm_debug_messages), mis võimaldab väljastada silumisinfot toitehaldussüsteemi töö kohta (kasulik talveune- ja ooterežiimi probleemide silumisel).
    • Asünkroonse I/O liidese juurde io_uring toetus lisatud splaiss() и aatomipuhvri valik.
    • Täiustatud cgroup-profiilide koostamine, kasutades perf-tööriistakomplekti. Varem sai perf profileerida ülesandeid ainult konkreetses c-rühmas ja ei saanud teada, millisesse c-gruppi praegune valim kuulub. perf saab nüüd iga proovi kohta teavet cgroup'i kohta, mis võimaldab teil profileerida rohkem kui ühe cgroup'i ja rakendada sortimist
      cgroup aruannetes.

    • cgroupide haldamiseks mõeldud pseudo-FS cgroupfs on lisanud laiendatud atribuutide (xattrs) toe, millega saab näiteks kasutajaruumi töötlejatele lisainfot jätta.
    • cgroupi mälukontrolleris lisatudja toetus väärtuse "memory.low" rekursiivsele kaitsele, mis reguleerib grupi liikmetele pakutava RAM-i minimaalset hulka. Kui ühendate cgroupi hierarhia valikuga "memory_recursiveprot", jaotatakse alumiste sõlmede jaoks määratud "memory.low" väärtus automaatselt kõigile alamsõlmedele.
    • Lisatud Uacce (Unified/User-space-access-inded Accelerator Framework) raamistik virtuaalsete aadresside (SVA, Shared Virtual Addressing) jagamiseks protsessori ja välisseadmete vahel, võimaldades riistvarakiirenditel pääseda juurde põhiprotsessori andmestruktuuridele.
  • Riistvara arhitektuurid
    • ARM-arhitektuuri jaoks on rakendatud mälu kuumtõmbamise võimalus.
    • RISC-V arhitektuuri jaoks on lisatud protsessorite kuumühendamise ja eemaldamise tugi (CPU hotplug). 32-bitise RISC-V jaoks on rakendatud eBPF JIT.
    • Võimalus kasutada KVM-i külaliskeskkondade käitamiseks 32-bitiseid ARM-süsteeme on eemaldatud.
    • Eemaldati s390 arhitektuuri näiv NUMA teostus, mille puhul ei leitud ühtegi kasutusjuhtumit jõudluse parandamiseks.
    • ARM64 jaoks on lisatud tugi laiendusele AMU (Activity Monitors Unit), mis on defineeritud ARMv8.4-s ja mis pakub jõudlusloendureid, mida kasutatakse sageduse skaleerimise parandustegurite arvutamiseks tegumiplaanis.
  • Оборудование
    • Lisatud tugi vDPA-seadmetele, mis kasutavad virtio spetsifikatsioonidele vastavat andmevahetuskanalit. vDPA-seadmed võivad olla kas füüsiliselt ühendatud seadmed või tarkvara emuleeritud virtuaalsed seadmed.
    • GPIO alamsüsteemis ilmus uus ioctl() käsk muudatuste jälgimiseks, mis võimaldab teil protsessi teavitada mis tahes GPIO rea oleku muutustest. Näitena uue käsu kasutamisest soovitas gpio-watch utiliit.
    • Inteli videokaartide i915 DRM-draiveris kaasa arvatud Tigerlake'i („Gen12“) kiipide vaiketugi ja lisatud esialgne tugi OLED-taustvalgustuse juhtimisele. Parem tugi Ice Lake'i, Elkhart Lake'i, Baytraili ja Haswelli kiipide jaoks.
    • Amdgpu draiveris lisatud võimalus laadida püsivara ASIC-i USBC-kiibile. Täiustatud tugi AMD Ryzen 4000 "Renoir" kiipidele. Nüüd on olemas tugi OLED-paneelide juhtimiseks. Pakutakse püsivara oleku kuvamist silumisfailides.
    • VMware virtualiseerimissüsteemide vmwgfx DRM-draiverile on lisatud võimalus kasutada OpenGL 4 külalissüsteemides (varem oli toetatud OpenGL 3.3).
    • TI Keystone'i platvormi kuvasüsteemi jaoks on lisatud uus DRM-i draiveri tids.
    • Lisatud draiverid LCD-paneelidele: Feixin K101 IM2BA02, Samsung s6e88a0-ams452ef01, Novatek NT35510, Elida KD35T133, EDT, NewEast Optoelectronics WJFH116008A, Rocktech F101RD01RD350
    • Toitehaldussüsteemi juurde lisatud tugi Atomil põhinevale Intel Jasper Lake'i (JSL) platvormile.
    • Lisatud tugi Pinebook Pro sülearvutile, mis põhineb Rockchip RK3399, Pine64 PineTab tahvelarvutil ja nutitelefonil PinePhone põhineb Allwinner A64-l.
    • Lisatud uute helikodekite ja kiipide tugi:
      Amlogic AIU, Amlogic T9015, Texas Instruments TLV320ADCX140, Realtek RT5682, ALC245, Broadcom BCM63XX I2S, Maxim MAX98360A, Presonus Studio 1810c, MOTU MicroBook IIc.

    • Lisatud tugi ARM-plaatidele ja platvormidele Qualcomm Snapdragon 865 (SM8250), IPQ6018, NXP i.MX8M Plus, Kontron “sl28”, 11 i.MX6 TechNexion Pico plaadivalikut, kolm uut Toradex Colibri valikut, Samsung S7710, mis põhineb Galaxy STcover 2-l -Ericsson u8500, DH Electronics DHCOM SoM ja PDK2, Renesas M3ULCB, Hoperun HiHope, Linutronix Testbox v2, PocketBook Touch Lux 3.

Allikas: opennet.ru

Lisa kommentaar