Linuxi kerneli 5.3 väljaanne

Pärast kahte kuud arendusteline Linus Torvalds esitles tugevdamise südamik Linux 5.3. Mõned kõige märgatavamad muudatused: AMD Navi GPU tugi, Zhaoxi protsessorid ja Intel Energy Select juhtimistehnoloogia, umwait käskluste kasutamise võimalus ootamiseks ilma tsükliteta,
interaktiivsuse suurendamise režiim 'utilization clamping' asümmeetrilistele CPU-dele, süsteemikõne pidfd_open, IPv4-aadresside võimalus alamvõrgust 0.0.0.0/8, nftablesi riistvara kiirendamise võimalus, HDR-i toetus DRM-alljärgnevuses, hüperviisori ACRN integreerimine.

V avatud uue väljaande juures meenutas Linus kõigile arendajatele põhireeglit südamiku arendamises — käituvad kasutaja ruumis muutumatult. Südamiku muudatused ei tohi mingil juhul rikkuvad juba töötavaid rakendusi ning tuua regressioone kasutajatasemel. Samas käitumise rikkumine võib põhjustada mitte ainult ABI muutust, vana koodi eemaldamist või vigu, vaid ka kaudset mõju õigesti töötavatele kasulikeks täiustustele. Näitlikuks näiteks oli õigustatud kasulik optimeerimine Ext4 koodis vähendab see sisse- ja väljundiks tähelepanu juhtimise tabelite lugemise statsionaarseid lugemisi, mis vähendab andmekandjale tehtavate pöördumiste arvu.

Optimeerimine on toonud kaasa selle, et diskitegevuse vähenemise tõttu hakkas juhuslike arvude generaatori getrandom() entropia aeglasemalt kogunema, ja mõnedes konfiguratsioonides, kindlate tingimuste korral, võisid laadimise ajal esineda hangumised enne entropia basseini täitumist. Kuna optimeerimine on tõeliselt kasulik, on arendajate seas toimunud arutelu, kus pakuti välja probleemi lahendamine getrandom() blokeeriva režiimi vaikimisi väljalülitamisega, lisades valikulise lipu entropia ootamiseks, kuid selline muudatus mõjutab juhuslike arvude kvaliteeti laadimise algfaasis.

Uues versioonis on vastu võetud 15794 parandust 1974 arendajalt,
patchi suurus on 92 MB (muudatused puudutasid 13986 faili, lisatud on 258419 koodirea,
kustutatud on 599137 rida). Umbes 39% kõigist esitatud 5.3
muudatustest on seotud seadme draiveritega, ligikaudu 12% muudatustest on
suhtarite suhtumine riistvaraarhitektuuride spetsiifiliste koodide värskendusse, 11%
liitub võrgu süsteemiga, 3% — failisüsteemide ja 3% siseste
tuumasüsteemide.

