Izdanje jezgre Linuxa 5.14

Nakon dva mjeseca razvoja, Linus Torvalds predstavio je izdanje Linux kernela 5.14. Među najznačajnijim promjenama: novi quotactl_fd() i memfd_secret() sistemski pozivi, uklanjanje ide i raw drajvera, novi I/O prioritetni kontroler za cgroup, SCHED_CORE način raspoređivanja zadataka, infrastruktura za kreiranje verificiranih BPF programa za učitavanje.

Nova verzija uključuje 15883 popravka od 2002 programera, veličina zakrpe je 69 MB (promjene su utjecale na 12580 datoteka, dodana je 861501 linija koda, 321654 linije su izbrisane). Oko 47% svih promjena uvedenih u 5.14 odnosi se na upravljačke programe uređaja, približno 14% promjena odnosi se na ažuriranje koda specifičnog za hardverske arhitekture, 13% se odnosi na mrežni stog, 3% se odnosi na sustave datoteka, a 3% povezani su s unutarnjim podsustavima jezgre.

Glavne inovacije:

  • Diskovni podsustav, I/O i datotečni sustavi
    • Implementiran je novi I/O kontroler prioriteta za cgroups, rq-qos, koji može kontrolirati prioritet obrade zahtjeva za blokiranje uređaja koje generiraju članovi svake cgroup. Nova podrška za kontroler prioriteta dodana je mq-deadline I/O planeru.
    • Datotečni sustav ext4 implementira novu ioctl naredbu, EXT4_IOC_CHECKPOINT, koja prisiljava sve transakcije na čekanju iz dnevnika i njima pridruženih međuspremnika da se isprazne na disk, a također prepisuje područje koje koristi dnevnik u pohrani. Promjena je pripremljena u sklopu inicijative za sprječavanje curenja informacija iz datotečnih sustava.
    • Optimizirane su performanse Btrfs-a: uklanjanjem nepotrebnog bilježenja proširenih atributa tijekom izvođenja fsync-a, izvedba intenzivnih operacija s proširenim atributima povećana je do 17%. Dodatno, prilikom izvođenja operacija skraćivanja koje ne utječu na ekstente, potpuna sinkronizacija je onemogućena, što je smanjilo vrijeme operacije za 12%. Postavka je dodana u sysfs za ograničavanje I/O propusnosti prilikom provjere FS-a. Dodani su ioctl pozivi za otkazivanje promjene veličine i brisanja operacija uređaja.
    • U XFS-u je redizajnirana implementacija međuspremnika, koji je prebačen na dodjelu memorijskih stranica u skupnom načinu rada. Poboljšana učinkovitost predmemorije.
    • F2FS dodaje opciju za rad u načinu rada samo za čitanje i implementira komprimirani način predmemorije blokova (compress_cache) za poboljšanje performansi nasumičnog čitanja. Implementirana je podrška za komprimiranje datoteka mapiranih u memoriju korištenjem operacije mmap(). Za selektivno onemogućavanje kompresije datoteke na temelju maske, predložena je nova opcija montiranja nocompress.
    • Radilo se na pogonskom programu exFAT kako bi se poboljšala kompatibilnost s nekim pohranama digitalnih fotoaparata.
    • Dodan je sistemski poziv quotactl_fd(), koji vam omogućuje upravljanje kvotama ne putem posebne datoteke uređaja, već određivanjem deskriptora datoteke povezanog sa datotečnim sustavom za koji se kvota primjenjuje.
    • Stari upravljački programi za blok uređaje s IDE sučeljem uklonjeni su iz kernela; odavno su zamijenjeni podsustavom libata.
    • "Sirovi" upravljački program je uklonjen iz kernela, pružajući nespremnik pristup blok uređajima putem /dev/raw sučelja. Ova je funkcionalnost odavno implementirana u aplikacije koje koriste zastavu O_DIRECT.
  • Memorija i usluge sustava
    • Planer zadataka implementira novi način raspoređivanja, SCHED_CORE, koji vam omogućuje da kontrolirate koji se procesi mogu izvršavati zajedno na istoj CPU jezgri. Svakom procesu može se dodijeliti identifikator kolačića koji definira opseg povjerenja između procesa (na primjer, pripadanje istom korisniku ili spremniku). Prilikom organiziranja izvršavanja koda, planer može osigurati da se jedna CPU jezgra dijeli samo između procesa povezanih s istim vlasnikom, što se može koristiti za blokiranje nekih Spectre napada sprječavanjem pouzdanih i nepouzdanih zadataka da se izvode na istoj SMT (Hyper Threading) niti .
    • Za cgroup je implementirana podrška za operaciju kill, koja vam omogućuje da odjednom ubijete sve procese povezane s grupom (pošaljite SIGKILL) upisivanjem “1” u virtualnu datoteku cgroup.kill.
    • Proširene mogućnosti koje se odnose na odgovor na otkrivanje podijeljenih zaključavanja ("split locks") do kojih dolazi prilikom pristupa neusklađenim podacima u memoriji zbog činjenice da prilikom izvođenja atomske instrukcije podaci prelaze dvije linije CPU predmemorije. Takvo blokiranje dovodi do značajnog pada performansi, pa je ranije bilo moguće prisilno prekinuti aplikaciju koja je uzrokovala blokadu. Novo izdanje dodaje parametar naredbenog retka jezgre "split_lock_detect=ratelimit:N", koji vam omogućuje da definirate ograničenje za cijeli sustav na stopu operacija zaključavanja u sekundi, nakon čijeg prekoračenja svaki proces koji je postao izvorom podijeljenog zaključavanja bit će prisiljen zaustaviti se na 20 ms umjesto prekida.
    • Kontroler propusnosti cgroup CFS (CFS kontroler propusnosti), koji određuje koliko procesorskog vremena može biti dodijeljeno svakoj cgroup, implementira mogućnost definiranja vremenski ograničenih ograničenja, što omogućuje bolju regulaciju radnih opterećenja osjetljivih na kašnjenje. Na primjer, postavljanje cpu.cfs_quota_us na 50000 i cpu.cfs_period_us na 100000 omogućit će grupi procesa da gubi 100 ms CPU vremena svakih 50 ms.
    • Dodana početna infrastruktura za kreiranje učitavača BPF programa, što će nadalje omogućiti učitavanje samo BPF programa potpisanih pouzdanim digitalnim ključem.
    • Dodana je nova futex operacija FUTEX_LOCK_PI2, koja koristi monotoni mjerač vremena za izračun vremenskog ograničenja koje uzima u obzir vrijeme koje je sustav proveo u stanju mirovanja.
    • Za RISC-V arhitekturu implementirana je podrška za velike memorijske stranice (Transparent Huge-Pages) i mogućnost korištenja KFENCE mehanizma za otkrivanje grešaka pri radu s memorijom.
    • Sistemski poziv madvise(), koji pruža sredstva za optimiziranje upravljanja procesnom memorijom, dodao je zastavice MADV_POPULATE_READ i MADV_POPULATE_WRITE za generiranje "greške stranice" na svim memorijskim stranicama mapiranim za operacije čitanja ili pisanja bez izvođenja stvarnog čitanja ili pisanja (prefault ). Korištenje oznaka može biti korisno za smanjenje kašnjenja u izvršavanju programa, zbog proaktivnog izvršavanja rukovatelja “page fault” za sve nedodijeljene stranice odjednom, bez čekanja na stvarni pristup istima.
    • Sustav za testiranje jedinice kunit dodao je podršku za izvođenje testova u QEMU okruženju.
    • Dodani su novi tragači: "osnoise" za praćenje kašnjenja aplikacije uzrokovanih rukovanjem prekidima i "timerlat" za prikaz detaljnih informacija o kašnjenjima prilikom buđenja iz signala mjerača vremena.
  • Virtualizacija i sigurnost
    • Dodan je sistemski poziv memfd_secret() za stvaranje privatnog memorijskog područja u izoliranom adresnom prostoru, vidljivog samo procesu vlasnika, koje se ne odražava na druge procese i nije izravno dostupno kernelu.
    • U sustavu za filtriranje sistemskih poziva seccomp, kada se rukovatelji blokiranjem premještaju u korisnički prostor, moguće je koristiti jednu atomsku operaciju za stvaranje deskriptora datoteke za izolirani zadatak i vratiti ga prilikom obrade sistemskog poziva. Predložena operacija rješava problem prekida rukovatelja u korisničkom prostoru kada stigne signal.
    • Dodan je novi mehanizam za upravljanje ograničenjima resursa u prostoru imena korisničkog ID-a, koji povezuje pojedinačne rlimit brojače s korisnikom u "prostoru imena korisnika". Promjena rješava problem s korištenjem zajedničkih brojača resursa kada jedan korisnik pokreće procese u različitim spremnicima.
    • KVM hipervizor za ARM64 sustave dodao je mogućnost korištenja proširenja MTE (MemTag, Memory Tagging Extension) u gostujućim sustavima, što vam omogućuje da vežete oznake za svaku operaciju dodjele memorije i organizirate provjeru ispravne upotrebe pokazivača za blokiranje iskorištavanja ranjivosti uzrokovane pristupom već oslobođenim memorijskim blokovima, prelijevanjem međuspremnika, pristupima prije inicijalizacije i korištenjem izvan trenutnog konteksta.
    • Mogućnosti provjere autentičnosti pokazivača ARM64 platforme sada se mogu zasebno konfigurirati za kernel i korisnički prostor. Tehnologija vam omogućuje korištenje specijaliziranih ARM64 instrukcija za provjeru povratnih adresa pomoću digitalnih potpisa koji su pohranjeni u neiskorištenim gornjim bitovima samog pokazivača.
    • Linux u korisničkom načinu rada dodao je podršku za korištenje upravljačkih programa za PCI uređaje s virtualnom PCI sabirnicom, koju implementira PCI-over-virtio upravljački program.
    • Za x86 sustave, dodana podrška za virtio-iommu paravirtualizirani uređaj, dopuštajući slanje IOMMU zahtjeva kao što su ATTACH, DETACH, MAP i UNMAP preko virtio transporta bez emulacije tablica memorijskih stranica.
    • Za Intel CPU-e, od obitelji Skylake do Coffee Lake, upotreba Intel TSX (Transactional Synchronization Extensions), koja pruža alate za poboljšanje performansi višenitnih aplikacija dinamičkim uklanjanjem nepotrebnih operacija sinkronizacije, onemogućena je prema zadanim postavkama. Proširenja su onemogućena zbog mogućnosti Zombieload napada koji manipuliraju curenjem informacija putem kanala treće strane do kojeg dolazi tijekom rada mehanizma TAA (TSX Asynchronous Abort).
  • Mrežni podsustav
    • 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 mehanizam za postavljanje vlastitih pravila hashiranja prometa za IPv4 i IPv6 (multipath hash policy), što omogućuje određivanje iz korisničkog prostora koja će se polja u paketima, uključujući one enkapsulirane, koristiti prilikom izračuna hash-a koji određuje izbor staze za paket.
    • Podrška za SOCK_SEQPACKET utičnice (uređeni i pouzdani prijenos datagrama) dodana je virtio virtualnom prijenosu.
    • Mogućnosti mehanizma utičnice SO_REUSEPORT su proširene, što omogućuje da se nekoliko utičnica za slušanje spoji na jedan port odjednom za primanje veza s distribucijom dolaznih zahtjeva istovremeno preko svih utičnica spojenih putem SO_REUSEPORT, što pojednostavljuje stvaranje poslužiteljskih aplikacija s više niti . Nova verzija dodaje alate za prijenos kontrole na drugi socket u slučaju kvara prilikom obrade zahtjeva od strane inicijalno odabranog socketa (rješava problem s gubitkom pojedinačnih veza prilikom ponovnog pokretanja servisa).
  • Оборудование
    • Amdgpu upravljački program pruža podršku za novu AMD Radeon RX 6000 seriju GPU-ova, kodnih naziva “Beige Goby” (Navi 24) i “Yellow Carp”, kao i poboljšanu podršku za Aldebaran GPU (gfx90a) i Van Gogh APU. Dodana je mogućnost istovremenog rada s nekoliko eDP panela. Za APU Renoir implementirana je podrška za rad s šifriranim međuspremnicima u video memoriji (TMZ, Trusted Memory Zone). Dodana podrška za grafičke kartice s isključivanjem bez uključivanja. Za Radeon RX 6000 (Navi 2x) GPU-ove i starije AMD GPU-ove, podrška za ASPM (Active State Power Management) omogućena je prema zadanim postavkama, što je prije bilo omogućeno samo za Navi 1x, Vega i Polaris GPU-ove.
    • Za AMD čipove dodana je podrška za dijeljenu virtualnu memoriju (SVM, shared virtual memory) temeljena na podsustavu HMM (Heterogeneous memory management) koji omogućuje korištenje uređaja s vlastitim jedinicama za upravljanje memorijom (MMU, memory management unit), koji mogu 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.
    • Dodana početna podrška za tehnologiju AMD Smart Shift, koja dinamički mijenja postavke napajanja CPU-a i GPU-a na prijenosnim računalima s AMD čipsetom i grafičkom karticom kako bi se poboljšala izvedba za igranje, uređivanje videa i 3D renderiranje.
    • I915 upravljački program za Intel grafičke kartice uključuje podršku za Intel Alderlake P čipove.
    • Dodan drm/hyperv drajver za Hyper-V virtualni grafički adapter.
    • Dodana podrška za Raspberry Pi 400 sve-u-jednom računalo.
    • Dodan upravljački program dell-wmi-privacy za podršku hardverskim prekidačima kamere i mikrofona uključenim u prijenosna računala Dell.
    • Za prijenosna računala Lenovo dodano je WMI sučelje za promjenu BIOS postavki putem sysfs /sys/class/firmware-attributes/.
    • Proširena podrška za uređaje s USB4 sučeljem.
    • Dodana podrška za AmLogic SM1 TOACODEC, Intel AlderLake-M, NXP i.MX8, NXP TFA1, TDF9897, Rockchip RK817, Qualcomm Quinary MI2 i Texas Instruments TAS2505 zvučne kartice i kodeke. Poboljšana audio podrška na HP i ASUS prijenosnim računalima. Dodane zakrpe za smanjenje kašnjenja prije početka reprodukcije zvuka na USB uređajima.

Izvor: opennet.ru

Dodajte komentar