Linux 6.1 przybywa z Rust, ulepszeniami wydajności, sterownikami i nie tylko

Linux Kernel

Linux Kernel

Po dwóch miesiącach rozwoju, Linus Torvalds ogłosił wydanie nowej wersji jądra Linuksa 6.1, w którym wśród najbardziej znaczących zmian znalazły się: wsparcie rozwoju sterowników i modułów w języku Rust, modernizacja mechanizmu określania zajętych stron pamięci, specjalny menedżer pamięci dla programów BPF, system diagnostyki problemów z pamięcią KMSAN , mechanizm ochrony KCFI (Kernel Control -Flow Integrity), wprowadzenie drzewa struktury klonu.

Nowa wersja otrzymał 15115 2139 poprawek od XNUMX programistów, rozmiar poprawki wynosi 51 MB, czyli około 2 razy mniej niż rozmiar poprawek jądra 6.0 i 5.19.

Główne nowe funkcje Linuksa 6.1

W prezentowanej nowej wersji jądra możemy to znaleźć dodano możliwość używania Rusta jako drugiego języka opracowywanie sterowników i modułów jądra. Głównym powodem wspierania Rust jest ułatwienie pisania wysokiej jakości, bezpiecznych sterowników urządzeń poprzez zmniejszenie prawdopodobieństwa wystąpienia błędów pamięci.

Obsługa rdzy jest domyślnie wyłączona i nie powoduje uwzględnienia Rust jako wymaganej zależności kompilacji jądra. Jak dotąd jądro przyjęło okrojoną, minimalną wersję łatek, która została zmniejszona z 40 do 13 XNUMX linii kodu i zapewnia tylko absolutne minimum, wystarczające do zbudowania prostego modułu jądra napisanego w Rust.

W przyszłościplanowane jest stopniowe zwiększanie dotychczasowej funkcjonalności, przenosząc inne zmiany z gałęzi Rust-for-Linux. Równolegle opracowywane są projekty wykorzystania proponowanej infrastruktury do opracowania kontrolerów dysków NVMe, protokołu sieciowego 9p oraz procesora graficznego Apple M1 na Rust.

Kolejna godna uwagi zmiana jest w AArch64, RISC-V i LoongArch z EFI, gdzie zaimplementowano możliwość bezpośredniego ładowania skompresowanych obrazów jądras, poza tym dodali sterowniki do ładowania, uruchamiania i pobierania obrazów jądra, wywoływana bezpośrednio z EFI zboot.

Dodano również sterowniki do instalowania i usuwania protokołów z bazy protokołów EFI. Wcześniej rozpakowywanie było wykonywane przez oddzielny program ładujący, ale teraz może to zrobić sterownik w samym jądrze: obraz jądra jest zbudowany jako aplikacja EFI.

część plastrów przyjęto wraz z wdrożeniem modelu zarządzania pamięcią różnych poziomach, które umożliwia oddzielne banki pamięci o różnej charakterystyce wydajności. Na przykład często używane strony mogą być przechowywane w najszybszej pamięci, podczas gdy rzadziej używane strony mogą być przechowywane w stosunkowo wolnej pamięci. Jądro 6.1 przyjmuje mechanizm określania, czy intensywnie używane strony znajdują się w wolnej pamięci, aby przenieść je do szybkiej pamięci, oraz implementuje ogólną koncepcję warstw pamięci i ich względnej wydajności.

Oprócz tego możemy również znaleźć to dodano do podsystemu BPF możliwość tworzenia „niszczących” programów BPF specjalnie zaprojektowany do wywoływania awarii przez wywołanie crash_kexec(). Takie programy BPF mogą być potrzebne do celów debugowania, aby wywołać tworzenie zrzutu pamięci w określonym czasie. Dostęp do operacji destrukcyjnych podczas ładowania programu BPF wymaga określenia flagi BPF_F_DESTRUCTIVE, ustawienia sysctl kernel.destructive_bpf_enabled oraz ustawienia praw CAP_SYS_BOOT.

zostało zrobioneo Znaczące optymalizacje wydajności w systemie plików BtrfsMiędzy innymi wydajność operacji fiemap i lseek wzrosła o rzędy wielkości (sprawdzanie udostępnionych rozszerzeń zostało przyspieszone 2-3 razy, a zmiana pozycji w plikach została przyspieszona 1.3-4 razy). Również, przyspieszone kronikowanie i-węzłów dla katalogów (wzrost wydajności o 25% i redukcja opóźnień o 21% w dbench), ulepszono buforowane operacje we/wy i zmniejszono zużycie pamięci.

Ext4 dodaje optymalizacje wydajności związane z kronikowaniem i operacjami tylko do odczytu, usunięto obsługę przestarzałych atrybutów noacl i nouser_xattr, także w EROFS (Enhanced Read-Only File System), przeznaczonym do użytku na partycjach tylko do odczytu, implementuje możliwość Przechowywanie zestawu zduplikowanych danych w innym pliku systemy.

z inne wyróżniające się zmiany:

  • Dodano obsługę podsystemów audio zaimplementowanych w procesorach Apple Silicon, Intel SkyLake i Intel KabyLake.
  • Kontroler audio HDA ​​CS35L41 obsługuje tryb uśpienia.
  • Dodano obsługę kontrolerów AHCI SATA używanych w Baikal-T1 SoC.
  • Dodano obsługę układów Bluetooth MediaTek MT7921, Intel Magnetor (CNVi, zintegrowana łączność), Realtek RTL8852C, RTW8852AE i RTL8761BUV (Edimax BT-8500).
  • Dodano sterowniki dla klawiatury PinePhone, paneli dotykowych InterTouch (ThinkPad P1 G3), kontrolera adaptacyjnego X-Box, kontrolera lotu PhoenixRC, kontrolera samochodowego VRC-2, kontrolera krawędzi DualSense, paneli operacyjnych IBM, XBOX One Elite, tabletów XP-PEN Deco Pro S i Mały Intuos Pro (PTH-460).
  • Dodano sterownik dla akceleratorów kryptograficznych Aspeed HACE (Hash and Crypto Engine).
  • Dodano obsługę zintegrowanych kontrolerów Intel Meteor Lake Thunderbolt/USB4.
  • Dodano obsługę smartfonów Sony Xperia 1 IV, Samsung Galaxy E5, E7 i Grand Max, Pine64 Pinephone Pro.
  • ARM SoC kompatybilny z AMD DaytonaX, Mediatek MT8186, Rockchips RK3399 i RK3566, TI AM62A, NXP i.MX8DXL, Renesas R-Car H3Ne-1.7G, Qualcomm IPQ8064-v2.0, IPQ8062, IPQ8062 /BL i.MX8MM OSM-S , MT8195 (Acer Tomato), Radxa ROCK 4C+, NanoPi R4S Enterprise Edition, JetHome JetHub D1p. Informacje o SoC Samsung, Mediatek, Renesas, Tegra, Qualcomm, Broadcom i NXP.

Na koniec, jeśli chcesz dowiedzieć się więcej na ten temat, możesz zapoznać się ze szczegółami W poniższym linku.