Peamised uuendused:

  • Mälu ja süsteemiteenused
    • Jätkatud funktsionaalsuse arendamine ‘pidfd’, mis aitab käsitleda olukordi PID-i (pidfd seondub konkreetse protsessiga ja ei muutu, samal ajal kui PID võib pärast praeguse protsessi lõpetamist seonduda teise protsessiga) taaskasutamisega. Varem lisati tuuma juba
      süsteemne üleskutse pidfd_send_signal() ja lipp CLONE_PIDFD funktsioonis clone(), mis võimaldab saada pidfd, et kasutada seda idfd_send_signal(). Kui kasutada clone() ühe CLONE_PIDFD lipuga, võisid Androidi platvormil tekkida probleemid teenusehaldurite või protsesside sundlõpetamise süsteemiga mälu puuduse korral. Sellisel juhul kasutatakse käsku fork() või clone() ilma CLONE_PIDFD-ta.

      Tuumas 5.3 esitati süsteemne üleskutse pidfd_open(), mis võimaldab saada kontrollitava pidfd olemasoleva protsessi jaoks, mis ei ole loodud läbi clone() koguse flag CLONE_PIDFD. Samuti on lisatud toetust pidfd pollimiseks poll() ja epoll() abil, mis võimaldab protsessihalduritel jälgida valikuliselt nagu termineid, kartmata, et PID antakse uuele protsessile. Protsessi lõpuleviimise teavitamise mehhanism, mis on seotud pidfd-ga, on sarnane teavitamisega oma tütardest protsesside lõpetamisest;

    • Ülesandekava on lisatud koormuse kinnitamise mehhanismi tugi (Utilization clamping), mis käib seadistama minimume või maksimume sageduste vahemike, sõltuvalt CPU aktiivsetest ülesannetest. Esitatud mehhanism kiirendab ülesandeid, mis mõjutavad otseselt kasutajakogemuse kvaliteeti, käivitades need ülesanded vähemalt „taotletud“ sageduse alumises piiris. Madala prioriteediga ülesandeid, mis ei mõjuta kasutaja tööd, käivitatakse, kasutades „lubatud“ sageduse ülemist piiri. Piirangud on määratud atribuutide sched_uclamp_util_min ja sched_uclamp_util_max kaudu süsteemikutses sched_setattr().
    • Liinid lisatud energiahulga juhtimise tehnoloogia tugi Intel Speed Select, mis on saadaval teatud Intel Xeon protsessoritega serverites. Antud tehnoloogia võimaldab seadistada erinevate CPU tuumade jaoks jõudlus- ja läbilaskevõime seadeid, muutes teatud tuumadel töötavate ülesannete jõudluse prioriteetsemaks, ohverdades jõudluse teistel tuumadel;
    • Protsessid kasutajaruumis on esitatud võimalus oodata lühikest aega ilma tsüklite kasutamiseta umwait käskluse kaudu. See käsklus, koos umonitor ja tpause käsklustega, pakutakse välja tulevastes Intel „Tremont” kiipides ning võimaldab rakendada viivitusi, mis on energiatõhusad ja ei mõjuta teiste lõimede jõudlust Hyper Threading'i kasutamisel;
    • RISC-V arhitektuurile lisandub suuremate mälu lehtede (huge pages) tugi;
    • kprobes jälgimismehhanismi on lisatud võimalus tuumapointerite dereferentseerimiseks kasutajaruumi, mida võib kasutada näiteks struktuuride sisu hindamiseks, mis edastatakse süsteemi kutsungidesse. Samuti on lisatud võimalus kontrollide seadmiseks laadimisetapis.
    • konfiguratsioonifaili on lisatud PREEMPT_RT valik reaalajas tööks. Reaalajas režiimi toetav kood ei ole veel tuumasse lisatud, kuid võimaluse ilmumine on hea märk, et aastate jooksul kestnud integreerimise Realtime-Preempt plaastrite epopöa on jõudmas lõppu;
    • Lisatud süsteemikutsung clone3(), mis realiseerib laiendatud versiooni clone() liidese, ,mis lubab rohkemate lipufunktsioonide määramist;
    • Lisatud töötleja bpf_send_signal(), mis võimaldab BPF-programmidel saata signaale suvalistele protsessidele;
    • KVM hüperviisoris perf sündmuste jaoks on lisatud uus sündmuste filtreerimise mehhanism, mis võimaldab administraatoril määrata, millised sündmustüübid on lubatud või keelatud külgsüsteemi jälgimiseks;
    • eBPF rakenduste verifitseerimise mehhanismi on lisatud võimalus hallata tsükleid sisaldavaid programme, kui tsükli täitmine on piiratud ja ei tohi ületada maksimaalsete käskude arvu;
  • Disski alamsüsteem, sisend/väljund ja failisüsteemid
    • XFS failisüsteemi jaoks on realiseeritud mitme lõimega inode’d läbimise võimalus (näiteks kvootide kontrollimisel). Uued ioctl BULKSTAT ja INUMBERS, mis võimaldavad pääseda juurde viisakaitse 5. väljaande failisüsteemi funktsioonidele, nagu inode’i loomise aeg ja BULKSTAT ning INUMBERS parameetrite määramine iga AG (Allocation Groups) grupi kohta;
    • Ext4 on lisatud tugi kataloogides olevad tühikud (sidumata plokid).
      Tagatud töötlemine flagi «i» (immutabilne) avatud failide jaoks (kirjutamise keeld olukordades, kus lipp oli seatud hetkel, kui fail juba avati);
    • Btrfs pakub crc32c kiire teostamise määratlemist kõigil arhitektuuridel;
    • CIFS-is on smbdirecti toe koodist eemaldatud katsetamise staatus. SMB3-s on lisatud võimalus kasutada krüptoalgoritme GCM-režiimis. Uus montaaživalik on lisatud, et välja tõmmata režiimi parameetreid ACE (Access Control Entry) kirjetest. Optimeeritud on open() kutsumise jõudlus;
    • F2FS-is on lisatud valik, et piirata prügikogumise protsessi töö ajal režiimis checkpoint=disable. Lisatud on ioctl, et eemaldada F2FS-st plokkide vahemikke, mis võimaldab dünaamiliselt osade suuruse kohandamist. Lisatud on võimalus paigutada F2FS-sse vahetusfail, tagades otsese sisendi/väljundi. Kõigile kasutajatele on lisatud toetust faili kinnitamiseks ja sarnaste failide plokkide eraldamiseks;
    • Asünkroonse sisendi/väljundi liidesesse io_uring on lisatud toetus asünkroonsetele toimingutele sendmsg() ja recvmsg();
    • UBIFS failisüsteemi on lisatud zstd-algoritmi kasutades tihendamise tugi ja allkirjastatud FS-piltide valideerimise võimalus;
    • Ceph FS-ile on lisatud SELinuxi turvetagide tugi failidele;
    • NFSv4 jaoks on rakendatud uus monteerimisvalik "nconnect=", mis määratleb serveriga loodud ühenduste arvu. Selle vahel liikuv liiklus jaotatakse koormuse tasakaalustamise abil. Lisaks loob NFSv4 server nüüd katalooge /proc/fs/nfsd/clients, kus on teave aktiivsete klientide kohta, sealhulgas avatud failide andmed;
  • Virtualiseerimine ja turvalisus
    • Tuumarakendusse on lisatud hüperviisor sisseehitatud seadmete jaoks ACRN, mis on kirjutatud silmas pidades valmidust täita reaalajas ülesandeid ja sobivust kriitiliste süsteemide kasutamiseks. ACRN tagab minimaalse kõrvalkulu, garanteerib madalad latentsuse (low latency) ja adekvaatse reageerimise seadmetega suhtlemisel. Toetatakse CPU, sisendi/väljundi, võrgu alamsüsteemi, graafika ja heliga seotud virtualiseerimist. ACRN-i saab kasutada mitme isoleeritud virtuaalmaquina käitamiseks elektroonilistes juhtplokkides, armatuurlaudades, autotööstuse infosüsteemides, tarbijate IoT-seadmetes ja muudes sisse ehitatud seadmetes;
    • Kasutaja-režiim Linuxis lisatud aeg-reisi režiim, mis võimaldab aeglustada või kiirendada aega UML-i virtuaalses keskkonnas, et lihtsustada ajaga seotud koodi tõrkeotsingut. Samuti on lisatud parameeter
      time-travel-start, mis võimaldab süsteemi kellade käivitamist näidatud hetkest epoch-formaadis;
    • Keenud uusi käsklusi tuumas "init_on_alloc" ja "init_on_free", mille määramisel aktiveeritakse eraldatud ja vabastatud mälualade nullimine (täitmine nullidega malloc ja free kaudu), mis parandab turvalisust täiendavate initsialiseerimise kulude arvelt;
    • Lisatud uus draiver virtio-iommu , mis rakendab parafiatraliseeritud seadet, mis võimaldab IOMMU päringute saatmist, nagu ATTACH, DETACH, MAP ja UNMAP, virtio transpordi kaudu ilma mälulehtede tabelite emuleerimiseta;
    • Lisatud uus draiver virtio-pmem, mis pakub juurdepääsu salvestusseadmetele, mis peegeldavad füüsilisse aadressiruumi, nagu NVDIMM;
    • Tehtud on võimalus kinnitada krüptograafilisi võtmeid kasutaja- või võrgu nimeruumi (võtmed muutuvad valitud nimepiirist väljaspool mittejuurdepääsetavaks), samuti võtmete kaitsmine ACL abil;
    • Krüptosüsteemi on lisatud toetab väga kiiret mittekrüptograafilise räsimise algoritmi xxhash, mille kiirus sõltub mälutootlikkusest;
  • Võrgu alamsüsteem
    • IPv4 aadresside töötlemine vahemikus 0.0.0.0/8, mis oli varem kasutamiseks kättesaamatu, on tagatud. Selle alamsüsteemi rakendamine kiirendab veel 16 miljoni IPv4 aadressi jagamist;
    • Netfilter nftables'is on lisatud toetab riistvaralise kiirenduse filtreerimise mehhanisme, kasutades draiveritesse lisatud Flow Block API-d. Võrguadapteritele võivad välja viia täidetud reeglitetabelid koos kõigi ahelatega. Ühendamine toimub NFT_TABLE_F_HW flagi sidumise kaudu tabelisse. Toetatakse lihtsaid 3. ja 4. taseme protokollide metaandmeid, vastuseid aktsepteerimise/ajaloo, IP ja võrguportide saatja/vastuvõtja ning protokolli tüübi järgi;
    • Lisatud sisseehitatud ühenduste jälgimise tugi võrgu sildadele, mis ei nõua br_netfilteri emuleerimist;
    • nf_tables'is on lisatud toetab SYNPROXY moodulit, mis kordab iptables'i sarnast funktsionaalsust, samuti on rakendatud võimalus kontrollida reegleid IPv4 päises olevate erivõimaluste põhjal;
    • Lisatud on võimalus kinnitada BPF-programme süsteemikõnedele setsockopt() ja getsockopt(), mis võimaldab näiteks kinnitada oma ligipääsu käitlejad nendele kõnedele. Lisaks on lisatud uus kutsumise punkt (hook), mille abil saab korraldada BPF-programmi kutsumist üks kord iga RTT (round-trip-time, pingiaeg) intervalli kohta;
    • IPv4 ja IPv6 jaoks lisatud uus marsruudingu andmete hoidmise mehhanism nexthop, mille eesmärk on suurendada marsruudingu tabelite skaleeritavust. Tehtud testid näitasid, et uue süsteemi puhul laaditi 743 000 marsruuti kerneli vaid 4,3 sekundiga;
    • Bluetooth jaoks on rakendatud funktsionaalsus, mis on vajalik LE ping'i toetamiseks;
  • Seadmed
    • Lisatud x86-ühilduvate protsessorite tugi ettevõttelt Zhaoxin, mis on arenenud VIA Technologiesi ja Shanghai omavalitsuse koostööprojekti tulemusena. CPU pere ZX on ehitatud x86-64 Isaiah arhitektuuri baasil, mis jätkab VIA Centauri tehnoloogiate arengut. VIA Centaur;
    • DRM (Direct Rendering Manager) süsteemi ja graafikadraiveritesse amdgpu ja i915 on lisatud HDR (laiendatud dünaamiline vahemik) metaandmete analüüsi, töötlemise ja edastamise tugi HDMI-porti kaudu, võimaldades kasutada HDR-paneele ja ekraane, mis suudavad kuvada täiendavaid heledusvahemikke;
    • Draiverisse amdgpu on lisatud esialgne tugi AMD NAVI (RX5700) GPU-le, mis hõlmab põhijuhte, koodi ekraanide (DCN2) suhtlemiseks, GFX ja arvutus (GFX10) tuge;
      SDMA 5 (System DMA0), toitehaldus ja multimeedia kodeerijad/dekodeerijad (VCN2). Amdgpu süsteemis on samuti paranenud Vega12 ja Vega20 GPU-de toetamine, millele on lisatud täiendavad mälude ja energiakasutuse haldamise võimalused;
    • Draiveris amdkfd (diskreetsetele GPU-dele nagu Fiji, Tonga, Polaris) on lisatud VegaM GPU-de toetamine;
    • Intel'i graafikadraiveris Icelake kiipide jaoks on rakendatud lisatud uus multi-segmentne gamma reguleerimise režiim. Lisatud on DisplayPorti kaudu väljund YCbCr4:2:0 formaadis. Uued püsivara versioonid lisatud GuC SKL, BXT, KBL, GLK ja ICL jaoks. On rakendatud võimalus välja lülitada ekraani toide asünkroonses režiimis. Lisatud Renderimise konteksti säilitamise ja taastamise tugi Ironlake (gen5) ja gen4 (Broadwater — Cantiga) kiipidele, võimaldades GPU oleku taastamist kasutajaruumi kaudu, kui liikuda ühest partiiülesandest teise;
    • Nouveau draiveris on nüüd võimalik määrata NVIDIA Turing TU116 kiip;
    • DRM/KMS-draiveri võimalusi on laiendatud ARM Komeda (Mali D71) ekraaniprotsessorite jaoks, lisatud on toetused skaleerimiseks, kihtide jagamiseks/ühendamiseks, pööramiseks, edasi lükatud kirjutamiseks, AFBC, SMMU ja värvikoodimise formaatide jaoks Y0L2, P010, YUV420_8/10BIT;
    • MSM draiverisse on lisatud tugi A540 GPU Adreno seeriale, mida kasutatakse Qualcommi protsessorites, samuti tugi DSI-kontrollerile MSM8998 Snapdragon 835 jaoks;
    • Draiverid on lisatud järgnevatele 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 kiirenduse dekodeerimise draiver video jaoks, mis on saadaval Amlogic Meson SoC-s;
      v3d draiveris (Broadcom Video Core V GPU jaoks, mida kasutatakse Raspberry Pi-s) on nüüd olemas
    • arvutusšaderite haldamine; toetamine arvutite varjatud haldus;
    • Lisatud SPI klaviatuuride ja puuteplaatide draiver, mida kasutatakse kaasaegsetes Apple MacBook ja MacBookPro mudelites;
    • Lisatud täiendav kaitse floppy draiveriga seotud ioctl kutsude jaoks, samas kui draiver on märgitud kui hoolduseta jääv
      („orphaned“), mis tähendab, et selle testimine on lõpetatud. Draiver on seni tuumas alles, kuid selle korrektset toimimist ei garanteerita. Draiverit peetakse aegunuks, kuna selle testimiseks on raske leida töötavat seadmet, kõik kaasaegsed välised salvestid kasutavad tavaliselt USB liidest.
    • Lisatud cpufreq draiver Raspberry Pi plaatidele, mis võimaldab dünaamiliselt hallata protsessori sageduse muutumist;
    • Lisatud tugi uutele ARM SoC Mediatek mt8183 (4x Cortex-A73 + 4x Cortex-A53), TI J721E (2x Cortex-A72 + 3x Cortex-R5F + 3 DSP-d + MMA) ja Amlogic G12B (4x Cortex-A73 + 2x Cortex-A53), samuti plaatidele:
      • 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 TV Box (Rockchip RK3399),
      • Khadas Edge/Edge-V/Captain (Rockchip RK3399),
      • HiHope RZ/G2M,
      • NXP LS1021A-TSN.

Samas ajal, Ladina-Ameerika vaba tarkvara fond vormis
variant täiesti tasuta kerneli 5.3Linux-libre 5.3-gnu, puhastatud püsivara- ja draiverielementidest, mis sisaldavad mitte-vaba komponente või koodilõike, mille kasutusala on tootja poolt piiratud. Uues väljaandes on keelatud ladustada blobe qcom, hdcp drm, allegro-dvt ja meson-vdec draiverites.
On uuendatud blobi puhastamise koodi draiverites ja alamüsteemides amdgpu, i915, netx, r8169, brcmfmac, rtl8188eu, adreno, si2157, pvrusb2, touchscreen_dmi, kraani draiveris skylake, samuti mikrokoodi dokumentatsioonis.

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster