Izdanje kernela Linux 5.14

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

Nova verzija uključuje 15883 popravka od 2002 programera, veličina zakrpe je 69 MB (promjene su uticale na 12580 fajlova, dodato je 861501 linija koda, 321654 linije je obrisano). Oko 47% svih promjena uvedenih u 5.14 odnosi se na drajvere uređaja, otprilike 14% promjena se odnosi na ažuriranje koda specifičnog za hardverske arhitekture, 13% se odnosi na mrežni stog, 3% se odnosi na sistem datoteka i 3% odnose se na interne podsisteme kernela.

Glavne inovacije:

  • Diskovni podsistem, I/O i sistemi datoteka
    • Novi I/O kontroler prioriteta implementiran je za cgroups, rq-qos, koji može kontrolirati prioritet obrade zahtjeva za blokiranje uređaja generiranih od strane članova svake cgroup. Nova podrška za prioritetni kontroler je dodana u mq-deadline I/O planer.
    • Ext4 sistem datoteka implementira novu ioctl naredbu, EXT4_IOC_CHECKPOINT, koja prisiljava sve transakcije na čekanju iz dnevnika i njihovih povezanih bafera da se isprazne na disk, a također prepisuje područje koje koristi dnevnik u skladištu. Promjena je pripremljena kao dio inicijative za sprječavanje curenja informacija iz sistema datoteka.
    • Urađene su optimizacije performansi za Btrfs: eliminacijom nepotrebnog evidentiranja proširenih atributa tokom fsync izvršenja, performanse intenzivnih operacija sa proširenim atributima su povećane do 17%. Dodatno, kada se izvode operacije trimovanja koje ne utiču na ekstente, potpuna sinhronizacija je onemogućena, što je smanjilo vreme rada za 12%. Sysfs-u je dodana postavka za ograničavanje I/O propusnog opsega prilikom provjere FS-a. Dodani ioctl pozivi za otkazivanje operacija promjene veličine i brisanja uređaja.
    • U XFS-u je redizajnirana implementacija keša bafera, koja je prebačena na dodjelu memorijskih stranica u batch modu. Poboljšana efikasnost keš memorije.
    • F2FS dodaje opciju za rad u režimu samo za čitanje i implementira komprimirani blok keš mod (compress_cache) kako bi poboljšao performanse nasumične čitanja. Implementirana je podrška za komprimiranje datoteka mapiranih u memoriju korištenjem mmap() operacije. Za selektivno onemogućavanje kompresije datoteke na osnovu maske, predložena je nova opcija montiranja nocompress.
    • Rad je obavljen u exFAT drajveru kako bi se poboljšala kompatibilnost sa nekim skladištem digitalnih fotoaparata.
    • Dodan je sistemski poziv quotactl_fd(), koji vam omogućava da upravljate kvotama ne preko posebne datoteke uređaja, već navođenjem deskriptora datoteke povezanog sa sistemom datoteka za koji se kvota primjenjuje.
    • Stari drajveri za blok uređaje sa IDE interfejsom su uklonjeni iz kernela; oni su odavno zamenjeni libata podsistemom.
    • "Raw" drajver je uklonjen iz kernela, pružajući nebaferovani pristup blok uređajima preko /dev/raw interfejsa. Ova funkcionalnost je dugo implementirana u aplikacijama koje koriste O_DIRECT zastavicu.
  • Memorijski i sistemski servisi
    • Planer zadataka implementira novi način planiranja, SCHED_CORE, koji vam omogućava da kontrolirate koji procesi se mogu izvršavati zajedno na istoj CPU jezgri. Svakom procesu se može dodijeliti identifikator kolačića koji definira opseg povjerenja između procesa (na primjer, pripadnost istom korisniku ili kontejneru). Prilikom organiziranja izvršavanja koda, planer može osigurati da se jedno CPU jezgro dijeli samo među procesima povezanim s istim vlasnikom, što se može koristiti za blokiranje nekih Spectre napada spreč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ćava da ukinete sve procese povezane sa grupom odjednom (pošaljete SIGKILL) upisivanjem "1" u virtuelnu datoteku cgroup.kill.
    • Proširene mogućnosti koje se odnose na reagovanje na detekciju podijeljenih zaključavanja („split locks“) koje se javljaju prilikom pristupa neusklađenim podacima u memoriji zbog činjenice da prilikom izvršavanja atomske instrukcije, podaci prelaze dvije CPU keš linije. Takvo blokiranje dovodi do značajnog pada performansi, pa je ranije bilo moguće nasilno ukinuti aplikaciju koja je izazvala blokadu. Novo izdanje dodaje parametar komandne linije kernela “split_lock_detect=ratelimit:N”, koji vam omogućava da definišete sistemsko ograničenje stope operacija zaključavanja u sekundi, nakon prekoračenja kojeg bilo koji proces koji je postao izvor podeljenog zaključavanja će biti primoran da se zaustavi na 20 ms umjesto prekida.
    • Cgroup propusni kontroler CFS (CFS propusni kontroler), koji određuje koliko procesorskog vremena može biti dodijeljeno svakoj cgroup, implementira mogućnost definiranja vremenski ograničenih ograničenja, što omogućava 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.
    • Dodata je inicijalna infrastruktura za kreiranje BPF programa za učitavanje, što će dalje omogućiti učitavanje samo BPF programa potpisanih pouzdanim digitalnim ključem.
    • Dodata je nova futex operacija FUTEX_LOCK_PI2, koja koristi monotoni tajmer za izračunavanje vremenskog ograničenja koje uzima u obzir vreme koje je sistem proveo u režimu 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 sredstvo za optimizaciju upravljanja memorijom procesa, dodao je oznake 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). Upotreba zastavica može biti korisna za smanjenje kašnjenja u izvršavanju programa, zbog proaktivnog izvršavanja “page fault” rukovaoca za sve nedodijeljene stranice odjednom, bez čekanja na stvarni pristup njima.
    • Sistem za testiranje jedinica kunit je dodao podršku za pokretanje testova u QEMU okruženju.
    • Dodani su novi tragači: "osnoise" za praćenje kašnjenja aplikacija uzrokovanih rukovanjem prekida, i "timerlat" za prikaz detaljnih informacija o kašnjenjima pri buđenju iz signala tajmera.
  • Virtuelizacija i sigurnost
    • Sistemski poziv memfd_secret() dodat je za kreiranje privatnog memorijskog područja u izolovanom adresnom prostoru, vidljivog samo vlasničkim procesima, koji se ne odražava na druge procese i nije direktno dostupan kernelu.
    • U seccomp sistemu filtriranja sistemskih poziva, prilikom premeštanja rukovaoca blokiranjem u korisnički prostor, moguće je koristiti jednu atomsku operaciju za kreiranje deskriptora datoteke za izolovani zadatak i vraćanje ga prilikom obrade sistemskog poziva. Predložena operacija rješava problem prekida rukovaoca u korisničkom prostoru kada stigne signal.
    • Dodan je novi mehanizam za upravljanje ograničenjima resursa u imenskom prostoru korisničkog ID-a, koji veže pojedinačne brojače rlimit za korisnika u "korisničkom imenskom prostoru". Promjena rješava problem korištenjem uobičajenih brojača resursa kada jedan korisnik pokreće procese u različitim kontejnerima.
    • KVM hipervizor za ARM64 sisteme je dodao mogućnost upotrebe ekstenzije MTE (MemTag, Memory Tagging Extension) u gostujućim sistemima, što vam omogućava da povežete oznake sa svakom operacijom dodjele memorije i organizirate provjeru ispravne upotrebe pokazivača za blokiranje eksploatacije ranjivosti uzrokovane pristupom već oslobođenim memorijskim blokovima, prelivanjem bafera, pristupima prije inicijalizacije i korištenjem izvan trenutnog konteksta.
    • Mogućnosti Pointer Authentication na platformi ARM64 sada se mogu zasebno konfigurirati za kernel i korisnički prostor. Tehnologija vam omogućava da koristite specijalizirane ARM64 instrukcije za provjeru povratnih adresa korištenjem digitalnih potpisa koji su pohranjeni u neiskorištenim gornjim bitovima samog pokazivača.
    • Linux u korisničkom režimu je dodao podršku za korišćenje drajvera za PCI uređaje sa virtuelnom PCI magistralom, implementiranu od strane PCI-over-virtio drajvera.
    • Za x86 sisteme, dodata podrška za virtio-iommu paravirtualizovani uređaj, dozvoljavajući IOMMU zahtevima kao što su ATTACH, DETACH, MAP i UNMAP da se pošalju preko virtio transporta bez emulacije tablica memorijskih stranica.
    • Za Intelove procesore, od porodice Skylake do Coffee Lake, upotreba Intel TSX (Transactional Synchronization Extensions), koji obezbeđuju alate za poboljšanje performansi aplikacija sa više niti dinamičkim eliminisanjem nepotrebnih operacija sinhronizacije, je podrazumevano onemogućena. Ekstenzije su onemogućene zbog mogućnosti Zombieload napada koji manipulišu curenjem informacija putem kanala trećih strana koje se dešava tokom rada TAA (TSX Asynchronous Abort) mehanizma.
  • Mrežni podsistem
    • Integracija u jezgro MPTCP (MultiPath TCP), proširenje TCP protokola za organizovanje rada TCP veze sa isporukom paketa istovremeno duž nekoliko ruta kroz različite mrežne interfejse povezane sa različitim IP adresama. Novo izdanje dodaje mehanizam za postavljanje vlastitih pravila raspršivanja prometa za IPv4 i IPv6 (višestruka hash politika), što omogućava da se iz korisničkog prostora odredi koja će se polja u paketima, uključujući inkapsulirane, koristiti prilikom izračunavanja hash-a koji određuje izbor putanje za paket.
    • Virtio virtuelnom transportu dodata je podrška za SOCK_SEQPACKET utičnice (uređen i pouzdan prenos datagrama).
    • Proširene su mogućnosti mehanizma soketa SO_REUSEPORT, koji omogućava da se nekoliko prislušnih soketa spoje na jedan port odjednom kako bi primali veze sa distribucijom dolaznih zahtjeva istovremeno na sve utičnice povezane preko SO_REUSEPORT, što pojednostavljuje kreiranje višenitnih serverskih aplikacija . Nova verzija dodaje alate za prenos kontrole na drugi socket u slučaju neuspjeha prilikom obrade zahtjeva od strane inicijalno odabranog socketa (rješava problem sa gubitkom pojedinačnih konekcija prilikom ponovnog pokretanja servisa).
  • Oprema
    • Amdgpu drajver pruža podršku za novu AMD Radeon RX 6000 seriju grafičkih procesora, kodnih naziva “Beige Goby” (Navi 24) i “Yellow Carp”, kao i poboljšanu podršku za Aldebaran GPU (gfx90a) i Van Gogh APU. Dodata mogućnost istovremenog rada sa nekoliko eDP panela. Za APU Renoir implementirana je podrška za rad sa šifriranim baferima u video memoriji (TMZ, Trusted Memory Zone). Dodata podrška za grafičke kartice koje se mogu isključiti. Za Radeon RX 6000 (Navi 2x) GPU-ove i starije AMD GPU-ove, ASPM (Active State Power Management) podrška je podrazumevano omogućena, što je ranije bilo omogućeno samo za Navi 1x, Vega i Polaris GPU-ove.
    • Za AMD čipove dodata je podrška za dijeljenu virtuelnu memoriju (SVM, dijeljena virtualna memorija) na osnovu HMM (Heterogeneous memory management) podsistema, koji omogućava korištenje uređaja s vlastitim jedinicama za upravljanje memorijom (MMU, memory management unit), koji 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.
    • Dodata je početna podrška za AMD Smart Shift tehnologiju, 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šale performanse za igranje igara, uređivanje videa i 3D renderiranje.
    • i915 drajver za Intel grafičke kartice uključuje podršku za Intel Alderlake P čipove.
    • Dodan drm/hyperv drajver za Hyper-V virtuelni grafički adapter.
    • Dodata podrška za Raspberry Pi 400 sve-u-jednom računar.
    • Dodan drajver za privatnost dell-wmi koji podržava hardverske prekidače kamere i mikrofona uključene u Dell laptopove.
    • Za Lenovo laptopove, dodat je WMI interfejs za promenu BIOS postavki preko sysfs /sys/class/firmware-attributes/.
    • Proširena podrška za uređaje sa USB4 interfejsom.
    • Dodata 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 laptopovima. Dodane su zakrpe za smanjenje kašnjenja prije nego što se zvuk počne reproducirati na USB uređajima.

izvor: opennet.ru

Dodajte komentar