Lëshimi i bërthamës Linux 5.3

Pas dy muajsh zhvillimi, Linus Torvalds paraqiti lëshimi i kernelit Linux 5.3. Ndër ndryshimet më të dukshme janë: mbështetje për GPU AMD Navi, procesorët Zhaoxi dhe teknologjinë e menaxhimit të konsumit të energjisë Intel Speed Select, mundësia e përdorimit të komandave umwait për pritjen pa përdorimin e cikleve,
rregulli i rritjes së ndërveprueshmërisë 'utilization clamping' për CPU asimetrikë, thirrja sistemike pidfd_open, mundësia e përdorimit të adresave IPv4 nga nënrrjeti 0.0.0.0/8, mundësia e përshpejtimit harduerik të nftables, mbështetje për HDR në nënësinë DRM, integrimi i hipervizorit ACRN.

njoftimin Lëshimi i ri i Linus-it iu kujtoi të gjithë zhvilluesve rregullin kryesor të zhvillimit të bërthamës — ruajtja e qëndrueshmërisë së sjelljes për komponentët e hapësirës së përdoruesit. Ndryshimet në bërthamë nuk duhet të prishin në asnjë mënyrë aplikacionet që funksionojnë tashmë dhe të çojnë në regresion në nivelin e përdoruesit. Megjithatë, ndryshimi i sjelljes mund të shkaktojë jo vetëm ndryshimin e ABI, heqjen e kodit të vjetruar apo paraqitjen e gabimeve, por edhe një ndikim të tërthortë mbi përmirësimet e dobishme që funksionojnë saktë. Si një shembull të qartë, është hequr optimizimi i dobishëm në kodin Ext4, i cili redukton numrin e kërkesave në diska duke çaktivizuar leximin e parashikueshëm të tabelës inode për kërkesat e vogla të hyrjes/daljes. Optimizimi çoi në faktin se, për shkak të uljes së aktivitetit në disk, entropia për gjeneratorin e numrave të rastësishëm getrandom() filloi të akumulohej më ngadalë dhe në disa konfiguracione, në përputhje me rrethanat të caktuara, mund të vërehen ngecje gjatë ngarkimit deri në mbushjen e rezervuarit të entropisë. Pasi optimizimi është me të vërtetë i dobishëm, midis zhvilluesve u krijua një diskutim, në të cilin u propozua zgjidhja e problemit përmes çaktivizimit të modit bllokues të thirrjes getrandom() si parazgjedhje duke shtuar një flamur opsional për pritjen e entropisë, por një ndryshim i tillë do të ndikonte në cilësinë e numrave të rastësishëm në fazën fillestare të ngarkimit.

Në versionin e ri janë pranuar 15794 korrigjime nga 1974 zhvillues,

madhësia e patch-it është 92 Mb (ndryshimet preken 13986 skedarë, janë shtuar 258419 rreshta kodi,
janë hequr 599137 rreshta). Rreth 39% e të gjitha ndryshimeve të paraqitura në 5.3
lidhen me drejtuesit e pajisjeve, rreth 12% e ndryshimeve kanë
të bëjnë me përmirësimin e kodit specifik për arkitekturën harduerike, 11%
nga nënësitë e bërthamës.
lidhen me grykën e rrjetit, 3% - me sistemet e skedarëve dhe 3% - me nën-sistemet
подсистемами ядра.

