Vydání jádra Linux 6.3

Po dvou měsících vývoje vydal Linus Torvalds jádro Linux 6.3. Mezi nejpozoruhodnější změny patří vyčištění zastaralých platforem ARM a grafických ovladačů, pokračující integrace podpory jazyka Rust, utilita hwnoise, podpora červeno-černých stromových struktur v BPF, režim BIG TCP pro IPv4, vestavěný benchmark Dhrystone, možnost deaktivace provádění v memfd, podpora pro vytváření ovladačů HID pomocí BPF, změny byly provedeny v Btrfs, aby se snížila fragmentace skupin bloků.

Nová verze přijala 15637 oprav od 2055 vývojářů; velikost opravy - 76 MB (změny se dotkly 14296 souborů, přidáno 1023183 řádků kódu, smazáno 883103 řádků). Pro srovnání, v předchozí verzi bylo navrženo 16843 oprav od 2178 vývojářů; velikost opravy - 62 MB. Asi 39 % všech změn zavedených v jádře 6.3 souvisí s ovladači zařízení, asi 15 % změn souvisí s aktualizací kódu specifického pro hardwarové architektury, 10 % se týká síťového zásobníku, 5 % se souborovými systémy a 3 % do vnitřních subsystémů jádra.

Klíčové inovace v jádře 6.3:

  • Paměťové a systémové služby
    • Bylo provedeno výrazné vyčištění kódu souvisejícího se starými a nepoužívanými deskami ARM, což snížilo velikost zdrojových kódů jádra o 150 tisíc řádků. Bylo odstraněno více než 40 starých platforem ARM.
    • Implementována možnost vytvářet ovladače pro vstupní zařízení s rozhraním HID (Human Interface Device) implementované ve formě programů BPF.
    • Pokračující portování dalších funkcí z větve Rust-for-Linux souvisejících s používáním Rustu jako druhého jazyka pro vývoj ovladačů a modulů jádra. Podpora Rust není ve výchozím nastavení povolena a nevede k tomu, aby byl Rust zahrnut jako povinná závislost sestavení jádra. Funkčnost nabízená v předchozích verzích byla rozšířena o podporu typů Arc (implementace ukazatelů s počtem referencí), ScopeGuard (vyčistí se, když je provedeno mimo rozsah) a ForeignOwnable (poskytuje pohyb ukazatele mezi kódem C a Rust). . Odstraněn modul 'půjčit' z balíčku 'alloc' (zadejte 'Cow' a vlastnost 'ToOwned'). Je třeba poznamenat, že stav podpory pro Rust v jádře je již blízko zahájení přijímání prvních modulů napsaných v Rustu do jádra.
    • Linux v uživatelském režimu (spouštějící jádro jako uživatelský proces) na systémech x86-64 podporuje kód napsaný v Rustu. Přidána podpora pro vytváření Linuxu v uživatelském režimu pomocí clang s povolenou optimalizací doby propojení (LTO).
    • Přidán nástroj hwnoise pro sledování zpoždění způsobených chováním hardwaru. Odchylky v době provádění operací (jitter) jsou určeny, když je zakázáno zpracování přerušení, přesahující jednu mikrosekundu za 10 minut výpočtů.
    • Byl přidán modul jádra s implementací benchmarku Dhrystone, který lze použít k vyhodnocení výkonu CPU v konfiguracích bez komponent uživatelského prostoru (například ve fázi portování pro nové SoC, které implementují pouze načítání jádra).
    • Přidána možnost příkazového řádku jádra "cgroup.memory=nobpf" pro zakázání účtování spotřeby paměti pro programy BPF, což může být užitečné pro systémy s izolovanými kontejnery.
    • Pro programy BPF je navržena implementace datové struktury červeno-černého stromu, která místo přidání nového typu mapování používá kfunc + kptr (bpf_rbtree_add, bpf_rbtree_remove, bpf_rbtree_first).
    • V mechanismu restartovatelných sekvencí (rseq, restartable sequences) přibyla do procesů možnost předávání identifikátorů paralelního provádění (Memory-map concurrency ID) identifikovaných s číslem CPU. Rseq poskytuje prostředky pro rychlé atomické provádění operací, které, pokud jsou přerušeny jiným vláknem, jsou vyčištěny a opakovány.
    • Procesory ARM podporují instrukce SME 2 (Scalable Matrix Extension).
    • Pro architektury s390x a RISC-V RV64 je implementována podpora pro mechanismus „BPF trampoline“, který umožňuje minimalizovat režii při přenosu hovorů mezi jádrem a programy BPF.
    • Na systémech s procesory založenými na architektuře RISC-V bylo implementováno použití instrukcí "ZBB" pro urychlení operací s řetězci.
    • Pro systémy založené na architektuře instrukční sady LoongArch (používá se v procesorech Loongson 3 5000 a implementuje nový RISC ISA podobný MIPS a RISC-V), podpora randomizace adresového prostoru jádra (KASLR), přemístění jádra v paměti (přemístění ), zarážka hardwarových bodů a mechanismus kprobe.
    • Mechanismus DAMOS (Data Access Monitoring-based Operation Schemes), který umožňuje uvolnit paměť na základě frekvence přístupu do paměti, podporuje filtry pro vyloučení určitých oblastí paměti ze zpracování v DAMOS.
    • Minimální standardní C knihovna Nolibc implementuje podporu pro architekturu s390 a instrukční sadu Arm Thumb1 (kromě podpory pro ARM, AArch64, i386, x86_64, RISC-V a MIPS).
    • Objtool byl optimalizován tak, aby zrychlil sestavení jádra a snížil špičkovou spotřebu paměti během sestavení (při sestavování jádra v režimu „allyesconfig“ nedochází k problémům s nuceným ukončením procesů na systémech s 32 GB RAM).
    • Byla ukončena podpora sestavování jádra kompilátorem Intel ICC, který byl dlouhou dobu nefunkční a nikdo neprojevil přání to opravit.
  • Diskový subsystém, I/O a souborové systémy
    • tmpfs podporuje mapování ID uživatele připojeného souborového systému, které se používá k mapování souborů konkrétního uživatele na připojeném cizím oddílu na jiného uživatele na aktuálním systému.
    • V Btrfs se pro snížení fragmentace skupin bloků při přidělování bloků dělí rozsahy podle velikosti, tzn. jakákoli skupina bloků je nyní omezena na malé (do 128 KB), střední (do 8 MB) a velké rozsahy. Implementace raid56 byla refaktorována. Přepracovaný kód pro kontrolu kontrolních součtů. Byly provedeny optimalizace výkonu, aby se operace odesílání urychlila až 10krát tím, že ukládá do mezipaměti utime pro adresáře a spouští příkazy pouze v případě potřeby. 10x rychlejší operace fiemap vynecháním kontrol zpětných odkazů pro sdílená data (snímky). Operace s metadaty jsou urychleny o XNUMX % díky optimalizaci vyhledávání klíčů ve strukturách b-stromu.
    • Vylepšený výkon ext4 FS tím, že umožňuje více procesům současně provádět přímé I/O operace do předem přidělených bloků pomocí sdílených zámků inode namísto exkluzivních zámků.
    • Ve f2fs se pracovalo na zlepšení čitelnosti kódu. Opraveny důležité problémy související s atomickým zápisem a novou mezipaměť rozsahu.
    • EROFS (Enhanced Read-Only File System), navržený pro použití na oddílech pouze pro čtení, implementuje schopnost svázat operace dekomprese komprimovaných souborů s CPU, aby se snížilo zpoždění přístupu k datům.
    • Plánovač BFQ I/O přidal podporu pro pokročilé rotující diskové jednotky, jako jsou ty, které používají více samostatně řízených jednotek (Multi Actuator).
    • Do implementace klienta a serveru NFS byla přidána podpora pro šifrování dat pomocí algoritmu AES-SHA2.
    • Subsystém FUSE (Filesystems In User Space) přidal podporu pro mechanismus rozšíření dotazu, který umožňuje vkládat do dotazu další informace. Na základě této vlastnosti je implementováno doplnění skupinových identifikátorů do požadavku FS, které jsou nutné pro zohlednění přístupových práv při vytváření objektů ve FS (create, mkdir, symlink, mknod).
  • Virtualizace a bezpečnost
    • Hypervizor KVM pro systémy x86 přidává podporu pro rozšířená hypervolání Hyper-V a poskytuje jim předávání do obslužné rutiny běžící v hostitelském prostředí uživatelského prostoru. Změna umožnila implementovat podporu pro vnořené spuštění hypervizoru Hyper-V.
    • KVM usnadňuje omezení přístupu hostovaného systému k událostem PMU (Performance Monitor Unit) souvisejícím s měřením výkonu.
    • Mechanismus memfd, který umožňuje identifikovat paměťovou oblast pomocí deskriptoru souboru předávaného mezi procesy, byla přidána možnost vytvářet oblasti, ve kterých je zakázáno spouštění kódu (nespustitelný memfd) a není možné nastavit práva na spouštění v budoucnost.
    • Byla přidána nová operace PR_SET_MDWE prctl, která blokuje pokusy o zahrnutí přístupových práv do paměti, která umožňují zápis i spouštění současně.
    • Ve výchozím nastavení byla přidána a povolena ochrana proti útokům třídy Spectre na základě automatického režimu IBRS (Enhanced Indirect Branch Restricted Speculation) navrženého v procesorech AMD Zen 4, který umožňuje adaptivně povolit a zakázat spekulativní provádění instrukcí během zpracování přerušení. , systémová volání a kontextové přepínače. Navržená ochrana má za následek nižší režii ve srovnání s ochranou Retpoline.
    • Řeší zranitelnost, která by mohla obejít ochranu proti útoku Spectre v2 při použití technologie simultánního multithreadingu (SMT nebo Hyper-Threading) a způsobenou deaktivací mechanismu STIBP (Single Thread Indirect Branch Predictors) při výběru režimu ochrany IBRS.
    • Pro systémy založené na ARM64 byl přidán nový cíl sestavení „virtconfig“, který, pokud je vybrán, aktivuje pouze minimální sadu komponent jádra, které jsou nutné pro zavedení ve virtualizačních systémech.
    • Přidána podpora pro filtrování systémových volání pomocí mechanismu seccomp pro architekturu m68k.
    • Přidána podpora pro vestavěná zařízení CRB TPM2 (Command Response Buffer) v procesorech AMD Ryzen založená na technologii Microsoft Pluton.
  • Síťový subsystém
    • Bylo přidáno rozhraní netlink pro konfiguraci podvrstvy PLCA (Physical Layer Collision Avoidance), definované ve specifikaci IEEE 802.3cg-2019 a používané v 802.3cg (10Base-T1S) ethernetových sítích optimalizovaných pro připojení zařízení IoT a průmyslových systémů. Použití PLCA zlepšuje výkon v sítích Ethernet se sdílenými médii.
    • Podpora rozhraní API „bezdrátová rozšíření“ pro správu bezdrátových rozhraní WiFi 7 (802.11be) byla ukončena, protože toto rozhraní API nepokrývá všechna potřebná nastavení. Při pokusu o použití rozhraní API „bezdrátových rozšíření“, které je nadále podporováno jako emulovaná vrstva, se nyní u většiny současných zařízení zobrazí varování.
    • Byla připravena podrobná dokumentace k netlink API (pro vývojáře jádra a pro vývojáře aplikací v uživatelském prostoru). Nástroj ynl-gen-c byl implementován pro generování C-kódu na základě specifikací YAML protokolu Netlink.
    • Do síťových soketů byla přidána podpora pro volbu IP_LOCAL_PORT_RANGE, aby se zjednodušila konfigurace odchozích připojení prostřednictvím překladače adres bez použití SNAT. Při použití stejné IP adresy na více hostitelích umožňuje IP_LOCAL_PORT_RANGE každému hostiteli používat vlastní rozsah odchozích síťových portů a na bráně předávat pakety na základě čísel portů.
    • Pro MPTCP (MultiPath TCP) je implementována schopnost zpracovávat smíšené toky, které používají protokoly IPv4 a IPv6. MPTCP je rozšířením protokolu TCP pro organizaci provozu TCP spojení s doručováním paketů současně po několika trasách přes různá síťová rozhraní vázaná na různé IP adresy.
    • Pro IPv4 je implementována možnost použití rozšíření BIG TCP, které umožňuje zvýšení maximální velikosti TCP paketu až na 4 GB pro optimalizaci provozu vysokorychlostních interních sítí datových center. Tohoto zvýšení velikosti paketu s 16bitovým polem hlavičky je dosaženo implementací „jumbo“ paketů, které mají velikost IP hlavičky nastavenou na 0 a skutečnou velikost přenášenou v samostatném 32bitovém poli v samostatné připojené hlavičce.
    • Byl přidán nový parametr sysctl default_rps_mask, jehož prostřednictvím lze nastavit výchozí konfiguraci RPS (Receive Packet Steering), která má na starosti distribuci zpracování příchozího provozu mezi jádra CPU na úrovni obsluhy přerušení.
    • Ukončení podpory pro disciplíny zařazování do fronty za účelem omezení provozu CBQ (zařazení do fronty na základě třídy), ATM (virtuální okruhy ATM), dsmark (značka diferencované služby), tcindex (index řízení provozu) a RSVP (protokol rezervace prostředků). Od těchto disciplín se již dlouho upustilo a nikdo nebyl ochoten v jejich podpoře pokračovat.
  • Оборудование
    • Odebrány všechny grafické ovladače založené na DRI1: i810 (staré integrované grafické karty Intel 8xx), mga (GPU Matrox), r128 (GPU ATI Rage 128 včetně karet Rage Fury, XPERT 99 a XPERT 128), savage (GPU S3 Savage), sis ( Crusty SiS GPU), tdfx (3dfx Voodoo) a via (VIA IGP), které byly v roce 2016 zastaralé a od roku 2012 nejsou v Mesa podporovány.
    • Odstraněny zastaralé ovladače framebufferu (fbdev) omap1, s3c2410, tmiofb a w100fb.
    • Byl přidán ovladač DRM pro VPU (Versatile Processing Unit) integrovanou do procesorů Intel Meteor Lake (14. generace), navržený pro urychlení operací počítačového vidění a strojového učení. Ovladač je implementován pomocí subsystému „accel“, zaměřeného na poskytování podpory pro výpočetní akcelerátory, které mohou být dodávány jak ve formě samostatných ASIC, tak jako IP bloky uvnitř SoC a GPU.
    • Ovladač i915 (Intel) rozšiřuje podporu pro diskrétní grafické karty Intel Arc (DG2/Alchemist), poskytuje předběžnou podporu pro GPU Meteor Lake a zahrnuje podporu pro GPU Intel Xe HP 4tile.
    • Ovladač amdgpu přidává podporu technologie AdaptiveSync a možnost používat Secure Display s více displeji. Aktualizovaná podpora pro DCN 3.2 (Display Core Next), SR-IOV RAS, VCN RAS, SMU 13.xa DP 2.1.
    • Do ovladače msm (GPU Qualcomm Adreno) přidána podpora platforem SM8350, SM8450 SM8550, SDM845 a SC8280XP.
    • Ovladač Nouveau ukončil podporu pro stará volání ioctl.
    • Do ovladače etnaviv byla přidána experimentální podpora pro NPU VerSilicon (VeriSilicon Neural Network Processor).
    • Byl implementován ovladač pata_parport pro disky IDE připojené přes paralelní port. Přidaný ovladač umožnil odstranit starý ovladač PARIDE z jádra a upgradovat subsystém ATA. Omezením nového ovladače je nemožnost současného připojení tiskárny a disku přes paralelní port.
    • Přidán ovladač ath12k pro bezdrátové karty založené na čipech Qualcomm s podporou Wi-Fi 7. Přidána podpora pro bezdrátové karty založené na čipech RealTek RTL8188EU.
    • Přidána podpora pro 46 desek založených na architektuře ARM64, včetně Samsung Galaxy tab A (2015), Samsung Galaxy S5, BananaPi R3, Debix Model A, EmbedFire LubanCat 1/2, Facebook Greatlakes, Orange Pi R1 Plus, Tesla FSD a také zařízení založeno na SoC Qualcomm MSM8953 (Snapdragon 610), SM8550 (Snapdragon 8 Gen 2), SDM450 a SDM632, TV box Rockchips RK3128, RV1126 Vision, RK3588, RK3568, RK3566KAM3588 a 3328RK3,AM642 654/AM68 / AM69).

Latinskoamerická nadace pro svobodný software zároveň vytvořila variantu zcela svobodného jádra 6.3 - Linux-libre 6.3-gnu, zbavenou prvků firmwaru a ovladačů obsahujících nesvobodné komponenty nebo části kódu, jejichž rozsah je omezen výrobce. Ve verzi 6.3 byly objekty blob vyčištěny v nových ovladačích ath12k, aw88395 a peb2466 a také v nových souborech stromu zařízení pro zařízení qcom založená na AArch64. Aktualizovaný čistící kód blobů v ovladačích a podsystémech amdgpu, xhci-rcar, qcom-q6v5-pas, sp8870, av7110 a také v ovladačích pro DVB-karty se softwarovým dekódováním a v předkompilovaných souborech BPF. Zastaveno čištění ovladačů mga, r128, tm6000, cpia2 a r8188eu, protože byly odstraněny z jádra. Vylepšené čištění objektů blob ovladače i915.

Zdroj: opennet.ru

Přidat komentář