Linux kernelaren bertsioa 5.3

Bi hilabeteko garapenaren ondoren, Linus Torvalds aurkeztu nukleoa askatzea Linux 5.3. Aldaketa aipagarrienen artean: AMD Navi GPUetarako, Zhaoxi prozesadoreetarako eta Intel Speed ​​​​Select energia kudeatzeko teknologiarako euskarria, ziklorik erabili gabe itxaroteko umwait argibideak erabiltzeko gaitasuna,
PUZ asimetrikoentzako interaktibitatea areagotzen duen 'erabileraren clamping' modua, pidfd_open sistema-deia, 4/0.0.0.0 azpisaretik IPv8 helbideak erabiltzeko aukera, nftables hardware azelerazioa egiteko aukera, HDR euskarria DRM azpisisteman, ACRN integrazioa. hipervisor.

В iragarkia bertsio berria, Linusek kernelaren garapenaren arau nagusia gogorarazi zien garatzaile guztiei: erabiltzaile-espazioko osagaien portaera bera mantentzea. Nukleoan egindako aldaketek ez dute inola ere abian dauden aplikazioak hautsi behar edo erabiltzaile mailan erregresiorik eragin behar. Kasu honetan, portaera urratzeak ABIaren aldaketa, kode zaharkitua kentzea edo akatsak agertzea ez ezik, zuzen funtzionatzen duten hobekuntza baliagarrien zeharkako eragina ere eragin dezake. Adibide adierazgarri gisa zegoen baztertu erabilgarria optimizazioa Ext4 kodean, diskorako sarbide kopurua murrizten duena I/O eskaera txikietarako inodoen taularen aurre-irakurketa desgaituz.

Optimizazioak, diskoaren aktibitatearen jaitsieraren ondorioz, getrandom() ausazko zenbaki-sorgailuaren entropia astiroago metatzen hasi zela eta zenbait konfiguraziotan, egoera jakin batzuetan, izozketak antzeman zitezkeela kargatzean, entropia multzoa egon arte. beteta. Optimizazioa benetan erabilgarria denez, eztabaida bat sortu zen garatzaileen artean, non arazoa konpontzea proposatu zen getrandom() deiaren blokeo modu lehenetsia desgaituz eta aukerako bandera bat gehituz entropiaren zain egoteko, baina aldaketa horrek eragina izango zuen. ausazko zenbakien kalitatea kargatzearen hasierako fasean.

Bertsio berriak 15794 garatzaileren 1974 konponketa biltzen ditu,
adabakiaren tamaina - 92 MB (aldaketak 13986 fitxategiri eragin die, 258419 kode lerro gehitu dira,
599137 errenkada kendu dira). 39an aurkeztutako guztien %5.3 inguru
aldaketak gailu kontrolatzaileekin lotuta daude, aldaketen %12 gutxi gorabehera
Hardware-arkitekturari dagokion kodea eguneratzeko jarrera, %11.
sareko pilari lotutakoak, %3 fitxategi-sistemei eta %3 barnekoak
nukleoaren azpisistemak.

