Linux 5.3 kodola izlaidums

Pēc diviem mēnešiem attīstības Linuss Torvalds prezentēja izlaida kodolu Linux 5.3. Starp visiem ievērojamākajiem uzlabojumiem: atbalsts AMD Navi GPU, Zhaoxi procesoriem un Intel Speed Select tehnoloģijas enerģijas patēriņa vadības funkcijām, umwait instrukciju izmantošanas iespēja gaidīšanai bez ciklu lietošanas,
interaktivitāti palielinošs režīms 'utilization clamping' asimetriskiem CPU, sistēmas izsaukums pidfd_open, IPv4 adreses izmantošanas iespēja no apakštīkla 0.0.0.0/8, iespēja aparatūras paātrināšanai nftables, HDR atbalsts DRM apakšsistēmā, ACRN hipervizora integrācija.

No paziņojumā jaunā izlaišana Linus atgādināja visiem izstrādātājiem par galveno kodola izstrādes noteikumu — saglabāt lietošanas telpas komponentu uzvedības nemainīgumu. Izmaiņas kodolā nedrīkstot nekādā veidā traucēt jau darbojošām programmām un radīt regresijas lietošanas līmenī. Taču uzvedības pārkāpums var rasties ne tikai ABI izmaiņas, novecojuša koda dzēšanas vai kļūdu parādīšanās dēļ, bet arī netiešās ietekmes rezultātā uz pareizi funkcionējošām labojumiem. Kā ilustratīvs piemērs tika noraidīta izdevīga optimizācija Ext4 kodā, samazinot piekļuves skaitu krātuvēm, izslēdzot iepriekšēju inode tabulas lasīšanu nelielos ievades/izvades pieprasījumos.

Optimizācija noveda pie tā, ka, samazinoties diska aktivitātei, entropija nejaušo skaitļu ģeneratoram getrandom() uzkrājās lēnāk un noteiktās konfigurācijās pie noteikta apstākļu kopuma varēja novērot sasalšanu ielādes procesā līdz entropijas baseina piepildījumam. Tā kā optimizācija patiešām bija izdevīga, izstrādātāju vidū radās diskusija, kurā tika ieteikts risināt problēmu, izslēdzot noklusējuma bloķējošo režīmu getrandom() izsaukumam ar papildu opcijas karogu, lai gaidītu entropiju, taču šāds grozījums ietekmēs nejaušo skaitļu kvalitāti ielādes sākumposmā.

Jaunajā versijā iekļauti 15794 labojumi no 1974 izstrādātājiem,
plēsošanas izmērs — 92 MB (izmaiņas skāra 13986 failus, pievienotas 258419 koda rindas,
dzēstas 599137 rindas). Apmēram 39% no visām izmaiņām 5.3
attiecas uz ierīču draiveriem, aptuveni 12% izmaiņu ir
saistītas ar aparatūras arhitektūru specifiska koda atjaunošanu, 11%
saistīts ar tīkla steku, 3% – failu sistēmām un 3% – iekšējām
kodola apakšsistēmām.

