Izdanje kernela Linux 5.3

Nakon dva mjeseca razvoja, Linus Torvalds uveo izdanje kernela Linux 5.3. Među najznačajnijim promjenama: podrška za AMD Navi GPU, Zhaoxi procesore i Intel Speed ​​Select tehnologiju upravljanja napajanjem, mogućnost korištenja umwait instrukcija za čekanje bez korištenja ciklusa,
'utilization clamping' mod koji povećava interaktivnost za asimetrične CPU, sistemski poziv pidfd_open, mogućnost korištenja IPv4 adresa iz 0.0.0.0/8 podmreže, mogućnost nftables hardverskog ubrzanja, HDR podršku u DRM podsistemu, integraciju ACRN-a hipervizor.

В najava novo izdanje, Linus je podsjetio sve programere na glavno pravilo razvoja kernela - održavanje istog ponašanja za komponente korisničkog prostora. Promjene u kernelu ne bi trebale ni na koji način prekinuti već pokrenute aplikacije ili dovesti do regresije na korisničkom nivou. U ovom slučaju, kršenje ponašanja može uzrokovati ne samo promjenu ABI-ja, uklanjanje zastarjelog koda ili pojavu grešaka, već i indirektan utjecaj korisnih poboljšanja koja rade ispravno. Kao ilustrativni primjer je bilo odbačen korisno optimizacija u Ext4 kodu, koji smanjuje broj pristupa drajvu tako što onemogućava prethodno čitanje inode tabele za male I/O zahteve.

Optimizacija je dovela do toga da je zbog smanjenja aktivnosti diska entropija za getrandom() generator slučajnih brojeva počela da se akumulira sporije i da se u nekim konfiguracijama, pod određenim okolnostima, moglo uočiti zamrzavanje tokom učitavanja sve dok se entropijski skup ne smanji. ispunjen. Budući da je optimizacija zaista korisna, među programerima je nastala rasprava u kojoj je predloženo da se problem riješi tako što će se onemogućiti zadani način blokiranja poziva getrandom() i dodati opcionalna zastavica za čekanje entropije, ali takva promjena bi utjecala na kvalitet slučajnih brojeva u početnoj fazi učitavanja.

Nova verzija uključuje 15794 popravki od 1974 programera,
veličina zakrpe - 92 MB (promjene su zahvatile 13986 datoteka, dodano je 258419 linija koda,
599137 red je uklonjen). Oko 39% svih predstavljenih u 5.3
promjene se odnose na drajvere uređaja, otprilike 12% promjena je
stav prema ažuriranju koda specifičnog za hardverske arhitekture, 11%
odnosi se na mrežni stog, 3% na sistem datoteka i 3% na interne
podsistemi kernela.