Nagusia berrikuntzak:

  • Memoria eta sistema zerbitzuak
    • 'pidfd' funtzionalitatearen etengabeko garapena PID berrerabilpen-egoerak kudeatzen laguntzeko (pidfd prozesu zehatz batekin lotuta dago eta ez da aldatzen, PID bat beste prozesu batekin lotu daiteke, berriz, PID horrekin lotutako uneko prozesua amaitu ondoren). Aurretik kernelera gehitu zen
      pidfd_send_signal() sistema-deia eta clone() deian CLONE_PIDFD bandera idfd_send_signal()-en erabiltzeko pidfd bat lortzeko. Clone() CLONE_PIDFD banderarekin erabiltzeak arazoak sor ditzake zerbitzu-kudeatzaileekin edo Android plataformako memoriarik gabeko memoria-amaitze-sistemarekin. Kasu honetan, fork() edo clone() dei bat erabiltzen da CLONE_PIDFDrik gabe hasteko.

      Kernel 5.3 sistema-deia sartu zuen pidfd_open(), eta horrek clone() deituz CLONE_PIDFD banderarekin sortu ez den prozesu arbitrario baterako pidfd egiaztagarria lor dezakezu. Pidfd bozketarako laguntza ere gehitu da poll() eta epoll() erabiliz, prozesu-kudeatzaileei prozesu arbitrarioen amaieraren jarraipena egiteko aukera ematen die lasterketa-baldintzaren beldurrik gabe, PID bat prozesu berri bati esleitzen bazaio. Pidfd-rekin lotutako prozesu bat amaitu dela jakinarazteko mekanismoa bere prozesu seme-alaba amaitu dela jakinarazteko berdina da;

    • Karga ainguratzeko mekanismoaren euskarria gehitu da ataza-antolatzaileari (Erabilera-blokeatzea), gutxieneko edo gehieneko maiztasun-tarteetara atxikitzeko aukera ematen dizu, CPUan aktibo dauden zereginen arabera. Aurkeztutako mekanismoak erabiltzailearen esperientziaren kalitateari zuzenean eragiten dioten zereginak bizkortzen ditu, zeregin horiek gutxienez "eskatutako" maiztasunaren beheko muturrean exekutatuz. Erabiltzailearen lanari eragiten ez dioten lehentasun baxuko zereginak “baimendutako” maiztasunaren goiko muga erabiliz abiarazten dira. Mugak sched_uclamp_util_min eta sched_uclamp_util_max atributuen bidez ezartzen dira sched_setattr() sistema-deian.
    • Energia kudeatzeko teknologiarako euskarria gehitu da Intel Speed ​​​​Select, Intel Xeon prozesadoreak dituzten zerbitzari batzuetan eskuragarri. Teknologia honek PUZaren nukleo desberdinetarako errendimendu eta partizio-erritmoaren ezarpenak ezartzeko aukera ematen du, eta horri esker, errendimendua lehenesteko aukera ematen dizu nukleo jakin batzuetan egindako zereginetarako, beste nukleo batzuen errendimendua sakrifikatuz;
    • Prozesuak erabiltzaileen espazioan emandako umwait instrukzioa erabiliz begiztak erabili gabe denbora laburrean itxaroteko gaitasuna. Instrukzio hau, umonitor eta tpause argibideekin batera, Intel-en datozen "Tremont" txipetan eskainiko da, eta Hyper Threading erabiltzean energetikoki eraginkorrak diren eta beste harien errendimenduari eragiten ez dioten atzerapenak ezartzeko aukera emango du;
    • RISC-V arkitekturarako, memoria-orri handietarako euskarria gehitu da;
    • kprobes trazatzeko mekanismoak nukleoko erakusleak deserreferentziak erabiltzailearen espaziora deserreferentziatzeko gaitasuna gehitu du, eta hori erabil daiteke, adibidez, sistema deietara pasatzen diren egituren edukia ebaluatzeko. Abio fasean egiaztapenak instalatzeko aukera ere gehitu da.
    • PREEMPT_RT aukera gehitu da konfigurazio fitxategian denbora errealean funtzionatzeko. Denbora errealeko modua onartzen duen kodea bera ez da oraindik nukleoan gehitu, baina aukeraren agerpena epe luzeko epikoen seinale ona da. integrazioa Realtime-Preempt adabakiak amaitzear daude;
    • clone3() sistema-deia gehitu da clone() interfazearen bertsio hedagarriagoa ezartzearekin, bandera kopuru handiagoa zehaztea ahalbidetzen duena;
    • bpf_send_signal() kudeatzailea gehitu da, BPF programek prozesu arbitrarioetara seinaleak bidaltzeko aukera emanez;
    • KVM hipervisorearen inguruneko perf gertaeren kasuan, gertaerak iragazteko mekanismo berri bat gehitu da, administratzaileak sistema gonbidatuaren aldean monitorizatzeko onartzen diren edo ez diren gertaera motak zehazteko aukera emanez;
    • Begiztadun programak prozesatzeko gaitasuna gehitu zaio eBPF aplikazioaren egiaztapen-mekanismoari, begiztaren exekuzioa mugatua bada eta ezin badu ekar aginduen gehienezko muga gainditzea;
  • Disko azpisistema, I/O eta fitxategi sistemak
    • XFS fitxategi-sistemak hari anitzeko inodoen saihespena onartzen du (adibidez, kuotak egiaztatzean). BULKSTAT eta INUMBERS ioctls berriak gehitu dira, FS formatuaren bosgarren edizioan agertutako ezaugarrietarako sarbidea emanez, hala nola, inodoaren jaiotze-ordua eta AG talde bakoitzeko BULKSTAT eta INUMBERS parametroak ezartzeko aukera (Allocation Groups);
    • Ext4n laguntza gehitu da direktorioetan hutsuneak (loturarik gabeko blokeak).
      Emandako izapidea marka "i" (aldaezina) fitxategi irekietarako (idaztea debekatuta dago egoera batean, bandera jada irekita zegoen unean ezarri bazen);

    • Btrfs-ek arkitektura guztietan crc32c inplementazio azkar baten definizioa eskaintzen du;
    • CIFS-en, smbdirect laguntzarako kodea kendu da garapen esperimental gisa. SMB3-k algoritmo kriptografikoak GCM moduan erabiltzeko gaitasuna gehitu zuen. Muntatze aukera berri bat gehitu da ACE (Access Control Entry) sarreretatik modu parametroak ateratzeko. Open() deiaren errendimendua optimizatu du;
    • F2FSri aukera bat gehitu zaio zabor-biltzailea mugatzeko checkpoint=desgai moduan exekutatzen denean. F2FS-tik bloke-barrutiak kentzeko ioctl gehitu da, partizioen tamainaren doikuntzak ahalbidetuz. F2FSn truke fitxategi bat jartzeko gaitasuna gehitu da I/O zuzena emateko. Fitxategi bat ainguratzeko eta antzeko fitxategietarako blokeak esleitzeko laguntza gehitu da erabiltzaile guztientzat;
    • Sendmsg() eta recvmsg() eragiketa asinkronoetarako laguntza gehitu zaio interfazeari sarrera/irteera asinkronoak io_uring egiteko;
    • Zstd algoritmoa erabiliz konpresiorako laguntza eta sinatutako FS irudiak egiaztatzeko gaitasuna gehitu dira UBIFS fitxategi-sistemara;
    • Ceph FS-k orain SELinux segurtasun-etiketak onartzen ditu fitxategietarako;
    • NFSv4rako, "nconnect="" muntatzeko aukera berri bat ezarri da, zerbitzariarekin ezarritako konexio kopurua zehazten duena. Lotura horien arteko trafikoa karga orekatzearen bidez banatuko da. Horrez gain, NFSv4 zerbitzariak /proc/fs/nfsd/clients direktorioa sortzen du orain uneko bezeroei buruzko informazioarekin, ireki dituzten fitxategiei buruzko informazioa barne;
  • Birtualizazioa eta segurtasuna
    • Nukleoak txertatutako gailuetarako hipervisor bat dauka ACRN, denbora errealeko zereginetarako prest egotea eta misio kritikoko sistemetan erabiltzeko egokitasunari begira idatzita dagoena. ACRN-k gutxieneko gainkostua eskaintzen du, latentzia baxua eta erreakzio egokia bermatzen ditu ekipoekin elkarreraginean. CPU baliabideen birtualizazioa onartzen du, I/O, sare azpisistema, grafikoak eta soinu eragiketak. ACRN makina birtual isolatu anitz exekutatzeko erabil daiteke kontrol-unitate elektronikoetan, aginte-paneletan, automozioko informazio-sistemetan, kontsumo-IoT gailuetan eta beste teknologia txertatuetan;
    • Erabiltzaile moduan Linux-en gehitu du Denbora bidaiatzeko modua, UML ingurune birtualean denbora moteldu edo bizkortzeko aukera ematen duena, denborarekin lotutako kodea errazago araztea ahalbidetzeko. Horrez gain, parametro bat gehitu da
      denbora-bidaia-hasiera, sistemaren erlojua une zehatz batetik abiatzea ahalbidetzen duena epoch formatuan;

    • Nukleoko komando-lerroko aukera berriak “init_on_alloc” eta “init_on_free” gehitu dira, zehazten denean, esleitutako eta askaturiko memoria-eremuen zero-zeroa gaituta dago (zeroekin beteta malloc eta free), eta horrek segurtasuna areagotzea ahalbidetzen du hasierako gastu gehigarriaren ondorioz;
    • Gidari berria gehitu da virtio-iommu gailu parabirtualizatu baten ezarpenarekin, ATTACH, DETACH, MAP eta UNMAP bezalako IOMMU eskaerak bidaltzeko aukera ematen duen birtual garraioaren gainean memoria-orrialdeen taulak emulatu gabe;
    • Gidari berria gehitu da virtio-pmem, helbide fisikoetara mapatutako biltegiratze-gailuetarako sarbidea adierazten duena, hala nola NVDIMMak;
    • Erabiltzaile edo sareko izen-espazio bati gako kriptografikoak eransteko gaitasuna inplementatu da (gakoak eskuraezinak dira hautatutako izen-espaziotik kanpo), baita gakoak babestu ere ACLak erabiliz;
    • Kriptografia azpisistemara gehitu kriptografikoa ez den hashing algoritmo oso azkar baten laguntza xxhash, zeinaren abiadura memoriaren errendimenduaren araberakoa da;
  • Sarearen azpisistema
    • 4/0.0.0.0 barrutian dauden IPv8 helbideak prozesatzea gaitu da, lehen erabilgarri ez zegoena. Azpisare honen aurkezpena ahalbidetuko du beste 16 milioi IPv4 helbide banatu;
    • Netfilter-en nftables-en gehitu paketeak iragazteko hardware-azelerazio-mekanismoen laguntza, gehitutako kontrolatzaileen bitartez Flow Block APIa. Kate guztiak dituzten arau-taula osoak sare-egokitzaileen alboan jar daitezke. Gaitzea NFT_TABLE_F_HW bandera taulari lotuz egiten da. Geruza 3 eta 4. geruza protokoloen metadatu sinpleak onartzen ditu, ekintzak onartu/baztertu, IP eta igorle/hartzaileen sareko ataken eta protokolo motaren mapak;
    • Gehituta sare-zubietarako konexio-jarraipenaren euskarria integratua, br_netfilter emulazio-geruza erabiltzea eskatzen ez duena;
    • nf_tauletan gehitu SYNPROXY modulurako euskarria, iptables-en antzeko funtzionalitateak errepikatzen dituena, eta IPv4 goiburuko aukeren banakako arauak egiaztatzeko gaitasuna ere ezartzen da;
    • Setsockopt() eta getsockopt() sistema-deiei BPF programak eransteko aukera gehitu da, eta horrek, adibidez, dei horiei zure sarbide-kudeatzaileak eransteko aukera ematen dizu. Horrez gain, dei-puntu (hook) berri bat gehitu da, eta horrekin BPF programarako deia antolatu ahal izango duzu behin RTT tarte bakoitzeko (joan-bidaia-denbora, ping-denbora);
    • IPv4 eta IPv6rako gehitu du Nexthop bideratze-datuak biltegiratzeko mekanismo berria bideratze-taulen eskalagarritasuna areagotzea helburu duena. Testek erakutsi zuten sistema berria erabiltzean 743 mila ibilbideko multzoa kargatzen zela nukleoan 4.3 segundotan;
    • Bluetootherako ezarrita LE ping-a onartzen duen funtzionaltasuna;
  • Оборудование
    • Gehituta konpainiaren x86-rekin bateragarriak diren prozesadoreetarako laguntza Zhaoxin, VIA Technologies eta Shanghaiko Udalaren arteko baterako proiektu baten ondorioz garatua. ZX CPU familia x86-64 Isaiah arkitekturan eraikita dago, teknologiaren garapenean jarraituz VIA Centaur;
    • DRM (Direct Rendering Manager) azpisistemak, baita amdgpu eta i915 kontrolatzaile grafikoek ere, HDR (barruti dinamiko handiko) metadatuak HDMI atakaren bidez analizatzeko, prozesatzeko eta bidaltzeko laguntza gehitu dute, eta HDR panelak eta pantailak erabiltzeko aukera ematen dute. distira-tarte gehigarriak bistaratzea;
    • Amdgpu kontrolatzaileak hasierako euskarria gehitu du AMD NAVI GPUrako (RX5700), oinarrizko kontrolatzailea, pantaila interakzio kodea (DCN2), GFX eta konputazio euskarria (GFX10) barne.
      SDMA 5 (System DMA0), energiaren kudeaketa eta multimedia kodegailu/deskodetzaileak (VCN2). amdgpu-k Vega12 eta Vega20 GPUetan oinarritutako txartelen euskarria ere hobetzen du, eta horiei memoria eta energia kudeatzeko gaitasun gehigarriak gehitu zaizkie;

    • VegaM GPUetan oinarritutako txartelen euskarria gehitu zaio amdkfd kontrolatzaileari (GPU diskretuetarako, hala nola Fiji, Tonga, Polaris);
    • Icelake txipetarako Intel bideo-txartelen DRM kontrolatzailean ezarrita segmentu anitzeko gamma zuzenketa modu berria. DisplayPort bidez ateratzeko gaitasuna gehitu da YCbCr4:2:0 formatuan. Firmware berria gehitu da GuC SKL, BXT, KBL, GLK eta ICLrentzat. Pantaila modu asinkronoan itzaltzeko gaitasuna ezarri da. Gehituta Ironlake (gen5) eta gen4 (Broadwater - Cantiga) txipetarako errendatze-testuingurua gordetzeko eta leheneratzeko laguntza, eta horrek erabiltzaileen espaziotik GPU egoera berrezar dezakezu batch eragiketa batetik bestera pasatzean;
    • Nouveau kontrolatzaileak NVIDIA Turing TU116 chipset-a detektatzen du;
    • ARM Komeda pantaila azeleragailuetarako DRM/KMS kontrolatzailearen gaitasunak zabaldu dira (Mali D71), eskalatzeko, zatitu/batzeko geruzak, biraketa, idazketa geroratua, AFBC, SMMU eta kolore kodeketa formatuak Y0L2, P010, YUV420_8/10BIT ditu. gehitu dira;
    • MSM kontrolatzaileak Qualcomm prozesadoreetan erabiltzen den A540 GPU Adreno serierako laguntza gehitzen du, baita Snapdragon 8998-rako MSM835 DSI kontrolagailurako ere;
    • Samsung S6E63M0, Armadeus ST0700, EDT ETM0430G0DH6, OSD101T2045-53TS LCD paneletarako kontrolatzaileak gehitu dira.
      Evervision VGG804821, FriendlyELEC HD702E, KOE tx14d24vm1bpa, TFC S9700RTWV43TR-01B, EDT ET035012DM6 eta VXT VL050-8048NT-C01;

    • Gehituta deskodetzeko azelerazio tresnak gaitzeko kontrolatzailea
      bideoak Amlogic Meson SoC-n eskuragarri;

    • v3d kontrolatzailean (Raspberry Pi-n erabiltzen den Broadcom Video Core V GPUrako) agertu zen onartzen konputazio itzalgailuak bidaltzea;
    • Gehituta Apple MacBook eta MacBookPro ordenagailu eramangarrien modelo modernoetan erabiltzen diren SPI teklatuetarako eta trackpadetarako kontrolatzailea;
    • Gehituta Diskete kontrolatzailearekin lotutako ioctl deien babes gehigarria, eta kontrolatzailea bera mantendu gabeko gisa markatuta dago
      (“umezurtza”), eta horrek bere probaren amaiera dakar. Gidaria nukleoan gordetzen da oraindik, baina funtzionamendu zuzena ez dago bermatuta. Gidaria zaharkitutzat jotzen da, zaila baita probatzeko lan-ekipoak aurkitzea - ​​egungo kanpoko disko guztiek USB interfazea erabiltzen dute normalean.

    • Gehituta cpufreq kontrolatzailea Raspberry Pi plaketarako, prozesadorearen maiztasunaren aldaketak dinamikoki kontrolatzeko aukera ematen duena;
    • ARM SoC Mediatek mt8183 (4x Cortex-A73 + 4x Cortex-A53), TI J721E (2x Cortex-A72 + 3x Cortex-R5F + 3 DSP + MMA) eta Amlogic G12B (4x Cortex-A73 + 2x Cortex-) berrientzako laguntza gehitu da. A53), baita taulak ere:
      • Purismoa 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.

Aldi berean, Latinoamerikako Software Librearen Fundazioa eratu
aukera guztiz doako nukleoa 5.3 - Linux-libre 5.3-gnu, doakoak ez diren osagaiak edo kode atalak dituzten firmware eta kontrolatzaileen elementuak garbitu ditu, fabrikatzaileak mugatzen baitu horien esparrua. Bertsio berrian, blob kargatzea desgaituta dago qcom, hdcp drm, allegro-dvt eta meson-vdec kontrolatzaileetan.
Blob garbiketa-kode eguneratua kontrolatzaile eta azpisistemetan amdgpu, i915, netx, r8169, brcmfmac, rtl8188eu, adreno, si2157, pvrusb2, touchscreen_dmi, skylake-ren soinu-kontrolatzailea, baita mikrokodearen dokumentazioan ere.

Iturria: opennet.ru

Gehitu iruzkin berria