īpašības jaunumi:

  • Atmiņa un sistēmas pakalpojumi
    • Turpināta 'pidfd' funkcionalitātes attīstība, kas palīdz apstrādāt situācijas ar PID atkārtotu izmantošanu (pidfd ir saistīts ar konkrētu procesu un nemainās, kamēr PID var tikt piesaistīts citam procesam pēc pašreizējā procesa pabeigšanas, kas saistīts ar šo PID). Iepriekš kodā jau tika pievienots
      sistēmas izsaukums pidfd_send_signal() un flags CLONE_PIDFD izsaukumā clone(), kas ļauj iegūt pidfd izmantošanai idfd_send_signal(). Izmantojot izsaukumu clone() ar flagu CLONE_PIDFD, varēja rasties problēmas ar pakalpojumu menedžeriem vai procesu piespiedu pabeigšanas sistēmu, kad Android platformā bija pieejami resursi. Šajā gadījumā, izmanto izsaukumu fork() vai clone() bez CLONE_PIDFD.

      Kodā 5.3 ieviests sistēmas izsaukums pidfd_open(), kas ļauj iegūt pārbaudītu pidfd par nejaušu esošu procesu, kas izveidots neizmantojot izsaukumu clone() ar flagu CLONE_PIDFD. Tāpat pievienota atbalsts pidfd polēšanai ar poll() un epoll(), kas ļauj procesu menedžeros sekot nejaušu procesu pabeigšanai, nebaidoties no sacensības apstākļa gadījumā, ja PID tiek piešķirts jaunam procesam. Procesa pabeigšanas paziņošanas mehānisms, kas saistīts ar pidfd, ir līdzīgs informēšanai par sava apakšprocesa pabeigšanu;

    • Uzdevumu plānotājā pievienots atbalsts slodzes ierobežošanas mehānismam (Utilization clamping), kas ļauj atturēties no minimālajiem vai maksimālajiem frekvenču diapazoniem, atkarībā no aktīvajiem uzdevumiem CPU. Ievieštais mehānisms paātrina uzdevumus, kas tieši ietekmē lietotāja mijiedarbības kvalitāti, palaižot šos uzdevumus vismaz zemākajā pieprasītajā frekvencē. Zema prioritāte uzdevumi, kas neietekmē lietotāju, tiek palaisti, izmantojot augšējo pieļaujamās frekvences ierobežojumu. Ierobežojumi tiek noteikti caur atribūtiem sched_uclamp_util_min un sched_uclamp_util_max sistēmas izsaukumā sched_setattr().
    • Pievienots atbalsts enerģijas patēriņa pārvaldības tehnoloģijai Intel Speed Select, pieejams dažos Intel Xeon procesoru serveros. Norādītā tehnoloģija ļauj iestatīt veiktspējas un caurlaidības iestatījumus sekcijām dažādiem CPU kodoliem, ļaujot prioritizēt veiktspēju uz noteiktiem kodoliem, upurējot veiktspēju uz citiem kodoliem;
    • Lietotāja telpas procesiem sniegta gaidīšanas iespējas uz īsu laiku bez ciklu izmantošanas, izmantojot instrukciju umwait. Šī instrukcija, kopā ar instrukcijām umonitor un tpause, tiks piedāvāta gaidāmajās Intel «Tremont» mikroshēmās un ļaus īstenot pazīmes, kas ir efektīvas energoefektivitātes ziņā un neietekmē citu pavedienu veiktspēju, izmantojot Hyper Threading;
    • RISC-V arhitektūrai pievienota atbalsts lielām atmiņas lapām (huge pages);
    • Kprobes izsekošanas mehānismā pievienota iespēja dereferencēt kodola rādītājus lietotāja telpā, ko var izmantot, piemēram, struktūru saturam novērtēšanai, kas tiek nodots sistēmas izsaukumiem. Tāpat pievienota iespēja veikt pārbaudes ielādes posmā.
    • Konfigurācijas failā pievienota PREEMPT_RT opcija reāllaika režīmā. Pašreizējais kods reāllaika režīma atbalstam vēl nav pievienots kodolam, taču opcijas parādīšanās ir labs signāls, ka ilgstošā cīņa par integrācijai Realtime-Preempt ielāpiem tuvojas noslēgumam;
    • Pievienots sistēmas izsaukums clone3() ar paplašināmu clone() interfeisa variantu, kas ļauj norādīt vairākus karogus;
    • Pievienots bpf_send_signal() apstrādātājs, kas ļauj BPF programmmām sūtīt signālus jebkurām procesiem;
    • Perf notikumiem KVM hipervizora vidē pievienots jauns notikumu filtrēšanas mehānisms, kas ļauj administratoram noteikt notikumu tipus, kas ir pieņemami vai nepieņemami uz uzraudzību viesu sistēmas pusē;
    • eBPF programmu verifikācijas mehānismā pievienota iespēja apstrādāt programmas ar cikliem, ja cikla izpilde ir ierobežota un nevar izraisīt maksimālo instrukciju skaita pārsniegšanu;
  • Disku apakšsistēma, I/O un failu sistēmas
    • Failu sistēmai XFS ir pievienota vairāku pavedienu izpētes funkcionalitāte inode (piemēram, veicot kvotu pārbaudi). Jauni ioctl BULKSTAT un INUMBERS piedāvā piekļuvi iespējām, kas parādījās piektajā FS formāta versijā, piemēram, inode radīšanas laiks un iespēja noteikt BULKSTAT un INUMBERS parametrus katrai AG (Pieskaitāmo grupu) grupai;
    • Ext4 pievienota atbalsta funkcija tukšumu katalogos (nepiešķirtie bloki).
      Nodrošināta apstrāde nepārtrauktā flaga “i” (immutable) atvērtiem failiem (rakstīšanas aizliegums, ja karogs tika iestatīts brīdī, kad fails jau bija atvērts);
    • Btrfs nodrošina ātru crc32c īstenošanu visās arhitektūrās;
    • CIFS koda atbalsts smbdirect ir atcelts no eksperimentāla statusa. SMB3 ir pievienota iespēja izmantot kriptovalūtas algoritmus GCM režīmā. Pievienota jauna montēšanas opcija, lai izvilktu režīma parametrus no ACE (Access Control Entry) ierakstiem. Optimizēta open() izsaukumu veiktspēja;
    • F2FS ir pievienota opcija, lai ierobežotu atkritumu vākšanu, strādājot režīmā checkpoint=disable. Pievienots ioctl, lai dzēstu blokbloku diapazonus no F2FS, ļaujot veikt sekcijas izmēra pielāgošanu tiešraidē. Ir pievienota iespēja novietot F2FS mainīgās datu bāzes failu ar tiešo I/O atbalstu. Visām lietotājiem ir pievienota failu fiksēšanas un bloķēšanas piešķiršanas atbalsts;
    • Asinhronā I/O io_uring saskarnē ir pievienota atbalsts asinhronajām operācijām sendmsg() un recvmsg();
    • UBIFS failu sistēmā pievienots atbalsts saspiešanai, izmantojot zstd algoritmu un iespēja pārbaudīt parakstītu FS attēlu.
    • Ceph FS ir pievienots drošības birku atbalsts SELinux failiem;
    • NFSv4 ir ieviesta jauna montēšanas opcija „nconnect=”, kas nosaka savienojumu skaitu, kas izveidoti ar serveri. Satiksme starp šiem savienojumiem tiks sadalīta, izmantojot slodzes līdzsvarošanu. Turklāt NFSv4 serveris tagad izveido direktoriju /proc/fs/nfsd/clients ar informāciju par pašreizējiem klientiem, tostarp informāciju par atvērtiem failiem;
  • Virtualizācija un drošība
    • Kodola sastāvā iekļauts hipervizors iebūvējamām ierīcēm ACRN, kas izstrādāts ar domām par gatavību reāllaika uzdevumiem un piemērotību kritiski svarīgās sistēmās. ACRN nodrošina minimālas izmaksas, garantē zemas kavēšanās (low latency) un adekvātu atbildes laiku, mijiedarbojoties ar aparatūru. Tas atbalsta CPU, ievades/izvades, tīkla apakšsistēmas, grafikas un skaņas resursu virtualizāciju. ACRN var tikt izmantots vairāku izolētu virtuālo mašīnu palaišanai elektroniskajos vadības blokos, instrumentu paneļos, automobiļu informācijas sistēmās, patērētāju IoT ierīcēs un citā iebūvētajā tehnoloģijā;
    • Lietotāja režīmā Linux iegūts laika ceļojuma režīms, kas ļauj palēnināt vai paātrināt laiku UML virtuālajā vidē, lai atvieglotu laika saistīta koda atkļūdošanu. Turklāt ir pievienota opcija
      time-travel-start, kas ļauj sākt sistēmas pulksteņus no noteikta brīža epoch formātā;
    • Pievienotas jaunas komandrindas opcijas kodolam «init_on_alloc» un «init_on_free», kuras aktivizē pieprasījumu nulles vērtības piešķiršanai un atbrīvošanai (pietiekami nulles piešķiršanai un atbrīvošanai), tādējādi palielinot drošību ar papildu izmaksām par inicializāciju;
    • Pievienots jauns draiveris virtio-iommu ar paralēlvirtualizētu ierīci, kas ļauj sūtīt IOMMU pieprasījumus, piemēram, ATTACH, DETACH, MAP un UNMAP, uz virsmas transporta virtio bez atmiņas lapu tabulu emulācijas;
    • Pievienots jauns draiveris virtio-pmem, kas nodrošina piekļuvi glabāšanas ierīcēm, kas atspoguļotas fiziskajā adreses telpā, piemēram, NVDIMM;
    • Ir īstenota iespēja piesaistīt kriptogrāfiskās atslēgas lietotāja vai tīkla vārdtelpai (atslēgas kļūst nepieejamas ārpus izraudzītās vārdtelpas) un aizsargāt atslēgas ar ACL palīdzību;
    • Kriptosistēmā pievienots ir atbalsts ļoti ātrai nekriptogrāfiskajai hašēšanas algoritmai xxhash, kuras ātrums ir atkarīgs no atmiņas veiktspējas;
  • Tīkla subsistēma
    • Ir nodrošināta IPv4 adreses apstrāde diapazona 0.0.0.0/8, kas iepriekš nebija pieejams izmantošanai. Šīs apakšnetes ieviešana ļaus ļaus sadalīt vēl 16 miljonus IPv4 adreses;
    • Netfilter priekš nftables pievienots atbalsta aparatūras paātrināšanas mehānismus paketes filtrēšanā, izmantojot pievienotās vadītājā Flow Block API. Reteļu adapteriem var tikt izveidotas veselas noteikumu tabulas ar visiem ķēdēm. Ieslēgšana tiek veikta, piesaistot NFT_TABLE_F_HW flag tabulai. Atbalsta vienkāršus 3. un 4. līmeņa protokolu metadatus, darbības pieņemt/atmest, saskaņošanas pēc IP un tīkla portiem sūtītājam/saņēmējam un protokola tipam;
    • Pievienota iembērtā atbalsta savienojumu izsekošanai tīkla tiltiem, neprasot emulējošas slāņa br_netfilter pielietošanu;
    • Nf_tables pievienots atbalsts SYNPROXY modulim, kas atkārto līdzīgu funkcionalitāti no iptables, kā arī īstenota iespēja pārbaudīt noteikumos atsevišķas IPv4 galvenes opcijas;
    • Pievienota iespēja pievienot BPF programmas sistēmas zvani setsockopt() un getsockopt(), kas, piemēram, ļauj pievienot savus piekļuves apstrādātājus šiem zvaniem. Turklāt pievienota jauna izsaukuma punkts (hook), ar kuru var organizēt BPF programmas izsaukumu vienu reizi katras RTT (round-trip-time, ping laika) intervālā;
    • IPv4 un IPv6 iegūts jauns datu maršrutēšanas nexthop uzglabāšanas mehānisms, kas paredzēts maršrutēšanas tabulu mērogojamības palielināšanai. Veiktie testi parādīja, ka, izmantojot jauno sistēmu, 743 tūkstošu maršrutu kopums tika ielādēts kodolā tikai 4.3 sekundēs;
    • Bluetooth ir ieviesta funkcionalitāte, kas nepieciešama, lai atbalstītu LE ping;
  • Aprīkojums
    • Pievienota atbalsts x86 saderīgām procesoru kompānijai Zhaoxin, izstrādāti rezultātā kopprojekta starp VIA Technologies un Šanhajas pašvaldību. CPU ZX ģimene balstīta uz x86-64 Isaiah arhitektūru, kas turpina tehnoloģiju attīstību VIA Centaur;
    • DRM (Direct Rendering Manager) apakšsistēmā, kā arī grafikas draiveros amdgpu un i915, pievienots atbalsts, lai analizētu, apstrādātu un nosūtītu caur HDMI portu HDR (paplašinātais dinamiskais diapazons) metadatus, kas ļauj izmantot HDR paneļus un ekranus, kas spēj attēlot papildu spilgtuma diapazonus;
    • Draiverā amdgpu pievienots sākotnējais atbalsts GPU AMD NAVI (RX5700), kas ietver pamata draiveri, kodu, lai mijiedarbotos ar ekrāniem (DCN2), GFX un aprēķinu atbalstu (GFX10),
      SDMA 5 (System DMA0), barošanas kontroles līdzekļi un multimediju kodētāji/dekodētāji (VCN2). Amgpu arī uzlabots atbalsts kartēm ar GPU Vega12 un Vega20, kurām pievienotas papildu iespējas atmiņas un enerģijas patēriņa vadīšanai;
    • AMD amdkfd draiverī (diskrētām GPU, piemēram, Fiji, Tonga, Polaris) ir pievienota atbalsts VegaM GPU pamata kartēm;
    • Intel GPU draiverī Icelake mikroshēmām realizēts jauns daudzsegmentu gamma korekcijas režīms. Pievienota iespēja izejai caur DisplayPort YCbCr4:2:0 formātā. Pievienotas jaunas programmatūras versijas GuC SKL, BXT, KBL, GLK un ICL. Realizēta ekrāna jaudas izslēgšanas iespēja asinkronajā režīmā. Pievienota atbalsts renderēšanas konteksta saglabāšanai un atjaunošanai Ironlake (gen5) un gen4 (Broadwater — Cantiga) mikroshēmām, ļaujot atjaunot GPU stāvokli no lietotāja telpas, pārejot no vienām partiju operācijām uz citām;
    • Nouveau draiverī realizēta NVIDIA Turing TU116 mikroshēmas noteikšana;
    • UZBUMDR/KMS draivera iespējas tika paplašinātas ARM Komeda (Mali D71) ekrāna paātrinātājiem, pievienots atbalsts mērogošanai, slāņu dalīšanai/salīdzināšanai, pagriešanai, atliktai ierakstīšanai, AFBC, SMMU un krāsu kodēšanas formātiem Y0L2, P010, YUV420_8/10BIT;
    • MSM draiverī pievienots atbalsts Qualcomm procesoros izmantotajai Adreno A540 GPU sērijai, kā arī DSI kontrolierim MSM8998 Snapdragon 835;
    • Pievienoti draiveri LCD paneļiem Samsung S6E63M0, Armadeus ST0700, EDT ETM0430G0DH6, OSD101T2045-53TS,
      Evervision VGG804821, FriendlyELEC HD702E, KOE tx14d24vm1bpa, TFC S9700RTWV43TR-01B, EDT ET035012DM6 un VXT VL050-8048NT-C01;
    • Pievienots draiveris dekodēšanas paātrināšanas līdzekļu izmantošanai
      video, kas pieejami Amlogic Meson SoC;
    • v3d draiverī (Broadcom Video Core V GPU, ko izmanto Raspberry Pi) ir parādījusies atbalsts aprēķinu šēderu plānošana;
    • Pievienots spi tastatūru un skārienpaliktņu draiveris, ko izmanto mūsdienu Apple MacBook un MacBookPro portatīvo datoru modeļos;
    • Pievienota papildu aizsardzība ioctl izsaukumiem, kas saistīti ar floppy draiveri, un pats draiveris ir atzīts par bez atbalsta
      („orphaned”), kas nozīmē tā testēšanas izbeigšanu. Draiveris pagaidām tiek saglabāts kodolā, bet tā pareiza darbība netiek garantēta. Draiveris tiek uzskatīts par novecojušu, jo tā testēšanai ir grūti atrast darbojošos aparātus – visi aktuālie ārējie glabāšanas iekārtas parasti izmanto USB saskarni.
    • Pievienots cpufreq draiveris Raspberry Pi plātnēm, kas ļauj dinamiski kontrolēt procesora frekvences izmaiņas;
    • Pievienots atbalsts jaunajiem ARM SoC Mediatek mt8183 (4x Cortex-A73 + 4x Cortex-A53), TI J721E (2x Cortex-A72 + 3x Cortex-R5F + 3 DSP + MMA) un Amlogic G12B (4x Cortex-A73 + 2x Cortex-A53), kā arī plātņu:
      • 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.

Vienlaikus Latīņamerikas Brīvās Programmatūras fonds izveidoja
variantu pilnīgi brīvs kods 5.3 — Linux-libre 5.3-gnu, attīrīts no elementiem, kas satur slēgtā koda draiverus un apakšprogrammas, kuru pielietojums ir ierobežots ražotāja dēļ. Jaunajā izlaidumā ir izslēgta blobu ielāde qcom, hdcp drm, allegro-dvt un meson-vdec draiveros.
Atjaunināts blobu tīrīšanas kods draiveros un apakšsistēmās amdgpu, i915, netx, r8169, brcmfmac, rtl8188eu, adreno, si2157, pvrusb2, touchscreen_dmi, skaņas draiverī skylake, kā arī dokumentācijā par mikroshēmojumu.

Avots: opennet.lv

Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster