Linuxi 5.3 kerneli väljalase

Pärast kahekuulist arendustööd Linus Torvalds tutvustatud kerneli väljalase Linux 5.3. Märkimisväärsemate muudatuste hulgas: tugi AMD Navi GPU-dele, Zhaoxi protsessoritele ja Intel Speed ​​​​Select toitehaldustehnoloogiale, võimalus kasutada umwait juhiseid, et oodata ilma tsükleid kasutamata,
'kasutamise piiramise' režiim, mis suurendab asümmeetriliste protsessorite interaktiivsust, pidfd_open süsteemikutse, 4/0.0.0.0 alamvõrgu IPv8 aadresside kasutamise võimalus, nftablesi riistvarakiirenduse võimalus, HDR-i tugi DRM-i alamsüsteemis, ACRN-i integreerimine. hüperviisor.

В teadaanne uus väljalase tuletas Linus kõigile arendajatele meelde kerneli arendamise peamist reeglit – kasutajaruumi komponentide sama käitumise säilitamist. Kerneli muudatused ei tohiks mingil juhul katkestada juba töötavaid rakendusi ega viia taandarengeni kasutaja tasemel. Sel juhul võib käitumise rikkumine põhjustada mitte ainult ABI muutust, vananenud koodi eemaldamist või vigade ilmnemist, vaid ka õigesti toimivate kasulike täiustuste kaudset mõju. Illustreeriva näitena oli ära visatud kasulik optimeerimine Ext4 koodis, mis vähendab draivi juurdepääsude arvu, keelates väikeste I/O päringute jaoks inode tabeli eellugemise.

Optimeerimine tõi kaasa asjaolu, et ketta aktiivsuse vähenemise tõttu hakkas juhuslike arvude generaatori getrandom() entroopia akumuleeruma aeglasemalt ja teatud konfiguratsioonides võis laadimise ajal teatud tingimustel täheldada külmumist, kuni entroopiakogum oli täielik. täidetud. Kuna optimeerimine on tõesti kasulik, tekkis arendajate vahel arutelu, mille käigus tehti ettepanek probleemi lahendamiseks keelata getrandom() väljakutse vaikimisi blokeerimisrežiim ja lisada valikuline lipp entroopia ootamiseks, kuid selline muudatus mõjutaks juhuslike numbrite kvaliteet laadimise algfaasis.

Uus versioon sisaldab 15794 1974 parandust XNUMX arendajalt,
plaastri suurus - 92 MB (muudatused mõjutasid 13986 faili, lisati 258419 koodirida,
599137 rida eemaldatud). Umbes 39% kõigist punktis 5.3
muudatused on seotud seadme draiveritega, ligikaudu 12% muudatustest on
suhtumine riistvaraarhitektuurile omase koodi värskendamisse, 11%
seotud võrgupinuga, 3% failisüsteemidega ja 3% sisemisega
kerneli alamsüsteemid.

