Izdanje jezgre Linux 5.3

После двух месяцев разработки Линус Торвальдс представил релиз ядра Linux 5.3. Među najistaknutijim promenama su: podrška za GPU AMD Navi, procesore Zhaoxi i tehnologiju upravljanja potrošnjom Intel Speed Select, mogućnost korišćenja instrukcija umwait za čekanje bez korišćenja petlji,
povećavanje interaktivnosti režima 'utilization clamping' za asimetrične CPU, sistemski poziv pidfd_open, mogućnost korišćenja IPv4 adresa iz podmreže 0.0.0.0/8, mogućnost hardverskog ubrzanja nftables, podrška za HDR u DRM podsystemu, integracija hipervizora ACRN.

V najavi novog izdanja Linus je podsetio sve programere na glavno pravilo razvoja jezgra — očuvanje nepromenjenog ponašanja za komponente korisničkog prostora. Promene u jezgru ne smeju nikako narušiti već funkcionalne aplikacije i dovesti do regresija na korisničkom nivou. Pri tome, narušavanje ponašanja može izazvati ne samo promenu ABI, uklanjanje zastare koda ili pojavu grešaka, već i indirektni uticaj ispravnih korisnih poboljšanja. Kao ilustrativan primer, odbačeno je korisno optimizacija u Ext4 kodu, koja smanjuje broj pristupa skladištu isključivanjem anticipativnog čitanja inode tabela za male I/O zahteve.

Optimizacija je dovela do toga da je zbog smanjenja diskovne aktivnosti entropija za generator nasumičnih brojeva getrandom() počela da se akumulira sporije i u nekim konfiguracijama, u određenim okolnostima, moglo se primetiti zastajkivanje prilikom pokretanja sve do popunjavanja entropijskog bazena. Budući da je optimizacija zaista korisna, među programerima je nastala rasprava, u kojoj je predloženo da se problem reši isključivanjem blokirajućeg režima rada poziva getrandom() po defaultu uz dodatak opcionalne zastavice za čekanje entropije, ali bi takva promena uticala na kvalitet nasumičnih brojeva u ranom stadijumu pokretanja.

U novu verziju je uključeno 15794 ispravki od 1974 programera,
veličina zakrpe — 92 MB (promene su obuhvatile 13986 fajlova, dodato je 258419 linija koda,
izbrisano 599137 linija). Oko 39% svih predstavljenih promena u 5.3
se odnosi na drajvere uređaja, otprilike 12% promena ima
veze sa ažuriranjem koda specifičnog za hardverske arhitekture, 11%
povezano je s omrežnim stekom, 3 % — z datotečnimi sistemi in 3 % z notranjimi
podsystemi jedra.

