Izdanje jezgre Linuxa 5.1

Nakon dva mjeseca razvoja Linus Torvalds podnijeti izdanje jezgre Linux 5.1. Među najznačajnijim promjenama: novo sučelje za asinkroni I/O io_uring, mogućnost korištenja NVDIMM-a kao RAM-a, podrška za dijeljenu virtualnu memoriju u Nouveau, podrška za skalabilno praćenje vrlo velikih datotečnih sustava putem fanotifyja, mogućnost konfiguracije Zstd kompresije razine u Btrfs-u, novi cpuidle TEO rukovatelj, implementacija sistemskih poziva za rješavanje problema 2038, mogućnost dizanja s device-mapper uređaja bez initramfs-a, SafeSetID LSM modul, podrška za kombinirane žive zakrpe.

Glavni inovacije:

  • Diskovni podsustav, I/O i datotečni sustavi
    • Implementirano novo sučelje za asinkroni I/O - io_uring, koji je poznat po svojoj podršci za I/O anketiranje i mogućnosti rada sa ili bez međuspremnika. Prisjetimo se da prethodno predloženi asinkroni I/O mehanizam “aio” nije podržavao baferirani I/O, mogao je raditi samo u O_DIRECT modu (bez međuspremnika i zaobilaženja predmemorije), imao je problema sa zaključavanjem zbog čekanja na dostupnost metapodataka, i pokazali su velike režijske troškove zbog kopiranja podataka u memoriju.

      Unutar API-ja
      io_uring programeri pokušali su eliminirati nedostatke starog aio sučelja. Po produktivnost io_uring je vrlo blizu SPDK i znatno je ispred libaioa kada radi s omogućenim anketiranjem. Pripremljena je biblioteka za korištenje io_uringa u krajnjim aplikacijama koje se izvode u korisničkom prostoru liburing, koji pruža okvir visoke razine preko sučelja jezgre;

    • U mehanizmu praćenja događaja u FS fanotify() dodao podrška za praćenje superblokova i situacija promjene strukture dirent (događaji kreiranja, brisanja i premještanja imenika). Predstavljene značajke pomažu u rješavanju problema skalabilnosti koji nastaju prilikom stvaranja rekurzivnog praćenja promjena u vrlo velikim datotečnim sustavima pomoću inotify mehanizma (direktne promjene su se prije mogle pratiti samo putem inotifyja, ali
      izvedba u uvjetima rekurzivnog praćenja velikih ugniježđenih direktorija ostavila je mnogo za poželjeti). Sada se takvo praćenje može učinkovito provoditi putem fanotifyja;

    • Na datotečnom sustavu Btrfs dodao mogućnost prilagodbe razine kompresije za zstd algoritam, što se može smatrati optimalnim kompromisom između brzog, ali neučinkovitog lz4 i sporog, ali dobrog kompresije xz. Po analogiji s načinom na koji je prije bilo moguće postaviti razinu kompresije pri korištenju zliba, dodana je podrška za opciju montiranja "-o compress=zstd:level" za zstd. Tijekom testiranja minimalna prva razina omogućila je kompresiju podataka 2.658 puta uz brzinu kompresije od 438.47 MB/s, brzinu dekompresije od 910.51 MB/s i potrošnju memorije od 780 MB, a maksimalna razina 15 omogućila je 3.126 puta, ali uz kompresiju brzina 37.30 MB/s, raspakiranje 878.84 MB/s i potrošnja memorije 2547 MB;
    • Dodano mogućnost dizanja iz datotečnog sustava koji se nalazi na uređaju za mapiranje uređaja, bez korištenja initramfs. Počevši od trenutnog izdanja kernela, uređaji za mapiranje uređaja mogu se izravno koristiti tijekom procesa pokretanja, na primjer, kao particija s korijenskim datotečnim sustavom. Particija je konfigurirana pomoću parametra pokretanja "dm-mod.create". Moduli za mapiranje uređaja dopušteni za učitavanje uključuju: "crypt", "delay", "linear", "snapshot-origin" i "verity";
    • Oznaka F2FS_NOCOW_FL dodana je F2FS datotečnom sustavu orijentiranom na Flash pogone, što vam omogućuje da onemogućite način kopiranja na pisanje za određenu datoteku;
    • Datotečni sustav uklonjen iz kernela Exofs, koja je varijanta ext2, prilagođena za rad s OSD (Object-based Storage Device) pohranama objekata. Podrška za SCSI protokol za takve uređaje za pohranu objekata također je uklonjena;
  • Virtualizacija i sigurnost
    • Dodana opcija PR_SPEC_DISABLE_NOEXEC u prctl() za kontrolu spekulativnog izvršavanja instrukcija za odabrani proces. Nova opcija omogućuje vam da selektivno onemogućite spekulativno izvršavanje za procese koji bi potencijalno mogli biti napadnuti napadom Spectre. Zaključavanje traje do prvog poziva exec();
    • Implementiran LSM modul SafeSetID, koji omogućuje sistemskim uslugama sigurno upravljanje korisnicima bez eskalacije privilegija (CAP_SETUID) i bez dobivanja root privilegija. Privilegije se dodjeljuju definiranjem pravila u securityfs-u na temelju bijele liste važećih veza (u obliku “UID1:UID2”);
    • Dodane su promjene niske razine potrebne za učitavanje sigurnosnih modula (LSM-ova) temeljeno na stogu. Predstavljena opcija pokretanja kernela "lsm" za kontrolu modula koji se učitavaju i kojim redoslijedom;
    • Podsustavu revizije dodana je podrška za prostore imena datoteka;
    • Prošireno mogućnosti GCC dodatka structleak, koji vam omogućuje blokiranje potencijalnog curenja sadržaja memorije Omogućena je inicijalizacija svih varijabli koje se koriste u kodu putem referentnog pristupa na stogu;
  • Mrežni podsustav
    • Za utičnice implementiran nova opcija "SO_BINDTOIFINDEX" slična
      "SO_BINDTODEVICE", ali uzimajući kao argument broj indeksa mrežnog sučelja umjesto naziva sučelja;

    • Skup mac80211 dodao je mogućnost dodjele više BSSID-ova (MAC adresa) jednom uređaju. Kao dio projekta za optimizaciju performansi WiFi-a, skup mac80211 dodao je računanje vremena emitiranja i mogućnost raspodjele vremena između više stanica (kada radi u načinu rada pristupne točke, dodjeljuje manje vremena prijenosa sporim bežičnim stanicama, umjesto ravnomjerne raspodjele vremena među svim stanice);
    • Dodani mehanizam "devlink zdravlje", koji daje obavijesti kada se pojave problemi s mrežnim sučeljem;
  • Memorija i usluge sustava
    • Provedeno sigurna isporuka signala koja omogućuje ponovnu upotrebu PID-a. Na primjer, prilikom prethodnog poziva kill, mogla bi se pojaviti situacija u kojoj bi, odmah nakon slanja signala, ciljni PID mogao biti oslobođen zbog završetka procesa i zauzet od strane drugog procesa, a signal bi završio proslijeđen drugom procesu. Kako bi se eliminirale takve situacije, dodan je novi sistemski poziv pidfd_send_signal, koji koristi deskriptore datoteka iz /proc/pid kako bi osigurao stabilno vezanje procesa. Čak i ako se PID ponovno koristi tijekom obrade sistemskog poziva, deskriptor datoteke se neće promijeniti i može se sigurno koristiti za slanje signala procesu;
    • Dodano mogućnost korištenja trajnih memorijskih uređaja (perzistentne memorije, na primjer NVDIMM) kao RAM. Do sada je kernel podržavao takve uređaje kao uređaje za pohranu, ali sada se mogu koristiti i kao dodatni RAM. Značajka je implementirana kao odgovor na želje korisnika koji su spremni podnijeti kašnjenje u performansama i žele koristiti izvorni API za upravljanje memorijom jezgre Linuxa umjesto korištenja postojećih sustava za dodjelu memorije korisničkog prostora koji se izvode na vrhu mmap za dax datoteka;
    • Dodan je novi rukovatelj mirovanja CPU-a (cpuidle, odlučuje kada se CPU može staviti u duboke načine rada za uštedu energije; što je način rada dublji, to su veće uštede, ali i dulje je potrebno za izlazak iz načina rada) - TEO (Upravljač orijentiran na tajmer događaje ). Do sada su predložena dva cpuidle rukovatelja - “menu” i “ladder”, koji se razlikuju po heuristici. Rukovatelj "izbornika" ima poznate probleme s donošenjem heurističkih odluka, da bi se to uklonilo odlučeno je pripremiti novi rukovatelj. TEO je pozicioniran kao alternativa "menu" rukovatelju, omogućavajući veću izvedbu uz održavanje iste razine potrošnje energije.
      Možete aktivirati novi rukovatelj pomoću parametra pokretanja “cpuidle.governor=teo”;

    • U sklopu rada na otklanjanju problemi 2038, uzrokovan prekoračenjem 32-bitnog tipa time_t, uključuje sistemske pozive koji nude 32-bitne brojače vremena za 64-bitne arhitekture. Kao rezultat toga, 64-bitna struktura time_t sada se može koristiti na svim arhitekturama. Slične promjene također su implementirane u mrežni podsustav za opcije vremenska oznaka mrežne utičnice;
    • U sustav vrućeg krpanja za jezgru (krpanje uživo) dodao Značajka "Atomic Replace" za atomsku primjenu niza promjena na jednu funkciju. Ova vam značajka omogućuje distribuciju sažetih zakrpa koje pokrivaju nekoliko promjena odjednom, umjesto procesa postupne primjene živih zakrpa u strogo definiranom redoslijedu, što je prilično teško održavati. Dok se prije svaka sljedeća promjena morala temeljiti na stanju funkcije nakon zadnje promjene, sada je moguće propagirati nekoliko promjena povezanih s jednim početnim stanjem odjednom (tj. održavatelji mogu umjesto toga održavati jednu konsolidiranu zakrpu u odnosu na osnovnu jezgru lanca zakrpa koje ovise jedna o drugoj);
    • Najavljeno zastarjela podrška za format izvršne datoteke a.out i
      izbrisano kod za generiranje jezgrenih datoteka u a.out formatu, koji je u napuštenom stanju. Format a.out već se dugo ne koristi na Linux sustavima, a generiranje a.out datoteka već dugo nije podržano modernim alatima u zadanim konfiguracijama Linuxa. Dodatno, učitavač za a.out datoteke može se u potpunosti implementirati u korisnički prostor;

    • Mogućnost identificiranja i uklanjanja neiskorištenog koda dodana je mehanizmu provjere programa BPF. Kernel također uključuje zakrpe s podrškom za spinlock za BPF podsustav, pružajući dodatne mogućnosti za upravljanje paralelnim izvođenjem BPF programa;
  • Оборудование
    • U Nouveau vozaču dodao podrška za heterogeno upravljanje memorijom, dopuštajući CPU-u i GPU-u pristup zajedničkim sinkroniziranim memorijskim područjima. Sustav dijeljene virtualne memorije (SVM, shared virtual memory) implementiran je na temelju podsustava HMM (Heterogeneous memory management) koji omogućuje korištenje uređaja s vlastitim jedinicama za upravljanje memorijom (MMU, memory management unit), koji mogu pristupiti glavna memorija. 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. Podrška za SVM trenutno je omogućena samo za GPU-ove obitelji Pascal, iako postoji podrška i za GPU-ove Volta i Turing. Štoviše, u Nouveau dodano novi ioctl za kontrolu migracije područja procesne memorije u GPU memoriju;
    • U Intel DRM upravljačkom programu za GPU Skylake i novije (gen9+) uključen Prema zadanim postavkama, način brzog pokretanja uklanja nepotrebne promjene načina rada tijekom pokretanja. Dodano новые identifikatori uređaja koji se temelje na mikroarhitekturama Coffelake i Ice Lake. Za Coffelake čips dodao GVT podrška (GPU virtualizacija). Za virtualne GPU-ove implementiran VFIO EDID podrška. Za LCD panele MIPI/DSI dodao podrška za ACPI/PMIC elemente. Provedeno novi TV modovi 1080p30/50/60 TV;
    • Dodana podrška za Vega10/20 BACO GPU u amdgpu upravljački program. Implementirano upravljanje napajanjem Vega 10/20 i kontrolne tablice hladnjaka Vega 10. Dodani su novi identifikatori PCI uređaja za Picasso GPU. Dodano sučelje za upravljanje ovisnostima koje je moguće rasporediti radi izbjegavanja zastoja;
    • Dodano DRM/KMS upravljački program za akceleratore zaslona ARM Komeda (Mali D71);
    • Dodana podrška za Toppoly TPG110, Sitronix ST7701, PDA 91-00156-A0, LeMaker BL035-RGB-002 3.5 i Kingdisplay kd097d04 zaslonske ploče;
    • Dodana podrška za Rockchip RK3328, Cirrus Logic CS4341 i CS35L36, MediaTek MT6358, Qualcomm WCD9335 i Ingenic JZ4725B audio kodeke, kao i Mediatek MT8183 audio platformu;
    • Dodana podrška za NAND kontrolere Flash STMicroelectronics FMC2, Amlogic Meson;
    • Dodana podrška za akcelerator za Habana AI hardverske sustave;
    • Dodana podrška za NXP ENETC gigabitne Ethernet kontrolere i MediaTek MT7603E (PCIe) i MT76x8 bežična sučelja.

Istovremeno, Free Software Foundation Latin America formirana
opcija potpuno besplatna jezgra 5.1 - linux-libre 5.1-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, učitavanje blobova je onemogućeno u upravljačkim programima mt7603 i goya. Ažurirani kod za čišćenje mrlja u upravljačkim programima i podsustavima wilc1000, iwlwifi, soc-acpi-intel, brcmfmac, mwifiex, btmrvl, btmtk i touchscreen_dmi. Čišćenje mrlja u lantiq xrx200 firmware loaderu je zaustavljeno zbog njegovog uklanjanja iz kernela.

Izvor: opennet.ru

Dodajte komentar