Kõik uuendused:

  • Mälu- ja süsteemiteenused
    • Funktsionaalsuse „pidfd” jätkuv arendamine, et aidata toime tulla PID-i korduskasutusolukordadega (pidfd on seotud konkreetse protsessiga ega muutu, samas kui PID-i saab seostada mõne teise protsessiga pärast seda, kui selle PID-ga seotud praegune protsess lõpeb). See lisati varem kernelile
      pidfd_send_signal() süsteemikutse ja CLONE_PIDFD lipp klooni() kutses, et saada pidfd, mida saab kasutada funktsioonis idfd_send_signal(). Clone() kasutamine koos lipuga CLONE_PIDFD võib põhjustada probleeme teenusehalduritega või Androidi platvormi mälust väljuva sunnitud lõpetamise süsteemiga. Sel juhul kasutatakse käivitamiseks väljakutset fork() või clone()-le ilma CLONE_PIDFD-ta.

      Kernel 5.3 tutvustas süsteemikutset pidfd_open(), mis võimaldab hankida kontrollitava pidfd suvalise olemasoleva protsessi jaoks, mida ei loodud kloon() kutsumisega lipuga CLONE_PIDFD. Samuti on lisatud tugi pidfd pollidele poll() ja epoll() abil, mis võimaldab protsessihalduritel jälgida suvaliste protsesside lõpetamist, kartmata võiduseisundit, kui uuele protsessile määratakse PID. Pidfd-ga seotud protsessi lõpetamisest teatamise mehhanism on sama, mis selle alamprotsessi lõpetamisest teatamiseks;

    • Tegumite planeerijasse on lisatud koormuse kinnitamise mehhanismi tugi (Kasutusklamber), mis võimaldab teil järgida minimaalset või maksimaalset sagedusvahemikku, olenevalt protsessoris aktiivsetest ülesannetest. Esitatud mehhanism kiirendab ülesandeid, mis mõjutavad otseselt kasutajakogemuse kvaliteeti, käivitades neid ülesandeid vähemalt "nõutud" sageduse alumises otsas. Madala prioriteediga ülesanded, mis ei mõjuta kasutaja tööd, käivitatakse "lubatud" sageduse ülempiiri kasutades. Piirangud määratakse süsteemikutses sched_setattr() atribuutide sched_uclamp_util_min ja sched_uclamp_util_max kaudu.
    • Lisatud energiahaldustehnoloogia tugi Intel Speed ​​​​Select, saadaval valitud Intel Xeoni protsessoritega serverites. See tehnoloogia võimaldab määrata jõudluse ja partitsioonide läbilaskevõime sätteid erinevatele protsessorituumadele, mis võimaldab seada esikohale jõudluse teatud tuumadega sooritatavate ülesannete puhul, ohverdades teiste tuumade jõudlust;
    • Protsessid kasutajaruumis antud võimalus oodata lühikest aega ilma silmuseid kasutamata, kasutades umwait-juhist. Seda juhist koos umonitori ja tpause juhistega pakutakse Inteli tulevastes "Tremont" kiipides ning see võimaldab rakendada viivitusi, mis on energiatõhusad ega mõjuta Hyper Threadingi kasutamisel teiste lõimede jõudlust;
    • RISC-V arhitektuuri jaoks on lisatud suurte mälulehtede tugi;
    • Jälgimismehhanism kprobes on lisanud võimaluse kerneli viidete viitamiseks kasutajaruumi, mida saab kasutada näiteks süsteemikutsetele edastatud struktuuride sisu hindamiseks. Lisatud on ka kontrollide installimise võimalus alglaadimisetapis.
    • Reaalajas töötamiseks lisati konfiguratsioonifailile suvand PREEMPT_RT. Reaalajas režiimi toetavat koodi ennast pole veel kernelile lisatud, kuid valiku ilmumine on hea märk sellest, et pikaajaline eepos integratsiooni Realtime-Preempt paigad on valmimas;
    • Lisatud on clone3() süsteemikutse koos clone() liidese laiendatavama versiooni realiseerimisega, mis võimaldab määrata suurema arvu lippe;
    • Lisatud töötleja bpf_send_signal(), mis võimaldab BPF-i programmidel saata signaale suvalistele protsessidele;
    • Perf sündmuste jaoks KVM hüperviisori keskkonnas on lisatud uus sündmuste filtreerimise mehhanism, mis võimaldab administraatoril määrata sündmuste tüübid, mis on külalissüsteemi poolel jälgimiseks lubatud või mitte;
    • eBPF-i rakenduse kontrollimise mehhanismile on lisatud tsüklitega programmide töötlemise võimalus, kui tsükli täitmine on piiratud ja see ei saa kaasa tuua käskude maksimaalse arvu piirangu ületamist;
  • Ketta alamsüsteem, I/O ja failisüsteemid
    • XFS-failisüsteem toetab nüüd mitme lõimega inode möödaviimist (näiteks kvootide kontrollimisel). Lisatud on uued ioctl-id BULKSTAT ja INUMBERS, mis pakuvad juurdepääsu FS-vormingu viiendas väljaandes ilmunud funktsioonidele, nagu inode sünniaeg ja võimalus seada iga AG-rühma (eraldusrühmad) parameetreid BULKSTAT ja INUMBERS;
    • In Ext4 toetus lisatud tühimikud kataloogides (linkimata plokid).
      Töötlemine on ette nähtud lipp “i” (muutmatu) avatud failide puhul (kirjutamine on keelatud olukorras, kui lipp on seatud ajal, mil fail oli juba avatud);

    • Btrfs annab definitsiooni crc32c kiirele rakendamisele kõigis arhitektuurides;
    • CIFS-is on smbdirecti toe kood eksperimentaalse arendusena eemaldatud. SMB3 lisas võimaluse kasutada GCM-režiimis krüptoalgoritme. Lisati uus paigaldussuvand, et eraldada režiimi parameetrid ACE (juurdepääsu kontrolli kirje) kirjetest. Optimeeritud open() kõne toimivus;
    • F2FS-ile on lisatud suvand, et piirata prügikogujat, kui see töötab režiimis checkpoint=disable. Lisatud ioctl, et eemaldada plokivahemikud F2FS-ist, võimaldades partitsiooni suurust käigupealt reguleerida. Lisati võimalus paigutada vahetusfail F2FS-i, et pakkuda otsest I/O-d. Lisatud tugi faili kinnitamiseks ja sarnaste failide jaoks plokkide eraldamiseks kõigile kasutajatele;
    • Lisatud asünkroonsete operatsioonide sendmsg() ja recvmsg() tugi asünkroonse sisendi/väljundi io_uring liidesele;
    • UBIFS-failisüsteemi on lisatud zstd-algoritmi abil tihendamise tugi ja allkirjastatud FS-piltide kontrollimise võimalus;
    • Ceph FS toetab nüüd failide SELinuxi turvasilte;
    • NFSv4 jaoks on rakendatud uus ühendamisvalik “nconnect=”, mis määrab serveriga loodud ühenduste arvu. Liiklus nende ühenduste vahel jaotatakse koormuse tasakaalustamise abil. Lisaks loob NFSv4 server nüüd kataloogi /proc/fs/nfsd/clients, mis sisaldab teavet praeguste klientide kohta, sealhulgas teavet nende avatud failide kohta;
  • Virtualiseerimine ja turvalisus
    • Kernel sisaldab manustatud seadmete hüperviisorit ACRN, mis on kirjutatud silmas pidades valmisolekut reaalajas ülesanneteks ja sobivust kasutamiseks missioonikriitilistes süsteemides. ACRN pakub minimaalset lisakulu, tagab madala latentsuse ja piisava reageerimisvõime seadmetega suhtlemisel. Toetab protsessori ressursside, I/O, võrgu alamsüsteemi, graafika ja helioperatsioonide virtualiseerimist. ACRN-i saab kasutada mitme isoleeritud virtuaalmasina käitamiseks elektroonilistes juhtplokkides, armatuurlaudades, autode infosüsteemides, tarbijate asjade Interneti-seadmetes ja muus manustatud tehnoloogias;
    • Kasutajarežiimis Linux lisatud Ajas rändamise režiim, mis võimaldab aeglustada või kiirendada aega virtuaalses UML keskkonnas, et hõlbustada ajaga seotud koodi silumist. Lisaks on lisatud parameeter
      time-travel-start, mis võimaldab süsteemi kellal käivituda määratud hetkest epohhivormingus;

    • Lisatud on uued kerneli käsurea valikud “init_on_alloc” ja “init_on_free”, kui need on määratud, on lubatud jaotatud ja vabastatud mälualade nullimine (malloc ja free puhul nullidega täitmine), mis võimaldab turvalisust suurendada tänu täiendavale lähtestamisele üldkulud;
    • Uus draiver lisatud virtio-iommu paravirtualiseeritud seadme juurutamisega, mis võimaldab saata IOMMU päringuid nagu ATTACH, DETACH, MAP ja UNMAP virtio transpordi kaudu ilma mälulehtede tabeleid emuleerimata;
    • Uus draiver lisatud virtio-pmem, mis esindab juurdepääsu füüsilisele aadressiruumile kaardistatud salvestusseadmetele, näiteks NVDIMM-idele;
    • Rakendatud võimalus lisada krüptograafilisi võtmeid kasutaja või võrgu nimeruumi (võtmed muutuvad väljaspool valitud nimeruumi kättesaamatuks), samuti kaitsta võtmeid ACL-ide abil;
    • Krüpto alamsüsteemi juurde lisatud väga kiire mittekrüptograafilise räsimisalgoritmi tugi xxhash, mille kiirus sõltub mälu jõudlusest;
  • Võrgu alamsüsteem
    • Lubatud on IPv4-aadresside töötlemine vahemikus 0.0.0.0/8, mis varem polnud kasutamiseks saadaval. Selle alamvõrgu tutvustus lubab levitada veel 16 miljonit IPv4 aadressi;
    • Netfilteris nftables'i jaoks lisatud pakettide filtreerimise riistvarakiirendusmehhanismide tugi lisatud draiverite kasutamise kaudu Flow Block API. Võrguadapterite küljele saab paigutada terved reeglite tabelid koos kõigi kettidega. Lubamine toimub lipu NFT_TABLE_F_HW sidumisega tabeliga. Toetab lihtsaid 3. ja 4. kihi protokolli metaandmeid, aktsepteerimis-/keeldumistoiminguid, vastendamist IP ja saatja/vastuvõtja võrguportide ja protokolli tüübi järgi;
    • Lisatud sisseehitatud ühenduse jälgimise tugi võrgusildadele, mis ei nõua emuleeriva kihi br_netfilter kasutamist;
    • nf_tables lisatud Rakendatud on ka SYNPROXY mooduli tugi, mis kordab iptablesi sarnaseid funktsioone, ja võimalus kontrollida IPv4 päises olevate üksikute valikute reegleid;
    • Lisatud on võimalus siduda BPF-programme setsockopt() ja getsockopt() süsteemikõnedele, mis võimaldab näiteks nendele kõnedele lisada oma juurdepääsukäsitlejad. Lisaks on lisatud uus kõnepunkt (hook), millega saab iga RTT intervalli (edasi-tagasi-aeg, pingiaeg) jaoks korraldada ühe korra BPF-programmi kõne;
    • IPv4 ja IPv6 jaoks lisatud uus nexthopi marsruutimise andmesalvestusmehhanism, mille eesmärk on suurendada marsruutimistabelite skaleeritavust. Testid näitasid, et uue süsteemi kasutamisel laaditi kernelisse 743 tuhande marsruudi komplekt vaid 4.3 sekundiga;
    • Bluetoothi ​​jaoks rakendatud LE pingi toetamiseks vajalik funktsionaalsus;
  • Оборудование
    • Lisatud ettevõtte x86-ühilduvate protsessorite tugi Zhaoxin, mis töötati välja VIA Technologiesi ja Shanghai linnavalitsuse ühisprojekti tulemusena. ZX CPU perekond on ehitatud x86-64 Isaiah arhitektuurile, jätkates tehnoloogia arengut VIA Centaur;
    • DRM-i (Direct Rendering Manager) alamsüsteem ning amdgpu ja i915 graafikadraiverid on lisanud tuge HDR-i (kõrge dünaamilise ulatusega) metaandmete sõelumiseks, töötlemiseks ja saatmiseks HDMI-pordi kaudu, võimaldades kasutada HDR-paneele ja ekraane, mis on võimelised täiendavate heledusvahemike kuvamine;
    • Amdgpu draiver on lisanud AMD NAVI GPU (RX5700) esialgse toe, mis sisaldab põhidraiverit, ekraani interaktsiooni koodi (DCN2), GFX-i ja arvutustoetust (GFX10),
      SDMA 5 (System DMA0), toitehaldus ja multimeediumkoodrid/dekoodrid (VCN2). amdgpu parandab ka Vega12 ja Vega20 GPU-del põhinevate kaartide tuge, millele on lisatud täiendavad mälu- ja toitehaldusvõimalused;

    • amdkfd draiverile on lisatud VegaM GPU-del põhinevate kaartide tugi (diskreetsete GPU-de jaoks, nagu Fidži, Tonga, Polaris);
    • Inteli videokaartide DRM-draiveris Icelake'i kiipide jaoks rakendatud uus mitme segmendiga gammakorrektsiooni režiim. Lisatud on võimalus väljastada DisplayPorti kaudu vormingus YCbCr4:2:0. Lisatud uus püsivara GuC SKL, BXT, KBL, GLK ja ICL jaoks. Rakendatud on võimalus asünkroonses režiimis ekraani toide välja lülitada. Lisatud Ironlake'i (gen5) ja gen4 (Broadwater - Cantiga) kiipide renderduskonteksti salvestamise ja taastamise tugi, mis võimaldab taastada GPU oleku kasutajaruumist, kui liigute ühelt partiitoimingult teisele;
    • Nouveau draiver võimaldab tuvastada NVIDIA Turing TU116 kiibistiku;
    • Laiendatud on ARM Komeda ekraanikiirendite (Mali D71) DRM/KMS-draiveri võimalusi, olemas on skaleerimise, kihtide poolitamise/ühendamise, pööramise, edasilükatud kirjutamise, AFBC, SMMU ja värvikodeeringu vormingute Y0L2, P010, YUV420_8/10BIT tugi. lisatud;
    • MSM-draiver lisab toe A540 GPU Adreno seeriale, mida kasutatakse Qualcommi protsessorites, samuti toe MSM8998 DSI kontrollerile Snapdragon 835 jaoks;
    • Lisatud draiverid LCD-paneelidele Samsung S6E63M0, Armadeus ST0700, EDT ETM0430G0DH6, OSD101T2045-53TS,
      Evervision VGG804821, FriendlyELEC HD702E, KOE tx14d24vm1bpa, TFC S9700RTWV43TR-01B, EDT ET035012DM6 ja VXT VL050-8048NT-C01;

    • Lisatud draiver kiirendustööriistade dekodeerimise lubamiseks
      videod, mis on saadaval Amlogic Meson SoC-s;

    • Ilmus v3d-draiveris (Raspberry Pi-s kasutatava Broadcom Video Core V GPU jaoks). toetama Arvutivarjurite saatmine;
    • Lisatud Apple MacBooki ja MacBookPro sülearvutite kaasaegsetes mudelites kasutatavate SPI-klaviatuuride ja puuteplaatide draiver;
    • Lisatud täiendav kaitse flopi draiveriga seotud ioctl kõnedele ja draiver ise märgitakse hooldamata
      (“orvuks jäänud”), mis tähendab selle testimise lõpetamist. Draiver on endiselt tuumas salvestatud, kuid selle õige toimimine pole garanteeritud. Draiverit peetakse aegunuks, kuna selle testimiseks on raske leida tööseadmeid - kõik praegused välised draivid kasutavad reeglina USB-liidest.

    • Lisatud cpufreq draiver Raspberry Pi plaatidele, mis võimaldab dünaamiliselt juhtida protsessori sageduse muutusi;
    • Lisatud on uute ARM SoC Mediatek mt8183 (4x Cortex-A73 + 4x Cortex-A53), TI J721E (2x Cortex-A72 + 3x Cortex-R5F + 3 DSP + MMA) ja Amlogic G12B (4x Cortex-A73 +-2) tugi. A53), samuti tahvlid:
      • Purism Librem5,
      • Aspeed BMC,
      • Microsoft Olympus BMC,
      • Kontron SMARC,
      • Novtech Meerkat96 (i.MX7),
      • ST Micro Avenger96,
      • Google Cheza (Qualcomm SDM845),
      • Qualcomm Dragonboard 845c (Qualcomm SDM845),
      • Hugsun X99 telekast (Rockchip RK3399),
      • Khadas Edge/Edge-V/Captain (Rockchip RK3399),
      • HiHope RZ/G2M,
      • NXP LS1021A-TSN.

Samal ajal Ladina-Ameerika Vaba Tarkvara Fond moodustatud
võimalus täiesti tasuta kernel 5.3 - Linuxi vaba 5.3-gnu, puhastatud püsivarast ja draiverielementidest, mis sisaldavad mittevabu komponente või koodilõike, mille ulatust piirab tootja. Uues versioonis on blobide laadimine keelatud qcomi, hdcp drm-i, allegro-dvt ja meson-vdec draiverites.
Värskendatud blob-puhastuskood draiverites ja alamsüsteemides amdgpu, i915, netx, r8169, brcmfmac, rtl8188eu, adreno, si2157, pvrusb2, touchscreen_dmi, Skyake'i helidraiver, samuti mikrokoodide dokumentatsioonis.

Allikas: opennet.ru

Lisa kommentaar