Glavne novosti:

  • Pomnilnik in sistemske storitve
    • Nadaljevali smo razvoj funkcionalnosti 'pidfd', ki pomaga obravnavati situacije s ponovno uporabo PID (pidfd je povezan s specifičnim procesom in se ne spremeni, medtem ko se PID lahko poveže z drugim procesom po zaključku trenutnega procesa, povezanega s tem PID). Prej je bilo že dodano
      sistemski klic pidfd_send_signal() in zastavica CLONE_PIDFD v klicu clone(), kar omogoča pridobitev pidfd za uporabo v idfd_send_signal(). Pri uporabi klica clone() z zastavico CLONE_PIDFD so lahko nastale težave s servisnimi menedžerji ali sistemom za prisilno zaključevanje procesov ob pomanjkanju pomnilnika na platformi Android. V tem primeru se za zagon uporablja klic fork() ali clone() brez CLONE_PIDFD.

      V jedru 5.3 je predstavljen sistemski klic pidfd_open(), ki omogoča pridobitev preverjenega pidfd za poljuben obstoječi proces, ki ni bil ustvarjen skozi klic clone() z zastavico CLONE_PIDFD. Dodana je bila tudi podpora za polling pidfd z uporabo poll() in epoll(), kar omogoča menedžerjem procesov spremljanje zaključkov poljubnih procesov, brez skrbi glede stanja dirke v primeru dodelitve PID novemu procesu. Mehanizem obveščanja o zaključku dela procesa, povezanega s pidfd, je podoben obveščanju o zaključku svojega otroškega procesa;

    • V razporejevalnik nalog je dodana podpora mehanizmu omejevanja obremenitve (Utilization clamping), ki omogoča upoštevanje minimalnih ali maksimalnih razponov frekvenc, odvisno od aktivnih nalog na CPU. Predstavljeni mehanizem pospeši naloge, ki neposredno vplivajo na kakovost interakcije z uporabnikom, s sprožanjem teh nalog vsaj v spodnji meji 'zahtevane' frekvence. Nizkoprioritetne naloge, ki ne vplivajo na delo uporabnika, se sprožijo z uporabo zgornjega limita 'dovoljene' frekvence. Limiti so določeni prek atributov sched_uclamp_util_min in sched_uclamp_util_max v sistemskem klicu sched_setattr().
    • Dodana je podpora za tehnologijo upravljanja porabe energije Intel Speed Select, ki je na voljo na nekaterih strežnikih z Intel Xeon procesorji. Omenjena tehnologija omogoča nastavitev zmogljivosti in prepustnosti particij za različna jedra CPU, kar omogoča prioritizacijo zmogljivosti za naloge, ki se izvajajo na določenih jedrih, pri čemer se žrtvuje zmogljivost na drugih jedrih;
    • Procesom v uporabniškem prostoru zagotovljene možnost čakanja za kratek čas brez uporabe zank z uporabo ukaza umwait. Ta ukaz, skupaj z ukazi umonitor in tpause, bo na voljo v prihajajočih čipih Intel 'Tremont', kar bo omogočilo implementacijo zamud, ki so učinkovite z vidika porabe energije in ne vplivajo na zmogljivost drugih niti pri uporabi Hyper Threadinga;
    • Podpora za velike pomnilniške strani (huge pages) je bila dodana za arhitekturo RISC-V;
    • V mehanizem sledenja 'kprobes' je bila dodana možnost dereferenciranja kazalcev jedra v uporabniški prostor, kar se lahko uporablja, na primer, za ocenjevanje vsebine struktur, ki se posredujejo v sistemske klice. Dodana je bila tudi možnost nastavitev preverjanj med nalaganjem.
    • V konfiguracijsko datoteko je bila dodana možnost PREEMPT_RT za delovanje v realnem času. Samo koda za podporo realnemu času še ni vključena v jedro, vendar je pojav te možnosti dober znak, da se večletna saga o integracije Realtimskih preempt patchih bliža koncu;
    • Dodana je bila sistemska klicna funkcija clone3(), ki realizira bolj razširljiv variant vmesnika clone(), ki dovoljuje določitev večjega števila zastavic;
    • Dodana je bila obravnava bpf_send_signal(), ki omogoča BPF-programom pošiljanje signalov poljubnim procesom;
    • Za dogodke perf v okolju hipervizorja KVM je bil dodan nov mehanizem filtriranja dogodkov, ki omogoča skrbniku, da določi vrste dogodkov, ki so dovoljene ali prepovedane za spremljanje na strani gostujočega sistema;
    • V mehanizem overitve eBPF-aplikacij je bila dodana možnost obravnavanja programov s cikli, če je izvajanje cikla omejeno in ne more privedeti do prekoračitve meje na največje število ukazov;
  • Дисковая подсистема, ввод/вывод и файловые системы
    • Za datotečni sistem XFS je bila implementirana možnost večpredmetnega prehoda inode (na primer pri preverjanju kvot). Dodana sta nova ioctl BULKSTAT in INUMBERS, ki omogočata dostop do funkcij, ki so se pojavile v peti izdaji formata FS, kot so čas nastanka inode in možnost določanja parametrov BULKSTAT in INUMBERS za vsako skupino AG (dodelitvene skupine);
    • V Ext4 dodana podpora praznin v imenikih (nepovezani bloki).
      Zagotovljena je obdelava zastavice „i“ (immutable) za odprte datoteke (prepoved pisanja v situaciji, ko je bila zastavica nastavljena, ko je bila datoteka že odprta);
    • V Btrfs je zagotovljena hitra implementacija crc32c na vseh arhitekturah;
    • V CIFS je odstranjen označevalec eksperimentalnega razvoja za kodo, podporo smbdirect. V SMB3 je dodana možnost uporabe kriptoalgoritmov v načinu GCM. Dodana je nova možnost montaže za pridobivanje parametrov načina iz zapisov ACE (vhodnih kontrolnih zapisov). Optimizirana je zmogljivost klica open();
    • V F2FS je dodana možnost za omejevanje zbiralnika odpadkov pri delovanju v načinu checkpoint=disable. Dodan je ioctl za odstranjevanje razponov blokov iz F2FS, kar omogoča prilagoditev velikosti particije med delovanjem. Dodana je možnost namestitve datoteke za izmenjavo v F2FS z zagotavljanjem neposrednega vnosa/izvoza. Za vse uporabnike je dodana podpora za pritrditev datoteke in dodeljevanje blokov za take datoteke;
    • V vmesnik za asinhroni vnos/izvoz io_uring je dodana podpora za asinhrone operacije sendmsg() in recvmsg();
    • V datotečni sistem UBIFS je dodana podpora za stiskanje z uporabo algoritma zstd in možnost overitve podpisanih slik FS;
    • V FS Ceph je dodana podpora za varnostne oznake SELinux za datoteke;
    • Za NFSv4 je bila implementirana nova možnost montaže „nconnect=“, ki določa število vzpostavljenih povezav s strežnikom. Promet med tema povezavama bo razporejen z uravnoteženjem obremenitve. Poleg tega NFSv4 strežnik zdaj ustvarja imenik /proc/fs/nfsd/clients z informacijami o trenutnih strankah, vključno z informacijami o odprtih datotekah;
  • Virtualizacija in varnost
    • V jedro je vključen hipervizor za vgrajene naprave ACRN, napisan z myślą o gotowości do wykonywania zadań w czasie rzeczywistym oraz przydatności do stosowania w systemach krytycznych dla bezpieczeństwa. ACRN zapewnia minimalne opóźnienia, gwarantując niskie opóźnienia (low latency) i adekwatną responsywność podczas interakcji z urządzeniami. Obsługiwana jest wirtualizacja zasobów CPU, wejścia/wyjścia, systemu sieciowego, operacji graficznych i dźwiękowych. ACRN może być stosowany do uruchamiania wielu izolowanych maszyn wirtualnych w elektronicznych blokach sterujących, panelach przyrządów, systemach informacyjnych w samochodach, urządzeniach konsumenckich IoT oraz innej technice wbudowanej;
    • W trybie użytkownika Linux dodano tryb „podróży w czasie”, który umożliwia spowolnienie lub przyspieszenie czasu w wirtualnym otoczeniu UML w celu ułatwienia debugowania kodu związanego z czasem. Dodatkowo dodano parametr
      time-travel-start, który pozwala na uruchomienie zegarów systemowych od określonego momentu w formacie epoch;
    • Dodano nowe opcje wiersza poleceń jądra „init_on_alloc” i „init_on_free”, które, gdy są ustawione, aktywują zerowanie alokowanych i zwalnianych obszarów pamięci (wypełnianie zerami przy malloc i free), co zwiększa bezpieczeństwo poprzez dodatkowe nakłady na inicjalizację;
    • Dodano nowy sterownik virtio-iommu , implementujący parawirtualizowane urządzenie, które umożliwia wysyłanie zapytań IOMMU, takich jak ATTACH, DETACH, MAP i UNMAP, przy użyciu transportu virtio bez emulacji tabel stron pamięci;
    • Dodano nowy sterownik virtio-pmem, umożliwiające dostęp do urządzeń pamięci masowej, które są odzwierciedlone w fizycznej przestrzeni adresowej, takich jak NVDIMM;
    • Zrealizowano możliwość przypinania kluczy kryptograficznych do przestrzeni nazw użytkownika lub sieci (klucze stają się niedostępne poza wybraną przestrzenią nazw), a także zabezpieczania kluczy za pomocą ACL;
    • W podsystemie kryptograficznym je dodana wsparcie dla bardzo szybkiego algorytmu niekryptograficznego haszowania xxhash, którego szybkość opiera się na wydajności pamięci;
  • Mrežna podsistem
    • Zrealizowano obsługę adresów IPv4 w zakresie 0.0.0.0/8, który wcześniej nie był dostępny do wykorzystania. Wprowadzenie tej podsieci pozwoli na rozdzielenie dodatkowych 16 milionów adresów IPv4;
    • W Netfilter dla nftables je dodana wsparcie dla mechanizmów sprzętowego przyspieszania filtracji pakietów poprzez zastosowanie dodanych do sterowników Flow Block API. Na strani mrežnih adaptera mogu se ispravljati cele tabele pravila sa svim pravilima. Aktivira se vezivanjem NFT_TABLE_F_HW oznake za tabelu. Podržani su jednostavni metapodaci protokola nivoa 3 i 4, akcije prihvati/odbaci, usklađivanja po IP-u i mrežnim portovima pošiljaoca/primalaca i tipu protokola;
    • Dodana ugrađena podrška za praćenje veza za mrežne mostove, koja ne zahteva korišćenje emulatora br_netfilter;
    • U nf_tables je dodana podrška za SYNPROXY modul, koji ponavlja sličnu funkcionalnost iz iptables, a implementirana je i mogućnost provere u pravilima po pojedinačnim opcijama u IPv4 zaglavlju;
    • Dodata je mogućnost pridruživanja BPF programa sistemskim pozivima setsockopt() i getsockopt(), što, na primer, omogućava pridruživanje vlastitih rutina pristupa ovim pozivima. Takođe, dodata je nova tačka poziva (hook), pomoću koje se može organizovati poziv BPF programa jednom u svakom RTT intervalu (round-trip-time, vreme kašnjenja);
    • Za IPv4 i IPv6 dodano novi mehanizam skladištenja podataka o ruti nexthop, usmjeren na povećanje skalabilnosti tabelama ruta. Izvršeni testovi su pokazali da je upotrebom novog sistema učitavanje 743 hiljade ruta u jezgro trajalo svega 4.3 sekunde;
    • Za Bluetooth je bila uvedena funkcionalnost potrebna za podršku za LE ping;
  • Oprema
    • Dodana podrška za x86-kompatibilne procesore kompanije Zhaoxin, razvijeni kao rezultat zajedničkog projekta VIA Technologies i opštine Šangaj. CPU porodica ZX je zasnovana na x86-64 Isaiah arhitekturi, koja nastavlja razvoj tehnologija VIA Centaur;
    • U DRM (Direct Rendering Manager) podsistemu, kao i u grafičkim drajverima amdgpu i i915, dodana je podrška za analiziranje, obradu i slanje HDR metapodataka putem HDMI porta (prošireni dinamički opseg), što omogućava korišćenje HDR panela i ekrana koji mogu da prikazuju dodatne opsege osvetljenja;
    • U amdgpu drajveru dodata je osnovna podrška za AMD NAVI GPU (RX5700), koja uključuje osnovni drajver, kod za interakciju sa ekranima (DCN2), podršku za GFX i proračune (GFX10),
      SDMA 5 (System DMA0), alati za upravljanje napajanjem i multimedijalni enkoderi/dekoderi (VCN2). U amdgpu je takođe poboljšana podrška za grafičke karte zasnovane na GPU Vega12 i Vega20, za koje su dodate dodatne mogućnosti upravljanja memorijom i potrošnjom energije;
    • V drivere amdkfd (za diskretne GPU, kot so Fiji, Tonga, Polaris) je bila dodana podpora za grafične kartice z arhitekturo GPU VegaM;
    • V DRM-driverju za grafične kartice Intel za čipe Icelake, je realiziran je nov večsegmentni način gamma korekcije. Dodana je možnost izhoda preko DisplayPort v formatu YCbCr4:2:0. Dodane so nove programske opreme, GuC, za SKL, BXT, KBL, GLK in ICL. Implementirana je možnost izklopa napajanja zaslona v asinhronem načinu. Dodana Podpora za shranjevanje in obnavljanje konteksta upodabljanja za čipe Ironlake (gen5) in gen4 (Broadwater — Cantiga), kar omogoča obnovitev stanja GPU iz uporabniškega prostora pri prehodu z ene serijske obdelave na drugo;
    • V driverju Nouveau je omogočeno prepoznavanje čipov NVIDIA Turing TU116;
    • Razširjene so možnosti DRM/KMS driverja za pospeševalnike zaslonskih operacij ARM Komeda (Mali D71), dodana podpora za razdeljevanje/združevanje plasti, vrtenje, odloženo zapisovanje, AFBC, SMMU in formate kodiranja barv Y0L2, P010, YUV420_8/10BIT;
    • V driverju MSM je bila dodana podpora za GPU serije A540 Adreno, ki se uporablja v procesorjih Qualcomm, ter podpora za DSI kontroler MSM8998 za Snapdragon 835;
    • Dodani so driverji za LCD panele Samsung S6E63M0, Armadeus ST0700, EDT ETM0430G0DH6, OSD101T2045-53TS,
      Evervision VGG804821, FriendlyELEC HD702E, KOE tx14d24vm1bpa, TFC S9700RTWV43TR-01B, EDT ET035012DM6 in VXT VL050-8048NT-C01;
    • Dodano Driver za aktivacijo sredstev za pospeševanje dekodiranja,
      videov, dostopnih v SoC Amlogic Meson;
    • V driverju v3d (za GPU Broadcom Video Core V, uporabljenem v Raspberry Pi) se je pojavila, podpora razporeditev računalniških senčilnikov;
    • Dodano driver za SPI tipkovnice in sledilne ploščice, ki se uporabljajo v sodobnih modelih prenosnikov Apple MacBook in MacBookPro;
    • Dodana Dodatna zaščita klicev ioctl, povezanih z driverjem floppy, sam driver pa je označen kot brez podpore,
      ("orphaned"), kar pomeni, da se njegovo testiranje preneha. Driver ostaja v jedru, vendar njegova pravilna delovanje ni zagotovljena. Driver je obravnavan kot zastarel, saj je težko najti delujočo opremo za njegovo testiranje — vsi aktualni zunanji pomnilniki običajno uporabljajo USB vmesnik.
    • Dodano cpufreq-driver za naprave Raspberry Pi, ki omogoča dinamično upravljanje z višino procesorja;
    • Dodala se je podpora za nove ARM SoC Mediatek mt8183 (4x Cortex-A73 + 4x Cortex-A53), TI J721E (2x Cortex-A72 + 3x Cortex-R5F + 3 DSP + MMA) in Amlogic G12B (4x Cortex-A73 + 2x Cortex-A53), ter naprave:
      • 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.

Latinoameriški sklad prostega programske opreme je formirala
varijantu popolnoma prost jedro 5.3 — Linux-libre 5.3-gnu, očiščen od elementov vdelane programske opreme in gonilnikov, ki vsebujejo nesvobodne komponente ali dele kode, katerih uporaba je omejena s strani proizvajalca. V novi različici je onemogočeno nalaganje blobov v gonilnikih qcom, hdcp drm, allegro-dvt in meson-vdec.
Posodobljena je koda za čiščenje blobov v gonilnikih in podsystemih amdgpu, i915, netx, r8169, brcmfmac, rtl8188eu, adreno, si2157, pvrusb2, touchscreen_dmi, ter v zvočnem gonilniku za skylake, kot tudi v dokumentaciji za mikrokode.

Izvor: opennet.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster