Izdanje jezgre Linuxa 5.15

Nakon dva mjeseca razvoja, Linus Torvalds predstavio je izdanje Linux kernela 5.15. Značajne promjene uključuju: novi NTFS upravljački program s podrškom za pisanje, ksmbd modul s implementacijom SMB poslužitelja, DAMON podsustav za nadzor pristupa memoriji, primitive za zaključavanje u stvarnom vremenu, podršku za fs-verity u Btrfs-u, poziv sustava process_mrelease za memoriju sustava za odgovor na gladovanje, modul daljinske certifikacije dm-ima.

Nova verzija uključuje 13499 popravaka od 1888 programera, veličina zakrpe je 42 MB (promjene su utjecale na 10895 datoteka, dodane su 632522 linije koda, 299966 redaka je izbrisano). Oko 45% svih promjena uvedenih u 5.15 odnosi se na upravljačke programe uređaja, približno 14% promjena odnosi se na ažuriranje koda specifičnog za hardverske arhitekture, 14% se odnosi na mrežni stog, 6% se odnosi na sustave datoteka, a 3% povezani su s unutarnjim podsustavima jezgre.

Glavne inovacije:

  • Diskovni podsustav, I/O i datotečni sustavi
    • Kernel je usvojio novu implementaciju NTFS datotečnog sustava, koju je otvorio Paragon Software. Novi upravljački program može raditi u načinu pisanja i podržava sve značajke trenutne verzije NTFS 3.1, uključujući proširene atribute datoteka, pristupne liste (ACL-ove), način kompresije podataka, učinkovit rad s praznim prostorima u datotekama (sparse) i ponovno reproduciranje promjena iz zapisnik za vraćanje cjelovitosti nakon kvarova.
    • Datotečni sustav Btrfs podržava mehanizam fs-verity, koji se koristi za transparentnu kontrolu integriteta i autentičnosti pojedinačnih datoteka pomoću kriptografskih hashova ili ključeva povezanih s datotekama, pohranjenih u području metapodataka. Prethodno je fs-verity bio dostupan samo za Ext4 i F2fs datotečne sustave.

      Btrfs također dodaje podršku za mapiranje korisničkih ID-ova za montirane datotečne sustave (prethodno podržano za FAT, ext4 i XFS datotečne sustave). Ova vam značajka omogućuje usporedbu datoteka određenog korisnika na montiranoj stranoj particiji s drugim korisnikom na trenutnom sustavu.

      Druge promjene Btrfs-a uključuju: brže dodavanje ključeva u indeks direktorija za poboljšanje performansi stvaranja datoteka; mogućnost rada raid0 s jednim uređajem i raid10 s dva (na primjer, tijekom procesa rekonfiguracije polja); opcija “rescue=ibadroots” za ignoriranje netočnog stabla opsega; ubrzanje operacije "slanja"; smanjenje sukoba zaključavanja tijekom operacija preimenovanja; mogućnost korištenja 4K sektora na sustavima s veličinom memorijske stranice od 64K.

    • U XFS-u je stabilizirana mogućnost korištenja datuma nakon 2038. u datotečnom sustavu. Implementiran je mehanizam za odgođenu deaktivaciju inodea i podrška za odgođenu instalaciju i uklanjanje atributa datoteke. Kako bi se uklonili problemi, uklonjena je mogućnost onemogućavanja diskovnih kvota za već montirane particije (možete prisilno onemogućiti kvote, ali izračun koji je povezan s njima nastavit će se, pa je potrebno ponovno montiranje da ih potpuno onemogućite).
    • U EXT4 se radilo na povećanju performansi pisanja delalloc međuspremnika i obrade datoteka siročadi koje nastavljaju postojati zbog činjenice da ostaju otvorene, ali nisu povezane s direktorijem. Obrada operacija odbacivanja premještena je iz niti jbd2 kthread kako bi se izbjeglo blokiranje operacija s metapodacima.
    • F2FS je dodao opciju "discard_unit=block|segment|section" za povezivanje operacija odbacivanja (označavanje oslobođenih blokova koji se više ne mogu fizički pohraniti) za poravnanje u odnosu na blok, sektor, segment ili odjeljak. Dodana podrška za praćenje promjena u I/O kašnjenju.
    • Datotečni sustav EROFS (Extendable Read-Only File System) dodaje izravnu I/O podršku za datoteke spremljene bez kompresije, kao i podršku za fiemap.
    • OverlayFS implementira ispravno rukovanje oznakama montiranja "immutable", "append-only", "sync" i "noatime".
    • NFS je poboljšao rukovanje situacijama u kojima NFS poslužitelj prestaje odgovarati na zahtjeve. Dodana mogućnost montiranja s poslužitelja koji je već u upotrebi, ali mu je moguće pristupiti putem druge mrežne adrese.
    • Započele su pripreme za ponovno pisanje FSCACHE podsustava.
    • Dodana podrška za EFI particije s nestandardnim postavljanjem GPT tablica.
    • Mehanizam fanotify implementira novu oznaku, FAN_REPORT_PIDFD, koja uzrokuje uključivanje pidfd-a u vraćene metapodatke. Pidfd pomaže u rješavanju situacija ponovne upotrebe PID-a za točniju identifikaciju procesa koji pristupaju nadziranim datotekama (pidfd je povezan s određenim procesom i ne mijenja se, dok se PID može povezati s drugim procesom nakon što trenutni proces povezan s tim PID-om završi).
    • Dodana je mogućnost dodavanja točaka montiranja postojećim zajedničkim grupama u sistemski poziv move_mount(), koji rješava probleme sa spremanjem i vraćanjem stanja procesa u CRIU kada postoji više prostora za montiranje koji se dijele u izoliranim spremnicima.
    • Dodana zaštita od skrivenih uvjeta utrke koji bi potencijalno mogli uzrokovati oštećenje datoteke prilikom izvođenja čitanja predmemorije tijekom obrade praznina u datoteci.
    • Ukinuta je podrška za obvezno (obavezno) zaključavanje datoteka, implementirano kroz blokiranje sistemskih poziva koji dovode do promjene datoteke. Zbog mogućih uvjeta utrke, te su se brave smatrale nepouzdanima i zastarjele su prije mnogo godina.
    • Uklonjen je podsustav LightNVM, koji je omogućio izravan pristup SSD disku, zaobilazeći sloj emulacije. LightNVM je izgubio smisao nakon pojave NVMe standarda koji omogućuju zoniranje (ZNS, Zoned Namespace).
  • Memorija i usluge sustava
    • Implementiran je podsustav DAMON (Data Access MONitor) koji vam omogućuje praćenje aktivnosti vezanih uz pristup podacima u RAM-u u odnosu na odabrani proces koji se izvodi u korisničkom prostoru. Podsustav vam omogućuje da analizirate kojim je memorijskim područjima proces pristupao tijekom cijelog svog rada, a koja su memorijska područja ostala nezauzeta. DAMON ima nisko opterećenje CPU-a, nisku potrošnju memorije, visoku točnost i predvidljivo stalno opterećenje, neovisno o veličini. Podsustav može koristiti i kernel za optimizaciju upravljanja memorijom i pomoćni programi u korisničkom prostoru da razumiju što točno proces radi i optimiziraju korištenje memorije, na primjer, oslobađajući višak memorije za sustav.
    • Implementiran je sistemski poziv process_mrelease kako bi se ubrzao proces oslobađanja memorije procesa koji dovršava svoje izvršenje. Pod normalnim okolnostima, oslobađanje resursa i prekid procesa nisu trenutni i mogu biti odgođeni iz različitih razloga, ometajući sustave ranog odgovora memorije korisničkog prostora kao što su oomd (omogućuje systemd) i lmkd (koristi ga Android). Pozivanjem process_mrelease takvi sustavi mogu predvidljivije pokrenuti vraćanje memorije iz prisilnih procesa.
    • Iz PREEMPT_RT kernel grane, koja razvija podršku za rad u stvarnom vremenu, prenesene su varijante primitiva za organiziranje zaključavanja mutex, ww_mutex, rw_semaphore, spinlock i rwlock, temeljene na RT-Mutex podsustavu. Promjene su dodane u SLUB slab alocator kako bi se poboljšao rad u načinu PREEMPT_RT i smanjio utjecaj na prekide.
    • Podrška za atribut raspoređivača zadataka SCHED_IDLE dodana je u cgroup, što vam omogućuje da osigurate ovaj atribut svim procesima grupe uključene u određenu cgroup. Oni. ti će se procesi pokrenuti samo ako nema drugih zadataka koji čekaju na izvršenje na sustavu. Za razliku od postavljanja atributa SCHED_IDLE za svaki proces pojedinačno, kada se SCHED_IDLE veže za cgroup, relativna težina zadataka unutar grupe uzima se u obzir prilikom odabira zadatka za izvršenje.
    • Mehanizam za obračun potrošnje memorije u cgroup-u proširen je mogućnošću praćenja dodatnih struktura podataka kernela, uključujući one stvorene za anketiranje, obradu signala i prostore imena.
    • Dodana podrška za asimetrično raspoređivanje vezanja zadataka na procesorske jezgre na arhitekturama u kojima neki CPU-i dopuštaju izvršavanje 32-bitnih zadataka, a neki rade samo u 64-bitnom načinu (na primjer, ARM). Novi način rada omogućuje vam da uzmete u obzir samo procesore koji podržavaju 32-bitne zadatke kada planirate 32-bitne zadatke.
    • Asinkrono I/O sučelje io_uring sada podržava otvaranje datoteka izravno u tablici indeksa fiksne datoteke, bez korištenja deskriptora datoteke, što omogućuje značajno ubrzavanje nekih vrsta operacija, ali je u suprotnosti s tradicionalnim Unix postupkom korištenja deskriptora datoteka za otvaranje datoteka.

      io_uring za BIO (Block I/O Layer) podsustav implementira novi mehanizam recikliranja (“BIO recycling”), koji smanjuje opterećenje u procesu upravljanja internom memorijom i povećava broj obrađenih I/O operacija u sekundi za približno 10% . io_uring također dodaje podršku za sistemske pozive mkdirat(), symlinkat() i linkat().

    • Za BPF programe implementirana je mogućnost traženja i obrade vremenskih događaja. Dodan je iterator za UNIX utičnice i implementirana je mogućnost dobivanja i postavljanja opcija utičnice za setsockopt. BTF dumper sada podržava unesene podatke.
    • Na NUMA sustavima s različitim vrstama memorije koje se razlikuju u performansama, kada je slobodan prostor iscrpljen, izbačene memorijske stranice se prebacuju iz dinamičke memorije (DRAM) u sporiju trajnu memoriju (Persistent Memory) umjesto brisanja ovih stranica. Testovi su pokazali da takve taktike obično poboljšavaju performanse na takvim sustavima. NUMA također pruža mogućnost dodjele memorijskih stranica za proces iz odabranog skupa NUMA čvorova.
    • Za ARC arhitekturu implementirana je podrška za tablice memorijskih stranica od tri i četiri razine, što će dodatno omogućiti podršku za 64-bitne ARC procesore.
    • Za arhitekturu s390 implementirana je mogućnost korištenja KFENCE mehanizma za otkrivanje grešaka pri radu s memorijom, a dodana je i podrška za KCSAN detektor uvjeta utrke.
    • Dodana je podrška za indeksiranje popisa poruka izlaza putem printk(), što vam omogućuje da dohvatite sve takve poruke odjednom i pratite promjene u korisničkom prostoru.
    • mmap() je uklonio podršku za opciju VM_DENYWRITE, a kernel kod je uklonjen iz korištenja MAP_DENYWRITE moda, što je smanjilo broj situacija koje dovode do blokiranja pisanja u datoteku s greškom ETXTBSY.
    • Nova vrsta provjera, "Sonde događaja", dodana je u podsustav praćenja, koji se može pridružiti postojećim događajima praćenja, definirajući vaš vlastiti izlazni format.
    • Prilikom izgradnje kernela pomoću Clang prevoditelja, sada se koristi zadani asembler iz LLVM projekta.
    • Kao dio projekta za uklanjanje kernela od koda koji dovodi do izlaznih upozorenja od strane kompajlera, proveden je eksperiment s načinom rada "-Werror" koji je omogućen prema zadanim postavkama, u kojem se upozorenja kompilatora obrađuju kao pogreške. U pripremi za izdanje 5.15, Linus je počeo prihvaćati samo promjene koje nisu rezultirale upozorenjima prilikom izgradnje kernela i omogućio izgradnju s "-Werror", ali se onda složio da je takva odluka preuranjena i odgodila omogućavanje "-Werror" prema zadanim postavkama . Uključivanje zastavice "-Werror" tijekom sklapanja kontrolira se pomoću parametra WERROR, koji je prema zadanim postavkama postavljen na COMPILE_TEST, tj. Za sada je omogućeno samo za testne verzije.
  • Virtualizacija i sigurnost
    • Novi dm-ima rukovatelj dodan je u Device Mapper (DM) s implementacijom mehanizma daljinske certifikacije koji se temelji na podsustavu IMA (Integrity Measurement Architecture), koji omogućuje vanjskoj usluzi provjeru stanja podsustava jezgre kako bi se osigurala njihova autentičnost . U praksi dm-ima omogućuje kreiranje pohrana pomoću Device Mappera koje su povezane s vanjskim cloud sustavima, u kojima se pomoću IMA-a provjerava valjanost pokrenute DM ciljne konfiguracije.
    • prctl() implementira novu opciju PR_SPEC_L1D_FLUSH, koja, kada je omogućena, uzrokuje da kernel ispere sadržaj predmemorije prve razine (L1D) svaki put kada dođe do promjene konteksta. Ovaj način rada omogućuje, selektivno za najvažnije procese, implementaciju dodatne zaštite od upotrebe napada sporednih kanala koji se provode kako bi se utvrdili podaci koji su se smjestili u predmemoriju kao rezultat ranjivosti uzrokovane spekulativnim izvršavanjem instrukcija u CPU-u. Cijena omogućavanja PR_SPEC_L1D_FLUSH (nije omogućeno prema zadanim postavkama) predstavlja značajan gubitak performansi.
    • Moguće je izgraditi kernel s dodatkom oznake “-fzero-call-used-regs=used-gpr” u GCC, koja osigurava da su svi registri poništeni na nulu prije vraćanja kontrole iz funkcije. Ova vam opcija omogućuje zaštitu od curenja informacija iz funkcija i smanjenje za 20% broja blokova prikladnih za izradu ROP (Return-Oriented Programming) gadgeta u eksploatacijama.
    • Implementirana je mogućnost izgradnje kernela za ARM64 arhitekturu u obliku klijenata za Hyper-V hipervizor.
    • Predlaže se novi okvir za razvoj drajvera “VDUSE” koji omogućuje implementaciju virtualnih blok uređaja u korisnički prostor i korištenje Virtia kao transporta za pristup iz gostujućih sustava.
    • Dodan Virtio upravljački program za I2C sabirnicu, omogućavajući emulaciju I2C kontrolera u paravirtualizacijskom načinu rada koristeći odvojene pozadine.
    • Dodan Virtio drajver gpio-virtio kako bi se gostima omogućio pristup GPIO linijama koje pruža glavni sustav.
    • Dodana je mogućnost ograničavanja pristupa memorijskim stranicama za upravljačke programe uređaja s podrškom za DMA na sustavima bez I/O MMU (jedinice za upravljanje memorijom).
    • KVM hipervizor ima mogućnost prikaza statistike u obliku linearnih i logaritamskih histograma.
  • Mrežni podsustav
    • Modul ksmbd je dodan jezgri s implementacijom datotečnog poslužitelja koji koristi SMB3 protokol. Modul nadopunjuje implementaciju SMB klijenta koja je prethodno bila dostupna u kernelu i, za razliku od SMB poslužitelja koji radi u korisničkom prostoru, učinkovitiji je u pogledu performansi, potrošnje memorije i integracije s naprednim mogućnostima kernela. Ksmbd se reklamira kao Samba proširenje visokih performansi spremno za ugradnju koje se po potrebi integrira sa Samba alatima i bibliotekama. Mogućnosti ksmbd-a uključuju poboljšanu podršku za tehnologiju distribuiranog predmemoriranja datoteka (SMB leases) na lokalnim sustavima, što može značajno smanjiti promet. U budućnosti planiraju dodati podršku za RDMA (“smbdirect”) i proširenja protokola vezana uz povećanje pouzdanosti enkripcije i verifikacije pomoću digitalnih potpisa.
    • CIFS klijent više ne podržava NTLM i slabije algoritme provjere autentičnosti temeljene na DES-u koji se koriste u protokolu SMB1.
    • Multicast podrška implementirana je u implementaciji mrežnih mostova za vlan.
    • Upravljački program za povezivanje, koji se koristi za agregiranje mrežnih sučelja, dodao je podršku za XDP (eXpress Data Path) podsustav, koji vam omogućuje da manipulirate mrežnim paketima u fazi prije nego što ih obradi mrežni stog jezgre Linuxa.
    • Bežični skup mac80211 podržava 6GHZ STA (posebnu privremenu autorizaciju) u načinima rada LPI, SP i VLP, kao i mogućnost postavljanja pojedinačnog TWT-a (ciljano vrijeme buđenja) u načinu rada pristupne točke.
    • Dodana podrška za MCTP (Management Component Transport Protocol), koji se koristi za interakciju između upravljačkih kontrolera i povezanih uređaja (host procesori, periferni uređaji itd.).
    • Integracija u jezgru MPTCP (MultiPath TCP), proširenje TCP protokola za organiziranje rada TCP veze s dostavom paketa istovremeno duž nekoliko ruta kroz različita mrežna sučelja povezana s različitim IP adresama. Novo izdanje dodaje podršku za adrese u fullmesh modu.
    • Rukovatelji za mrežne tokove enkapsulirane u SRv6 (Segment Routing IPv6) protokol dodani su u netfilter.
    • Dodana podrška za sockmap za Unix streaming utičnice.
  • Оборудование
    • Amdgpu upravljački program podržava Cyan Skillfish APU (opremljen Navi 1x GPU). Yellow Carp APU sada podržava video kodeke. Poboljšana podrška za Aldebaran GPU. Dodani su novi identifikatori karte temeljeni na GPU Navi 24 “Beige Goby” i RDNA2. Predlaže se poboljšana implementacija virtualnih zaslona (VKMS). Implementirana je podrška za praćenje temperature AMD Zen 3 čipova.
    • Upravljački program amdkfd (za diskretne GPU-ove, kao što je Polaris) implementira upravitelj dijeljene virtualne memorije (SVM, dijeljena virtualna memorija) temeljen na podsustavu HMM (Heterogeneous memory management), koji omogućuje korištenje uređaja s vlastitim jedinicama za upravljanje memorijom (MMU , jedinica za upravljanje memorijom), koja može pristupiti glavnoj memoriji. Konkretno, koristeći HMM, možete organizirati zajednički adresni prostor između GPU-a i CPU-a, u kojem GPU može pristupiti glavnoj memoriji procesa.
    • Upravljački program i915 za Intelove video kartice proširuje korištenje TTM upravitelja video memorije i uključuje mogućnost upravljanja potrošnjom energije na temelju GuC (Graphics micro Controller). Započele su pripreme za implementaciju podrške za Intel ARC Alchemist grafičku karticu i Intel Xe-HP GPU.
    • Nouveau upravljački program implementira kontrolu pozadinskog osvjetljenja za eDP ploče pomoću DPCD (DisplayPort Configuration Data).
    • Dodana podrška za Adreno 7c Gen 3 i Adreno 680 GPU u msm upravljački program.
    • IOMMU drajver implementiran je za Apple M1 čip.
    • Dodan zvučni upravljački program za sustave temeljene na AMD Van Gogh APU-ovima.
    • Upravljački program Realtek R8188EU dodan je u staging granu, koja je zamijenila staru verziju upravljačkog programa (rtl8188eu) za bežične čipove Realtek RTL8188EU 802.11 b/g/n.
    • Uključen je upravljački program ocp_pt za PCIe ploču koju je razvila Meta (Facebook) s implementacijom minijaturnog atomskog sata i GNSS prijemnika, koji se mogu koristiti za organiziranje rada zasebnih servera za sinkronizaciju točnog vremena.
    • Dodana podrška za Sony Xperia 10II (Snapdragon 665), Xiaomi Redmi 2 (Snapdragon MSM8916), Samsung Galaxy S3 (Snapdragon MSM8226), Samsung Gavini/Codina/Kyle pametne telefone.
    • Dodana podrška za ARM SoS i NVIDIA Jetson TX2 NX Developer Kit, Sancloud BBE Lite, PicoITX, DRC02, SolidRun SolidSense, SKOV i.MX6, Nitrogen8, Traverse Ten64, GW7902, Microchip SAMA7, ualcomm Snapdragon SDM636/SM8150, Renesas R-Car H3e ploče -2G/M3e-2G, Marvell CN913x, ASpeed ​​​​AST2600 (Facebook Cloudripper, Elbert i Fuji serverske ploče), 4KOpen STiH418-b2264.
    • Dodana podrška za Gopher 2b LCD panele, EDT ETM0350G0DH6/ETMV570G2DHU, LOGIC Technologies LTTD800480070-L6WH-RT, Multi-Innotechnology MI1010AIT-1CP1, Innolux EJ030NA 3.0, ilitek ili9341, E Ink VB3300-KCA, Samsung ATNA33XC20 7430, Samsung DB2401, WideChips WSXNUMX .
    • Dodan LiteETH upravljački program s podrškom za Ethernet kontrolere koji se koriste u LiteX softverskim SoC-ovima (za FPGA).
    • Opcija niske latencije dodana je usb-audio upravljačkom programu za kontrolu uključivanja rada u načinu rada s minimalnom latencijom. Dodana je i opcija quirk_flags za prosljeđivanje postavki specifičnih za uređaj.

U isto vrijeme, Latinoamerička zaklada za slobodni softver formirala je verziju potpuno besplatnog kernela 5.15 - Linux-libre 5.15-gnu, očišćenog od elemenata firmvera i upravljačkih programa koji sadrže neslobodne komponente ili dijelove koda, čiji je opseg ograničen od strane proizvođača. Novo izdanje implementira izlaz poruke u dnevnik o završetku čišćenja. Problemi s generiranjem paketa pomoću mkspec-a su riješeni, podrška za snap pakete je poboljšana. Uklonjena su neka upozorenja prikazana prilikom obrade datoteke zaglavlja firmware.h. Dopušten je izlaz nekih vrsta upozorenja ("format-extra-args", komentari, neiskorištene funkcije i varijable) prilikom izgradnje u načinu rada "-Werror". Dodano čišćenje upravljačkog programa gehc-achc. Ažurirani kod za čišćenje mrlja u upravljačkim programima i podsustavima adreno, btusb, btintel, brcmfmac, aarch64 qcom. Čišćenje upravljačkih programa prism54 (uklonjen) i rtl8188eu (zamijenjen r8188eu) je zaustavljeno.

Izvor: opennet.ru

Dodajte komentar