Main innovations:

  • Memorie dhe shërbime sistemike
    • Përmirësimi i funksionalitetit 'pidfd', që ndihmon në trajtimin e situatave me ripërdorimin e PID (pidfd lidhet me një proces të caktuar dhe nuk ndryshon, ndërsa PID mund të lidhët me një proces tjetër pas përfundimit të procesit aktual që është e lidhur me këtë PID). Më parë në bërthamë u shtua
      thirrja sistemike pidfd_send_signal() dhe flamuri CLONE_PIDFD në thirrjen clone(), që lejon marrjen e pidfd për përdorim në idfd_send_signal(). Kur përdoret thirrja clone() me flamurin CLONE_PIDFD, mund të ndodhnin probleme me menaxherët e shërbimeve ose sistemin e forcimit të përfundimit të proceseve në platformën Android gjatë mungesës së memories. Në këtë rast, për të nisur përdoret thirrja fork() ose clone() pa CLONE_PIDFD.

      Në bërthamën 5.3 është paraqitur thirrja sistemike pidfd_open(), që lejon marrjen e një pidfd të verifikuar për një proces të ekzistueshëm, i krijuar jo përmes thirrjes clone() me flamurin CLONE_PIDFD. Gjithashtu është shtuar mbështetje për polling të pidfd me poll() dhe epoll(), që lejon menaxherët e proceseve të ndjekin përfundimet e proceseve të rastësishme, pa rrezikuar një gjendje garash në rastin e caktimit të një PID për një proces të ri. Mekanizmi i shpalljes së përfundimit të një procesi të lidhur me pidfd është i ngjashëm me informimin për përfundimin e procesit të tij të fëmijës;

    • Në planifikuesin e detyrave është shtuar mbështetje për mekanizmin e ngarkesës së rregulluar (Utilization clamping), që lejon respektimin e intervaleve minimale ose maksimale të frekuencave, sipas detyrave aktive në CPU. Mekanizmi i paraqitur përshpejton detyrat që ndikojnë drejtpërdrejt në cilësinë e ndërveprimit me përdoruesin, përmes nisjes së këtyre detyrave si minimum në kufirin e poshtëm të frekuencës 'të kërkuar'. Detyrat me prioritet të ulët, që nuk ndikojnë në punën e përdoruesit, nisën duke përdorur kufirin e sipërm të frekuencës 'të lejuar'. Kufijtë përcaktohen përmes atributeve sched_uclamp_util_min dhe sched_uclamp_util_max në thirrjen sistemike sched_setattr().
    • Është shtuar mbështetje për teknologjinë e menaxhimit të konsumit të energjisë Intel Speed Select, e cila në disa servera me procesorë Intel Xeon. Kjo teknologji lejon të vendosni parametra performancës dhe gjerësisë së bandës për bërthamat e ndryshme të CPU-ve, duke e bërë kështu më të rëndësishme performancën për detyrat që ekzekutohen në bërthama të caktuara, duke sakrifikuar performancën në bërthama të tjera;
    • Proceseve në hapësirën e përdoruesit kanë përfituar mundësinë e pritjes për një kohë të shkurtër pa përdorimin e cikleve nëpërmjet instrukcionit umwait. Ky instrukcion, së bashku me instrukcionet umonitor dhe tpause, do të ofrohet në çipat e ardhshëm nga Intel 'Tremont', dhe do të lejojë zbatimin e vonesave që janë efikase në aspektin e konsumit të energjisë dhe nuk ndikojnë në performancën e proceseve të tjera në përdorim të Hyper Threading;
    • Për arkitekturën RISC-V është shtuar mbështetje për faqe të mëdha memorie (huge pages);
    • Në mekanizmin e gjurmimit 'kprobes' është shtuar mundësia e dereferencimit të treguesve të bërthamës në hapësirën e përdoruesit, gjë që mund të përdoret, për shembull, për të vlerësuar përmbajtjen e strukturave të kaluara në thirjet sistemore. Gjithashtu është shtuar mundësia për të vendosur kontrollin në fazën e ngarkesës.
    • Në skedarin e konfigurimit është shtuar opsioni PREEMPT_RT për të punuar në modin e vërtetë të kohës. Kodi i vetë mbështetjes për këtë mod është ende i pa shtuar në bërthamë, por shfaqja e opsionit është një shenjë e mirë që epopeja shumëvjeçare për integrimin patch-ave Realtime-Preempt po i afrohet fundit;
    • Është shtuar thirrja sistemore clone3() me implementimin e një varianti më të zgjeruar të ndërfaqes clone(), që lejon tregimin e numrit më të madh të flagjeve;
    • Është shtuar menaxheri bpf_send_signal(), i cili lejon programet BPF të dërgojnë sinjale proceseve të rastësishme;
    • Për ngjarjet perf në ambientin e hipervizorit KVM është shtuar një mekanizëm i ri filtrimi ngjarjesh, që lejon administratorin të përcaktojë llojet e ngjarjeve, të lejuara ose të ndaluara për monitorim në anën e sistemit mik;
    • Në mekanizmin e verifikimit të aplikacioneve eBPF është shtuar mundësia për të trajtuar programe me cikle, nëse ekzekutimi i ciklit është i kufizuar dhe nuk mund të çojë në tejkalimin e kufirit për numrin maksimal të instruksioneve;
  • Sistemi i disqeve, hyrja/ dalje dhe sistemet e skedarëve
    • Për sistemin e skedarëve XFS është realizuar mundësia e skanimit multithread të inode-ve (për shembull, gjatë kontrollit të kuotave). Janë shtuar ioctl të reja BULKSTAT dhe INUMBERS, që ofrojnë qasje në aftësitë që u shfaqën në edicionin e pestë të formatit FS, siç janë koha e lindjes së inode dhe mundësia e caktimit të parametrave BULKSTAT dhe INUMBERS për çdo grup AG (Grupet e Alokimit);
    • Në Ext4 është shtuar mbështetje për hapësira të zbrazëta në katalogë (blloqe të pa lidhura).
      Është siguruar përpunimi i flagut "i" (immutable) për skedarët e hapur (ndalimi i shkruarjes në situatën kur flagu ishte vendosur në momentin kur skedari tashmë ishte hapur);
    • Në Btrfs është siguruar përcaktimi i realizimit të shpejtë crc32c në të gjitha arkitekturën;
    • Në CIFS, kodi për mbështetje të smbdirect ka hequr shenjën e zhvillimit eksperimental. Në SMB3 është shtuar mundësia e përdorimit të algoritmeve kriptografike në mënyrën GCM. Janë shtuar opsione të reja për montim për nxjerrjen e parametrave të modës nga shënimet ACE (Shënimi i Kontrollit të Qasjes). Performanca e thirrjes open() është optimizuar;
    • Në F2FS është shtuar një opsion për kufizimin e mbledhësit të mbeturinave gjatë punës në modën checkpoint=disable. është shtuar ioctl për fshirjen e blloqeve të skedarëve nga F2FS, i cili lejon realizimin e rregullimit të madhësisë së pjesës në kohë reale. Është shtuar mundësia e vendosjes në F2FS të skedarëve të ndihmës me sigurinë e hyrjes së drejtpërdrejtë. Për të gjithë përdoruesit është shtuar mbështetje për ngjitjen e skedarëve dhe alokimin e blloqeve për skedarë të tillë;
    • Në ndërfaqen për hyrje/jeshë asinkrone io_uring është shtuar mbështetje për operacionet asinkrone sendmsg() dhe recvmsg();
    • Në sistemin e skedarëve UBIFS është shtuar mbështetje për kompresimin me përdorimin e algoritmit zstd dhe mundësinë e verifikimit të imazheve të nënshkruara të FS;
    • Në FS Ceph është shtuar mbështetje për etiketat e sigurisë SELinux për skedarët;
    • Për NFSv4 është realizuar një opsion i ri montimi "nconnect=", i cili përcakton numrin e lidhjeve të vendosura me serverin. Trafici midis këtyre lidhjeve do të shpërndahet duke përdorur balancimin e ngarkesës. Për më tepër, serveri NFSv4 tani krijon një katalog /proc/fs/nfsd/clients me informacion mbi klientët aktualë, duke përfshirë të dhëna mbi skedarët e hapur nga ata;
  • Virtualizimi dhe siguria
    • Në bërthamë është përfshirë një hipervizor për pajisjet e inkorporuara ACRN, i shkruar me sy nga gatishmëria për të përmbushur detyrat në kohë reale dhe përshtatshmërinë për përdorim në sisteme të rëndësishme. ACRN ofron kosto minimale operimi, garanton vonesa të ulëta dhe përgjigje të përshtatshme gjatë ndërveprimit me harduerin. Mbështetet virtualizimi i burimeve CPU, hyrjes/daljes, nën-sistemit rrjet, operacioneve me grafikë dhe tingull. ACRN mund të përdoret për të nisur disa makina virtuale të izoluar në blloqet elektronike të kontrollit, panelet instrumenteve, sistemet informacioni automobilistik, pajisjet IoT për konsumatorët dhe teknologjitë e tjera të inkorporuara;
    • Në User-mode Linux është shtuar modi 'udhëtim në kohë', që lejon ngadalësimin ose përshpejtimin e kohës në mjedisin virtual UML për të lehtësuar debugin e kodit lidhur me kohën. Gjithashtu është shtuar parametri
      time-travel-start, që lejon nismën e orëve të sistemit nga një moment i caktuar në formatin epoch;
    • Janë shtuar opsione të reja të komandës në bërthamë 'init_on_alloc' dhe 'init_on_free', të cilat, kur specifikohen, aktivizojnë zerozimin e regjioneve të alokuara dhe të lira të memorjes (mbushje me zero gjatë malloc dhe free), që përmirëson sigurinë falë kostove të shtuar për inicializimin;
    • është shtuar një drejtues i ri virtio-iommu me implementimin e një pajisjeje paravirtualizuese, e cila lejon dërgimin e kërkesave IOMMU, si ATTACH, DETACH, MAP dhe UNMAP, mbi transportin virtio pa imituar tabelat e faqes së memorjes;
    • është shtuar një drejtues i ri virtio-pmem, që përfaqëson aksesin në pajisjet e ruajtjes, të reflektuara në hapësirën fizike të adresave, si NVDIMM;
    • Është realizuar mundësia e lidhjes së çelësave kriptografikë me hapësirën e emrave të përdoruesve ose rrjeteve (çelësat bëhen të paarritshëm jashtë hapësirës së emrave të zgjedhur), si dhe mbrojtja e çelësave përmes ACL;
    • Në nën-sistemin kripto është shtuar mbështetje për një algoritëm shumë të shpejtë të hash-it jo-kriptografik xxhash, shpejtësia e të cilit kufizohet nga performanca e memorjes;
  • Sistemi rrjetor
    • Është siguruar përpunimi i adresave IPv4 në intervalin 0.0.0.0/8, i cili më parë nuk ishte në dispozicion për përdorim. Kjo nëntërrugë do të lejojë do të shpërndajë edhe 16 milion adresash IPv4;
    • Në Netfilter për nftables është shtuar mbështetje për mekanizmat e accelerimit harduerik të filtrimit të paketave përmes aplikimit të shtuar në drejtuesit Flow Block APITë dhënat e rregullave të plota mund të kalojnë në adaptatorët e rrjetit me këto tabela. Aktivizimi bëhet duke lidhur flakan NFT_TABLE_F_HW me tabelën. Mbështeten metadatat e thjeshta të protokolleve të niveleve 3 dhe 4, veprimet prano/hedh, përputhjet sipas IP-së dhe porteve të rrjetit të dërguesit/marrësit dhe llojit të protokollit;
    • Shtuar mbështetje e integruar për gjurmimin e lidhjeve për urat e rrjetit, që nuk kërkon përdorimin e një shtrese simuluese br_netfilter;
    • Në nf_tables është shtuar mbështetje për modulën SYNPROXY, e cila ripërsërit funksionalitetin e ngjashëm nga iptables, si dhe implementimi i mundësisë për të kontrolluar rregullat sipas opsioneve të veçanta në header-in IPv4;
    • Shtohet mundësia për të lidhur programet BPF me thirrjet sistemike setsockopt() dhe getsockopt(), e cila, për shembull, lejon lidhjen e menaxherëve tuaj të aksesit me këto thirrje. Për më tepër, është shtuar një pikë thirrje (hook), me anë të së cilës mund të organizoni thirrjen e programit BPF një herë për çdo interval RTT (round-trip-time, koha e pingut);
    • Për IPv4 dhe IPv6 është shtuar një mekanizëm i ri për ruajtjen e të dhënave të routerit nexthop, e cila synon rritjen e shkallëzueshmërisë së tabelave të routing. Testimet e kryera treguan se me përdorimin e sistemit të ri, një koleksion prej 743 mijë rrugësh u ngarkua në bërthamën vetëm për 4.3 sekonda;
    • Për Bluetooth është implementuar funksionaliteti i nevojshëm për mbështetje LE ping;
  • Pajisje
    • Shtuar mbështetje për procesorët e kompanisë së kompjuterëve x86-visualë Zhaoxin, të zhvilluara si rezultat i një projekti të përbashkët midis VIA Technologies dhe bashkisë së Shangait. Familja e CPU ZX është ndërtuar mbi arkitekturën x86-64 Isaiah, duke vazhduar zhvillimin e teknologjive VIA Centaur;
    • Në nëndisiplinën DRM (Menaxheri i Renderimit të Drejtë), si dhe në drajverët grafikë amdgpu dhe i915, është shtuar mbështetje për analizimin, përpunimin dhe dërgimin përmes portit HDMI të metadatat HDR (gamë dinamike e zgjeruar), që lejon përdorimin e paneleve HDR dhe ekranëve që mund të shfaqin gamë shtesë të ndriçimit;
    • Në drajverin amdgpu është shtuar mbështetje fillestare për GPU-të AMD NAVI (RX5700), e cila përfshin drajverin bazë, kodin për ndërveprimin me ekranet (DCN2), mbështetje për GFX dhe llogaritjet (GFX10),
      SDMA 5 (System DMA0), mjetet për menaxhimin e energjisë dhe koduesit/dekoduesit multimedia (VCN2). Në amdgpu gjithashtu është përmirësuar mbështetja për kartat e bazuara në GPU Vega12 dhe Vega20, për të cilat janë shtuar mundësi të reja për menaxhimin e memories dhe konsumit të energjisë;
    • Në drejtuesin amdkfd (për GPU të veçanta, siç janë Fiji, Tonga, Polaris) është shtuar mbështetje për kartat e bazuara në GPU VegaM;
    • Në drejtuesin DRM për kartat grafike Intel për çipet Icelake, është implementuar është shtuar një mënyrë e re multi-segment për korrigjimin e gamës. Është shtuar mundësia e daljes përmes DisplayPort në formatin YCbCr4:2:0. Është shtuar firmware e re; GuC për SKL, BXT, KBL, GLK dhe ICL. Implementohet mundësia e fikjes së energjisë së ekranit në modin asinhron. Shtuar mbështetje për ruajtjen dhe rikthimin e kontekstit të renderimit për çipet Ironlake (gen5) dhe gen4 (Broadwater — Cantiga), duke lejuar rikthimin e gjendjes së GPU nga hapësira e përdoruesit kur kalon nga ekzekutimi i operacioneve të ndryshme në grumbuj;
    • Në drejtuesin Nouveau është siguruar identifikimi i çipsetit NVIDIA Turing TU116;
    • Janë zgjeruar mundësitë e drejtuesit DRM/KMS për akceleratorët e operacioneve në ekran ARM Komeda (Mali D71), është shtuar mbështetje për skalimin, ndarjen/bashkimin e shtresave, rotacionin, regjistrimin e vonuar, AFBC, SMMU dhe formatet e kodimit të ngjyrave Y0L2, P010, YUV420_8/10BIT;
    • Në drejtuesin MSM është shtuar mbështetje për serinë A540 GPU Adreno, e cila përdoret në procesorët Qualcomm, si dhe mbështetje për kontrolluesin DSI MSM8998 për Snapdragon 835;
    • Janë shtuar drejtuesit për panelët LCD Samsung S6E63M0, Armadeus ST0700, EDT ETM0430G0DH6, OSD101T2045-53TS,
      Evervision VGG804821, FriendlyELEC HD702E, KOE tx14d24vm1bpa, TFC S9700RTWV43TR-01B, EDT ET035012DM6 dhe VXT VL050-8048NT-C01;
    • Shtuar drejtues për aktivizimin e mjeteve të përshpejtimit të dekodimit
      video, të disponueshme në SoC Amlogic Meson;
    • Në drejtuesin v3d (për GPU Broadcom Video Core V, e përdorur në Raspberry Pi) është shfaqur поддержка menaxhimi i shenjave të llogaritjes;
    • Shtuar drejtues për tastierat SPI dhe pad-tat, e përdorur në modelet moderne të laptopëve Apple MacBook dhe MacBookPro;
    • Shtuar mbrojtje shtesë për thirrjet ioctl të lidhura me drejtuesin floppy, ndërsa drejtuesi është shënuar si mëkat i braktisur
      (“orphaned”), që do të thotë që testimi i tij ka përfunduar. Drejtuesi mbetet ende në bërthamë, por funksionimi i tij i saktë nuk garanton. Drejtuesi konsiderohet si i vjetëruar, pasi është e vështirë të gjejmë pajisje funksionuese për për të testuar — të gjithë diskut aktualë të jashtëm zakonisht përdorin ndërfaqen USB.
    • Shtuar drejtuesi cpufreq për bordet Raspberry Pi, që lejon menaxhimin dinamik të ndryshimit të frekuencës së procesorit;
    • Janë shtuar mbështetje për ARM SoC të rinj Mediatek mt8183 (4x Cortex-A73 + 4x Cortex-A53), TI J721E (2x Cortex-A72 + 3x Cortex-R5F + 3 DSPs + MMA) dhe Amlogic G12B (4x Cortex-A73 + 2x Cortex-A53), si dhe bordin:
      • 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.

Në të njëjtën kohë, Fondi Latinoamerikan i Software-it të Lirë formoi
një variant në bërthamën e plotë të lirë 5.3Linux-libre 5.3-gnu, e pastruar nga elementet e firmuerëve dhe shoferëve që përmbajnë komponentë të pa lirë ose segmente kodi, përdorimi i të cilave është i kufizuar nga prodhuesi. Në versionin e ri, ngarkimi i blob-eve është çaktivizuar në shoferët e qcom, hdcp drm, allegro-dvt dhe meson-vdec.
Kodi i pastrimit të blob-eve në shoferët dhe nën-sistemet amdgpu, i915, netx, r8169, brcmfmac, rtl8188eu, adreno, si2157, pvrusb2, touchscreen_dmi, shoferi audio për skylake, si dhe në dokumentacionin për mikrokodin është përditësuar.

Burimi: opennet.ru

Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS 🔥 Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS - ProHoster