Glavni inovacije:

  • Memorijski i sistemski servisi
    • Nastavak razvoja 'pidfd' funkcionalnosti za pomoć u rješavanju situacija ponovnog korištenja PID-a (pidfd je povezan sa određenim procesom i ne mijenja se, dok se PID može povezati s drugim procesom nakon što se trenutni proces povezan s tim PID-om okonča). Prethodno je dodan kernelu
      pidfd_send_signal() sistemski poziv i CLONE_PIDFD zastavicu u pozivu clone() za dobijanje pidfd-a za upotrebu u idfd_send_signal(). Korištenje clone() sa CLONE_PIDFD zastavicom može uzrokovati probleme sa servis menadžerima ili Android platformom sistema prisilnog prekidanja bez memorije. U ovom slučaju, za pokretanje se koristi poziv fork() ili clone() bez CLONE_PIDFD.

      Kernel 5.3 uveo je sistemski poziv pidfd_open(), koji vam omogućava da dobijete provjerljivi pidfd za proizvoljni postojeći proces koji nije kreiran pozivanjem clone() sa zastavicom CLONE_PIDFD. Takođe je dodata podrška za pidfd anketiranje pomoću poll() i epoll(), što omogućava menadžerima procesa da prate završetak proizvoljnih procesa bez straha od uslova trke ako se PID dodeli novom procesu. Mehanizam za obavještavanje da je proces povezan sa pidfd-om prekinut je isti kao i obavještavanje da je njegov podređeni proces prekinut;

    • Podrška za mehanizam pričvršćivanja opterećenja je dodana u planer zadataka (Stezanje upotrebe), što vam omogućava da se pridržavate minimalnog ili maksimalnog raspona frekvencije, ovisno o zadacima aktivnim na CPU-u. Predstavljeni mehanizam ubrzava zadatke koji direktno utiču na kvalitet korisničkog iskustva tako što izvršava ove zadatke barem na donjem kraju „tražene“ frekvencije. Zadaci niskog prioriteta koji ne utiču na rad korisnika pokreću se korišćenjem gornje granice „dozvoljene“ frekvencije. Ograničenja se postavljaju preko atributa sched_uclamp_util_min i sched_uclamp_util_max u sistemskom pozivu sched_setattr().
    • Dodata podrška za tehnologiju upravljanja energijom Intel Speed ​​Select, dostupno na odabranim serverima sa Intel Xeon procesorima. Ova tehnologija vam omogućava da postavite performanse i postavke propusnosti particije za različite CPU jezgre, što vam omogućava da date prioritet performansama za zadatke koji se obavljaju na određenim jezgrama, žrtvujući performanse na drugim jezgrama;
    • Procesi u korisničkom prostoru obezbeđeno mogućnost čekanja kratko vrijeme bez korištenja petlji pomoću umwait instrukcije. Ova instrukcija, zajedno sa instrukcijama za umonitor i tpause, biće ponuđena u Intelovim predstojećim "Tremont" čipovima i omogućiće implementaciju kašnjenja koja su energetski efikasna i ne utiču na performanse drugih niti kada se koristi Hyper Threading;
    • Za RISC-V arhitekturu, dodata je podrška za velike memorijske stranice;
    • Mehanizam praćenja kprobes je dodao mogućnost dereferenciranja pokazivača kernela na korisnički prostor, koji se može koristiti, na primjer, za procjenu sadržaja struktura proslijeđenih na sistemske pozive. Dodata je i mogućnost instaliranja provjera u fazi pokretanja.
    • Dodata opcija PREEMPT_RT u konfiguracijski fajl za rad u realnom vremenu. Sam kod za podršku režima u realnom vremenu još uvek nije dodan kernelu, ali pojava opcije je dobar znak da je dugoročni ep integracija Realtime-Preempt zakrpe su pri kraju;
    • Dodan sistemski poziv clone3() sa implementacijom proširenije verzije sučelja clone() koja omogućava specificiranje većeg broja zastavica;
    • Dodan bpf_send_signal() rukovalac, omogućavajući BPF programima da šalju signale proizvoljnim procesima;
    • Za perf događaje u okruženju hipervizora KVM, dodat je novi mehanizam filtriranja događaja, koji dozvoljava administratoru da odredi tipove događaja koji su dozvoljeni ili nedozvoljeni za praćenje na strani gostujućeg sistema;
    • Mogućnost obrade programa sa petljama dodata je mehanizmu verifikacije eBPF aplikacije ako je izvršenje petlje ograničeno i ne može dovesti do prekoračenja ograničenja maksimalnog broja instrukcija;
  • Diskovni podsistem, I/O i sistemi datoteka
    • XFS sistem datoteka sada podržava zaobilaženje inode sa više niti (na primjer, prilikom provjere kvota). Dodati su novi ioctls BULKSTAT i INUMBERS, koji omogućavaju pristup funkcijama koje su se pojavile u petom izdanju FS formata, kao što su vrijeme rođenja inode i mogućnost postavljanja parametara BULKSTAT i INUMBERS za svaku AG grupu (grupe za dodjelu);
    • U Ext4 podrška dodata praznine u direktorijima (nepovezani blokovi).
      Obrada obezbeđena zastavica “i” (nepromjenjiva) za otvorene datoteke (zabranjeno je pisanje u situaciji ako je zastavica postavljena u vrijeme kada je datoteka već bila otvorena);

    • Btrfs pruža definiciju brze implementacije crc32c na svim arhitekturama;
    • U CIFS-u, kod za smbdirect podršku je uklonjen kao eksperimentalni razvoj. SMB3 je dodao mogućnost korištenja kriptografskih algoritama u GCM modu. Dodata je nova opcija montiranja za izdvajanje parametara režima iz ACE (Access Control Entry) unosa. Optimizirana izvedba open() poziva;
    • Dodata opcija za F2FS za ograničavanje sakupljača smeća kada se radi u checkpoint=disable modu. Dodan ioctl za uklanjanje raspona blokova iz F2FS, omogućavajući prilagođavanja veličine particije u hodu. Dodata mogućnost postavljanja swap datoteke u F2FS kako bi se osigurao direktan I/O. Dodata podrška za kačenje fajla i dodeljivanje blokova za slične fajlove za sve korisnike;
    • Dodata podrška za asinhrone operacije sendmsg() i recvmsg() interfejsu za asinhroni ulaz/izlaz io_uring;
    • Podrška za kompresiju pomoću zstd algoritma i mogućnost provjere potpisanih FS slika dodane su u UBIFS sistem datoteka;
    • Ceph FS sada podržava SELinux sigurnosne oznake za datoteke;
    • Za NFSv4 implementirana je nova opcija montiranja “nconnect=” koja određuje broj veza uspostavljenih sa serverom. Saobraćaj između ovih veza će se distribuirati pomoću balansiranja opterećenja. Pored toga, NFSv4 server sada kreira direktorijum /proc/fs/nfsd/clients sa informacijama o trenutnim klijentima, uključujući informacije o datotekama koje su otvorili;
  • Virtuelizacija i sigurnost
    • Kernel uključuje hipervizor za ugrađene uređaje ACRN, koji je napisan s ciljem spremnosti za zadatke u realnom vremenu i prikladnosti za upotrebu u kritičnim sistemima. ACRN obezbeđuje minimalne troškove, garantuje nisko kašnjenje i adekvatan odziv pri interakciji sa opremom. Podržava virtuelizaciju CPU resursa, I/O, mrežni podsistem, grafičke i zvučne operacije. ACRN se može koristiti za pokretanje više izolovanih virtuelnih mašina u elektronskim kontrolnim jedinicama, instrument tablama, automobilskim informacionim sistemima, potrošačkim IoT uređajima i drugoj ugrađenoj tehnologiji;
    • U korisničkom načinu Linuxa dodano Način putovanja kroz vrijeme, koji vam omogućava da usporite ili ubrzate vrijeme u virtualnom UML okruženju kako biste olakšali otklanjanje grešaka koda vezanog za vrijeme. Dodatno, dodat je parametar
      time-travel-start, koji omogućava da sistemski sat počne od određenog trenutka u formatu epohe;

    • Dodane su nove opcije komandne linije kernela “init_on_alloc” i “init_on_free”, kada je specificirano, omogućeno je nuliranje dodijeljenih i oslobođenih memorijskih područja (punjenje nulama za malloc i free), što omogućava povećanu sigurnost zbog dodatnih troškova inicijalizacije;
    • Dodan je novi drajver virtio-iommu sa implementacijom paravirtualizovanog uređaja koji vam omogućava da šaljete IOMMU zahteve kao što su ATTACH, DETACH, MAP i UNMAP preko virtio transporta bez emulacije tablica memorijskih stranica;
    • Dodan je novi drajver virtio-pmem, koji predstavlja pristup uređajima za skladištenje mapiranih u fizički adresni prostor, kao što su NVDIMM;
    • Implementirana mogućnost pričvršćivanja kriptografskih ključeva korisničkom ili mrežnom imenskom prostoru (ključevi postaju nedostupni izvan odabranog imenskog prostora), kao i zaštita ključeva korištenjem ACL-ova;
    • U kripto podsistem dodano podrška za vrlo brz nekriptografski algoritam heširanja xxhash, čija brzina zavisi od performansi memorije;
  • Mrežni podsistem
    • Omogućena obrada IPv4 adresa u rasponu 0.0.0.0/8, koji je ranije bio nedostupan za korištenje. Uvođenje ove podmreže će dozvoliti distribuirati još 16 miliona IPv4 adresa;
    • U Netfilter za nftables dodano podrška za mehanizme hardverskog ubrzanja za filtriranje paketa kroz upotrebu dodatnih drajvera Flow Block API. Čitave tabele pravila sa svim lancima mogu se postaviti na stranu mrežnih adaptera. Omogućavanje se vrši vezivanjem zastavice NFT_TABLE_F_HW za tabelu. Podržava jednostavne metapodatke protokola Layer 3 i Layer 4, akcije prihvatanja/odbijanja, mapiranja po IP-u i mrežnim portovima pošiljaoca/primaoca i tipu protokola;
    • Dodano ugrađena podrška za praćenje veze za mrežne mostove, koja ne zahtijeva korištenje sloja za emulaciju br_netfilter;
    • U nf_tables dodano implementirana je podrška za SYNPROXY modul, koji replicira sličnu funkcionalnost iz iptables-a, a također je implementirana mogućnost provjere pravila za pojedinačne opcije u IPv4 zaglavlju;
    • Dodata je mogućnost pričvršćivanja BPF programa na sistemske pozive setsockopt() i getsockopt(), što vam, na primjer, omogućava da priložite vlastite rukovaoce pristupa ovim pozivima. Dodatno, dodata je nova pozivna tačka (hook) sa kojom možete organizirati poziv BPF programu jednom za svaki RTT interval (povratno vrijeme, vrijeme pinga);
    • Za IPv4 i IPv6 dodano novi mehanizam za skladištenje podataka o rutiranju nexthop koji ima za cilj povećanje skalabilnosti tabela rutiranja. Testovi su pokazali da je pri korištenju novog sistema skup od 743 hiljade ruta učitan u kernel za samo 4.3 sekunde;
    • Za Bluetooth implementirano funkcionalnost potrebna za podršku LE pinga;
  • Oprema
    • Dodano podrška za x86 kompatibilne procesore kompanije Zhaoxin, razvijen kao rezultat zajedničkog projekta VIA Technologies i opštine Šangaj. ZX CPU porodica je izgrađena na x86-64 Isaiah arhitekturi, nastavljajući razvoj tehnologije VIA Centaur;
    • DRM (Direct Rendering Manager) podsistem, kao i amdgpu i i915 grafički drajveri, dodali su podršku za raščlanjivanje, obradu i slanje HDR (visokog dinamičkog opsega) metapodataka preko HDMI porta, omogućavajući upotrebu HDR panela i ekrana koji mogu prikaz dodatnih raspona svjetline;
    • Amdgpu drajver je dodao početnu podršku za AMD NAVI GPU (RX5700), koja uključuje osnovni drajver, kod interakcije sa ekranom (DCN2), GFX i podršku za računare (GFX10),
      SDMA 5 (System DMA0), upravljanje napajanjem i multimedijalni koderi/dekoderi (VCN2). amdgpu takođe poboljšava podršku za kartice zasnovane na Vega12 i Vega20 GPU-ovima, za koje su dodate dodatne mogućnosti upravljanja memorijom i napajanjem;

    • Dodata podrška za kartice zasnovane na VegaM GPU-ovima u amdkfd drajveru (za diskretne GPU-ove, kao što su Fiji, Tonga, Polaris);
    • U DRM drajveru za Intel video kartice za Icelake čipove implementirano novi multi-segmentni mod korekcije gama. Dodata mogućnost izlaza preko DisplayPort-a u YCbCr4:2:0 formatu. Dodat je novi firmver GuC za SKL, BXT, KBL, GLK i ICL. Implementirana je mogućnost isključivanja napajanja ekrana u asinhronom načinu rada. Dodano podrška za spremanje i vraćanje konteksta renderiranja za Ironlake (gen5) i gen4 (Broadwater - Cantiga) čipove, što vam omogućava da vratite stanje GPU-a iz korisničkog prostora pri prelasku s jedne batch operacije na drugu;
    • Nouveau drajver omogućava detekciju NVIDIA Turing TU116 čipseta;
    • Mogućnosti DRM/KMS drajvera za ARM Komeda akceleratore ekrana (Mali D71) su proširene, podrška za skaliranje, split/spajanje slojeva, rotaciju, odloženo pisanje, AFBC, SMMU i formate kodiranja boja Y0L2, P010, YUV420_8/10BIT dodano;
    • MSM drajver dodaje podršku za A540 GPU Adreno seriju koja se koristi u Qualcomm procesorima, kao i podršku za MSM8998 DSI kontroler za Snapdragon 835;
    • Dodati drajveri za LCD panele Samsung S6E63M0, Armadeus ST0700, EDT ETM0430G0DH6, OSD101T2045-53TS,
      Evervision VGG804821, FriendlyELEC HD702E, KOE tx14d24vm1bpa, TFC S9700RTWV43TR-01B, EDT ET035012DM6 i VXT VL050-8048NT-C01;

    • Dodano drajver za omogućavanje alata za ubrzanje dekodiranja
      video zapisi dostupni u Amlogic Meson SoC-u;

    • U v3d drajveru (za Broadcom Video Core V GPU koji se koristi u Raspberry Pi) pojavio se podrška dispečiranje računalnih shadera;
    • Dodano drajver za SPI tastature i trackpad-ove koji se koriste u modernim modelima Apple MacBook i MacBookPro laptopova;
    • Dodano dodatna zaštita za ioctl pozive povezane sa drajverom diskete, a sam drajver je označen kao neodržavan
      („siroče“), što implicira prekid njegovog testiranja. Drajver je i dalje pohranjen u kernelu, ali njegov ispravan rad nije zagarantovan. Upravljački program se smatra zastarjelim, jer je teško pronaći radnu opremu za testiranje - svi trenutni eksterni diskovi u pravilu koriste USB sučelje.

    • Dodano cpufreq drajver za Raspberry Pi ploče, koji vam omogućava da dinamički kontrolišete promene u frekvenciji procesora;
    • Dodata podrška za novi ARM SoC Mediatek mt8183 (4x Cortex-A73 + 4x Cortex-A53), TI J721E (2x Cortex-A72 + 3x Cortex-R5F + 3 DSP-a + MMA) i Amlogic G12B (4x Cortex-A73 +- A2), kao i table:
      • 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.

Istovremeno, Latinoamerička fondacija za slobodni softver formirana
opcija potpuno besplatan kernel 5.3 - Linux-libre 5.3-gnu, očišćen od firmvera i elemenata upravljačkog programa koji sadrže neslobodne komponente ili dijelove koda, čiji je opseg ograničen od strane proizvođača. U novom izdanju, blob učitavanje je onemogućeno u drajverima qcom, hdcp drm, allegro-dvt i meson-vdec.
Ažuriran kod za čišćenje mrlja u drajverima i podsistemima amdgpu, i915, netx, r8169, brcmfmac, rtl8188eu, adreno, si2157, pvrusb2, touchscreen_dmi, drajver zvuka za skylake, kao i u dokumentaciji mikrokoda.

izvor: opennet.ru

Dodajte komentar