Kernel kiadás Linux 7.2

Két hónap fejlesztés után Linus Torvalds kiadta a kernelt. Linux 7.2. A legjelentősebb változások közé tartozik: USB4STREAM adatfolyam-mechanizmus, btrfs, xfs és ext4 teljesítményoptimalizálás, az i486 CPU-támogatás kódjának folyamatos eltávolítása, beágyazott SCHED_EXT ütemezők létrehozásának lehetősége, csökkentett memóriafogyasztás a swap alrendszerben, gyorsított névtelen pipe-ok, Intel MBEC és AMD GMET kiterjesztések támogatása KVM-ben, az AppleTalk protokoll eltávolítása, a HDMI 2.1 FRL kezdeti támogatása az AMDGPU illesztőprogramban.

A 7.2-es kernel főbb új funkciói (1, 2, 3):

  • Lemez alrendszer, I/O és fájlrendszerek
    • Az iomap mechanizmusban eltávolították a memset függvény egy extra hívását a már befejezett iterációkhoz az iomap_iter() függvényben, ami a gyors NVMe meghajtókon végzett magas I/O intenzitás mellett 5%-kal növelte a másodpercenkénti bemeneti/kimeneti műveletek számát (IOPS) az ext4 és xfs fájlrendszerek használatakor végzett tesztekben.
    • Az XFS-t stabilnak nyilvánították a zónázott tárolóeszközök támogatására (blokkok vagy szektorok csoportjainak zónákra osztása, amelyekbe csak egymást követő adatok hozzáadása engedélyezett, a teljes blokkcsoport frissítése).
    • A Btrfs mostantól alapértelmezés szerint támogatja a nagy fóliókat, csökkentve a terhelést és javítva a teljesítményt intenzív szekvenciális I/O műveletek során. Kísérleti támogatást adtunk hozzá a hatalmas fóliókhoz (akár 2 MB-ig). Egy új ioctl, a GET_CSUMS került hozzáadásra az ellenőrzőösszeg-információk felhasználói térben történő lekéréséhez, például az mkfs segédprogramhoz és a deduplikáció optimalizálásához. A szekvenciális írási teljesítmény 15%-kal, a közvetlen I/O teljesítmény pedig 59%-kal nőtt.
    • Az Ext4 fájlrendszer „gyors véglegesítés” mechanizmusát jelentősen áttervezték a versengés és a holtpontok kiküszöbölése érdekében. Az inode pillanatkép-statisztikák exportálása a /proc/fs/ext4/*/fc_info fájlon keresztül történt. A könyvtár hash számítási teljesítményét optimalizálták (a sebesség majdnem megduplázódott a 255 karakteres neveknél, 27%-kal a 64 karakteres neveknél és 11%-kal a 32 karakteres neveknél).
    • Az F2FS mostantól támogatja az fserror hibavisszaadást, lehetővé téve a fájlrendszerrel kapcsolatos problémák monitorozását a felhasználói térből. A megszakításkezelésre fordított idő csökkent.
    • Egy új dm-inlinecrypt kezelő került hozzáadásra a Device Mapperhez (DM), amely transzparens titkosítást és visszafejtést tesz lehetővé a blokkeszközökön, beépített titkosítási funkcióval rendelkező hardvereszközök használatával.
    • Dokumentáció készült az új fájlrendszerek kernelhez való hozzáadásáról.
    • NFS-ben az alapértelmezett blokkméret 4 MB-ra nőtt a legalább 16 GB RAM-mal rendelkező rendszereken (a blokkméret manuális módosításához használhatja a /proc/fs/nfsd/max_block_size parancsot). Hozzáadtuk a könyvtárdelegálás támogatását, amely lehetővé teszi, hogy egy adott könyvtárral műveleteket végezzünk egy bizonyos ideig anélkül, hogy ellenőriznénk az állapotváltozásokat a könyvtáron. szerver.
    • Az SMB-kiszolgáló mostantól támogatja a tömörített formában tárolt fájlokat, valamint az adattömörítést a hálózaton keresztüli átvitel során.
    • Az új NTFS implementáció (ntfsplus) támogatja a szimbolikus linkeket. Windows és a metaadat-sérülések számos típusának helyes kezelése biztosított.
    • Az EROFS (Enhanced Read-Only File System) adatok gyorsítótárazására szolgáló fscache backendet, amely két évvel ezelőtt elavulttá vált, eltávolították.
    • A Ceph FS mostantól támogatja a kliens munkamenetek manuális visszaállítását.
    • A 9P fájlrendszert optimalizálták a teljesítmény javítása érdekében olyan helyzetekben, mint például a projektek felépítése.
    • A file_getattr() rendszerhíváshoz hozzáadtak a fájlrendszer kis- és nagybetűinek megkülönböztetésére vonatkozó információk lekérésére szolgáló jelzőket. Az FS_XFLAG_CASEFOLD jelző azt jelzi, hogy a fájlnevek ellenőrzése kis- és nagybetűket nem megkülönböztető módon történik, az FS_XFLAG_CASENONPRESERVING jelző pedig azt, hogy a kis- és nagybetűkre vonatkozó információk nem őrződnek meg új fájlnevek létrehozásakor. Ezek a jelzők kis- és nagybetűket nem megkülönböztető NFS kliensekben használhatók.
    • Az O_EMPTYPATH flag hozzá lett adva az openat2() rendszerhíváshoz, lehetővé téve üres fájlútvonal átadását. Ebben az esetben a megnyitott fájl elérési útját az átadott fájlleíró alapján határozzuk meg.
    • Az OPENAT2_REGULAR flag hozzá lett adva az openat2() rendszerhíváshoz, amely csak a normál fájlok megnyitását engedélyezi (EFTYPE hibát ad vissza, ha egy speciális fájlt, például egy socketet, pipe-ot vagy eszközt próbálunk megnyitni).
  • Memória- és rendszerszolgáltatások
    • Az USB4STREAM mechanizmus az USB4 portokon keresztül csatlakoztatott számítógépek közötti adatfolyam-továbbításra lett implementálva. Hozzáadtuk a /dev/tbstreamX eszközt, amely lehetővé teszi az adatok olvasását és írását a szabványos read() és write() függvények használatával, hasonlóan a fájlok olvasásához és írásához. Például az egyik gépen az "echo hello > /dev/tbstream0" paranccsal küldhetünk információt, egy másikon pedig a "cat /dev/tbstream0" paranccsal olvashatjuk azt. Az USB4STREAM mechanizmus kombinálható hálózati kapcsolat létesítésének lehetőségével USB4 kábelen (thunderbolt_net) keresztül, vagy külön is használható adatátvitelre olyan alkalmazások között, amelyek nem támogatják a hálózati aljzatokat.
    • A második módosítássorozat, amely az i486 processzorok támogatásának megszüntetését célozza, bekerült a rendszerbe. Több mint 13 sornyi, FPU nélküli processzorok lebegőpontos egység emulációjához kapcsolódó kódot távolítottunk el. A CX8 (8 bájt összehasonlítása és cseréje) és a TSC (a feladatütemezőben használt CPU ciklusszámláló) hardverműveletek nélküli i486 processzorok támogatását eltávolítottuk, mivel ezek emulációs kódját is eltávolítottuk.
    • Az OLPC XO-1 számítógépben használt AMD Geode processzorok támogatását árvának jelentették be.
    • Hozzáadva a támogatás az Intel TDX (Trusted Domain Extensions) implementációjának frissítéséhez, amely a vendégrendszer RAM-jának titkosítására használt mechanizmus. A TDX egy speciális szoftveres futásidejű modulként valósul meg, amelyet a BIOS a rendszerindítás során a flash memóriából a RAM-ba helyez át. A kernel mostantól képes kezelni ezt a modult, és egy futó rendszeren egy újabb verzióra cserélni újraindítás nélkül.
    • Egy új GPU erőforrás-elosztási ütemező (Fair GPU scheduler) került bevezetésre. Ez határozza meg, hogy a GPU-t használó folyamatok által beküldött munka milyen sorrendben kerüljön végrehajtásra a GPU-n. A hagyományos FIDO sor használata helyett a GPU-kéréseknél az új ütemező a Completely Fair Scheduler (CFS) feladatütemezőn alapuló fair erőforrás-elosztási mechanizmusokat használ, amely egy indítási tervet használ, amely átmeneti időt ad a következő folyamathoz. Az új ütemező legszembetűnőbb hatása a GPU-t nagymértékben használó interaktív feladatok párhuzamos végrehajtása során figyelhető meg. A 7.2-es kernel kiadása előtti utolsó pillanatban a Fair GPU ütemezőt deaktiválták, és a régi FIFO ütemezőt visszaállították a regresszió hibakeresésének szükségessége miatt, ami teljesítményromlást és 100%-os GPU-kihasználtságot okozott bizonyos játékok futtatásakor a Protonban.
    • Változások az eBPF alrendszerben: Lehetőség lett hozzáadva egyetlen BPF program több nyomkövetési ponthoz való csatolására. A nyomkövetési pontokhoz csatolt BPF programok mostantól hozzáférhetnek a felhasználói tér komponenseinek memóriájához, a nem lefoglalt memórialapok (laphibák) helyes kezelésével. A bpf() rendszerhívás mostantól támogatja a szabványos attribútumokat (log_buf, log_size, log_level és log_true_size), ami lehetővé teszi az egységes metaadat-átvitelt az összes BPF parancs között, nem korlátozódik a BPF_PROG_LOAD, BPF_BTF_LOAD és BPF_MAP_CREATE parancsokra. Eltávolították azt a korlátozást, hogy legfeljebb 5 paramétert adhatnak át a BPF függvényeknek. Lehetővé vált a bpf_arena megosztott memória biztonságos elérése a nem lefoglalt memórialapok (laphibák) elérésétől való félelem nélkül. A BPF hash map struktúra új verziója valósult meg, amely lehetővé teszi a dinamikus átméretezést.
    • A megszakításstatisztikákat tartalmazó "/proc/interrupts" kimenet generálása optimalizálásra került, a megszakításszámlálók tárolására szolgáló struktúrák modernizálásra kerültek, és a gyorsítótárazás is bekerült.
    • A libselinuxban használt "/proc/filesystems" fájl generálása felgyorsult.
    • A feladatütemező mostantól támogatja a terheléselosztást a CPU-magok között, figyelembe véve a processzor belső gyorsítótárának állapotát. Az ütemező mostantól megpróbálja csoportosítani a megosztott erőforrásokat, például az egyetlen folyamaton belüli szálakat használó folyamatokat, hogy ugyanazt a magas szintű gyorsítótárat használják, javítva az adathozzáférés hatékonyságát azáltal, hogy növeli annak valószínűségét, hogy a szükséges adatok megtalálhatók a gyorsítótárban.
    • A SCHED_EXT mechanizmus, amely lehetővé teszi a BPF használatát CPU-ütemezők létrehozására, továbbra is megvalósította a beágyazott ütemezők (alütemezők) létrehozásának lehetőségét, amelyek lehetővé teszik minden cgroup számára a saját feladatütemező használatát.
    • A Rust-for- ágból folytatott migrációs változtatásokLinux, amely a Rust második nyelvként való használatához kapcsolódik illesztőprogramok és kernel modulok fejlesztéséhez (a Rust támogatása alapértelmezés szerint nincs engedélyezve, és nem tartalmazza a Rust-ot kötelező kernel-felépítési függőségként). A kernel Rust támogatását az s390 architektúrához implementálták. A "zerocopy" csomag, amely gyors memória primitíveket biztosít a "nem biztonságos" módban lévő kódhoz, mellékelve van.
    • A kernel fordításához szükséges LLVM eszközkészlet minimális verzióját 17.0.1-re növelték.
    • A minimalista C könyvtárban, a nolibc-ben, amely a kernel forráskódjával együtt érkezik Linux és keretrendszert biztosít az alapvető rendszerhívásokhoz, támogatva az OpenRISC és a 32 bites PA-RISC architektúrákat.
    • A swap alrendszert optimalizálták a teljesítmény javítása és a memóriafogyasztás csökkentése érdekében magán az alrendszeren belül azáltal, hogy kiküszöbölik a statikus metaadatok tárolásának többletterhelését, valamint egyesítik az anonim és a megosztott memóriát a kötetek használatakor. A memóriacsökkentés igen jelentős; például egy 1 TB-os swap partíció csatlakoztatása körülbelül 512 MB-tal csökkenti a memóriafogyasztást.
    • A memória-kiürítési mechanizmus teljesítménye javult, amely törli vagy áthelyezi a memóriát swap-területre a memória felszabadítása érdekében, amikor a rendszer nagy terhelés alatt van. Bizonyos terhelések esetén, például a MongoDB YCSB (Yahoo! Cloud Serving Benchmark) használatával történő tesztelésekor akár 30%-os teljesítménynövekedést is megfigyeltek.
    • A „make sbom” parancs bekerült a build rendszerbe, hogy SBOM (szoftver anyagjegyzék) listákat generáljon, amelyek tükrözik az aktuális kernel buildben használt komponenseket, könyvtárakat és függőségeket, valamint azok licencinformációit, amelyeket a kódfájlokban található SPDX fejlécekből szereztek be.
    • A névtelen pipe-ok implementációját optimalizálták a zárolások kezelésére (a memóriafoglalási műveletek a zárolás hatókörén kívülre kerültek), ami 21-48%-kal növelte a névtelen pipe-ok átviteli sebességét és 17-33%-kal csökkentette a késleltetést.
  • Virtualizáció és biztonság
    • A slab allokátor mostantól támogatja az Allocation Tokenek használatát, amelyeket a Clang 22 fordítóprogramban valósítottak meg. Az allokációs tokenek lehetővé teszik az egyedi azonosítókat a memória-allokációs műveletekhez, és a különböző típusú objektumok külön allokációját, ami bonyolítja a puffer túlcsordulási sebezhetőségek kihasználását (külön allokáció esetén az egyik típusú objektum puffer túlcsordulása nem könnyen kihasználható más típusú objektumok károsítására).
    • Az AF_ALG mechanizmus, amelyet a Copy Fail sebezhetőségben kihasználtak az adatok módosítására az oldal gyorsítótárában, elavulttá vált, és egy jövőbeli kiadásban eltávolításra kerül. Az AF_ALG hardveres gyorsítókat engedélyez a kriptográfiai számításokhoz a kernel Crypto API-jában, de meglehetősen specifikus helyzetekben használják. A 7.2-es kernelben az aszinkron I/O, a régi illesztőprogramok és a nulla másolású mechanizmus támogatása az skcipher és aead implementációkban eltávolításra került az AF_ALG-ból. Csak a kriptográfiai algoritmusok szoftveres implementációi maradtak meg, és a hardveres kriptográfiai gyorsítók támogatását eltávolították a kernel Crypto API-jában, mivel az AF_ALG jelentősen kibővíti a támadási felületet, de nem nyújt teljesítménybeli előnyt a felhasználói térben lévő kriptográfiai implementációkhoz képest. Az AF_ALG-t a Cryptsetup eszközkészletben használták, de a támogatását a legutóbbi 2.8.7-es kiadásban eltávolították.
    • Az IMA (Integrity Measurement Architecture) mechanizmus, amely lehetővé teszi egy külső szolgáltatás számára a kernel alrendszerek állapotának ellenőrzését azok hitelességének biztosítása érdekében, kiegészült a mérési eredményeket tartalmazó belső táblázatok felhasználói térbe exportálásának, valamint a kernel pufferekből való törlésének támogatásával a memória megtakarítása érdekében.
    • A Landlock modulban, amely a nem privilégiumozott programok számára biztosít eszközöket a kernel objektumok használatának korlátozására Linux (fájlhierarchiák, hálózati socketek, ioctl stb.) támogatást kapott az UDP socketekhez való hozzáférés-vezérléshez, valamint lehetőség nyílt az objektumzárolási információk naplóba történő kimenetének szelektív letiltására, hogy megakadályozzuk a napló irreleváns információkkal való elárasztását.
    • A kernel elavulttá vált a strncpy() függvény használatában, amely egy megadott számú bájtot másol egy bemeneti karakterláncból. A strncpy() használata hibák kockázatát hordozza magában a karakterlánc végén található hiányzó null karakter vagy a nullákkal való további kitöltés miatt. A strncpy() helyett ajánlott az strscpy() és strscpy_pad() függvényeket használni a nullával lezárt karakterláncok másolásához, valamint az strtomem_pad(), memcpy_and_pad() és memcpy() függvényeket ismert, fix méretű karakterláncok másolásához. A strncpy() kernelben való használatának elavulttá tételére irányuló munka 2020-ban kezdődött, és 70 fejlesztő 362 commitját igényelte.
    • A hipervizorban KVM Hozzáadva az Intel MBEC (Mode-Based Execution Control) és AMD GMET (Guest-Mode Execution Trap) bővítmények támogatása, amelyek lehetővé teszik a kernel és a felhasználói térbeli végrehajtási jogok külön kezelését vendég rendszereken a memóriafordítási táblázatokban. Korábban az Intel és az AMD hardveres virtualizációs bővítményei lehetővé tették a memórialapok futtathatóként való megjelölését egyetlen bittel, a kernel és a felhasználói térbeli jogok szoftveralapú elválasztásával a hipervizor szintjén. Az MBEC és a GMET használata kiküszöböli a hipervizor oldali engedélyellenőrzéseket, és jelentősen csökkenti az erőforrás-igényes vezérlésátvitelt a vendég rendszerről a VMexit hipervizorra.
  • Hálózati alrendszer
    • A TCP-AO (TCP Authentication Option, RFC 5925) bővítmény migrálva lett az új libcrypto kriptográfiai könyvtárba, leegyszerűsítve a kódot és javítva a teljesítményét. A TCP-AO lehetővé teszi a TCP fejlécek ellenőrzését MAC (Message Authentication Code) kódok használatával, a modernebb HMAC-SHA-1-96 és AES-128-CMAC-96 algoritmusok használatával, felváltva a korábban elérhető TCP-MD5 opciót, amely az elavult MD5 algoritmuson alapult.
    • A többutas TCP (MPTCP) kapcsolatok által támogatott alfolyamok száma 8-ról 64-re nőtt.
    • Folytatódott a munka az rtnl_lock globális zár használatának csökkentésére a kernel hálózati veremben.
    • A kernel eltávolította az AppleTalk protokollverem implementációját, amelyet 1985 óta használtak az Apple számítógépekben, és amelyet az 1990-es években váltott fel a TCP/IPEzenkívül eltávolították a PPPoATM-hez nem kapcsolódó ATM adatátviteli technológiai komponenseket, valamint az ISA és PCMCIA buszokon alapuló ARCnet hálózati interfészeket, a PCMCIA interfészű Bluetooth adaptereket, a Chelsea TLS gyorsítókat, a TLS és a sockmap integrálására szolgáló kódot, valamint a cfg80211/mac80211 vezeték nélküli verem 5/10 MHz-es frekvenciasávjainak támogatását. A megoldatlan blokkolási problémák és a karbantartók hiánya miatt a TCP Offload Engine-en alapuló TLS feldolgozási gyorsítás egy specifikus implementációját eltávolították (a gyakoribb TLS-tehermentesítési implementáció megmaradt). A 64 bites rendszereken futó 32 bites x_tables kompatibilitási kódját letiltották, és eltávolítása várható.
    • A pppoe illesztőprogram mostantól támogatja a GRO (Generic Receive Offload) és GSO (Generic Segmentation Offload) mechanizmusokat a csomagok újra-összeszerelésének és szegmentálásának hardveres gyorsításához. A GRO és a GSO használata jelentősen növeli a bejövő forgalom átviteli sebességét. Például a címfordítóval konfigurált MediaTek MT7621 eszközökön a maximális átviteli sebesség 130 Mbit/s-ról 630 Mbit/s-ra nőtt.
  • Оборудование
    • Az AMDGPU illesztőprogram mostantól kezdetben támogatja a HDMI 2.1 FRL (Fixed Rate Link) technológiát, lehetővé téve a tömörítetlen videók 4K/120Hz és 8K/60Hz felbontásban történő továbbítását. A HDMI 2.1 támogatás korábban elérhetetlen volt a nyílt forráskódú illesztőprogramokban a HDMI Forum licencelési követelményei miatt, de az AMD most hasonló implementációt biztosított.
    • Az i915 illesztőprogram mostantól támogatja a kijelzővezérlő háttérszínének beállítását. A pin_params.needs_low_address paraméter implementálva lett.
    • Folytatódott az Xe DRM (Direct Rendering Manager) illesztőprogram kidolgozása az Intel Xe architektúrán alapuló GPU-khoz, amelyet az Intel Arc sorozatú grafikus kártyákban és integrált grafikákban használnak, kezdve a Tiger Lake processzorokkal. Hozzáadták a CRI (Crescent Island) platform kezdeti támogatását. Implementálták a rendszervezérlőt az Xe3p dGPU platformokhoz.
    • A Nouveau illesztőprogram megoldja az NVIDIA GA100 GPU-val kapcsolatos problémákat.
    • A v3d illesztőprogram frissítése révén mostantól kezelhető a v3D GPU energiafogyasztása Raspberry Pi alaplapokon.
    • Továbbra is integráltuk a Nova illesztőprogram-komponenseit az NVIDIA GeForce RTX 2000 sorozat óta a Turing mikroarchitektúrán alapuló GSP firmware-rel felszerelt NVIDIA GPU-khoz. A illesztőprogram Rust nyelven íródott. Támogatást adtunk az NVIDIA GA100, Hopper és Blackwell sorozatú GPU-khoz.
    • Hozzáadott támogatás ARM alaplapokhoz, SoC-hez és eszközökhöz: Apple t8122 (M3), Motorola Edge 30, Nothing Phone 3a, Google Pixel 3a XL, Qualcomm Dragonwing IPQ9650, Huawei Hawi, ZTE zx297520v3, Renesas R-Car M3Le, ASPEED AST27xx, Cortina Gemini, NXP i.MX6/8/9, NXP LX2160A, TI K3 AM62x.

Ezzel egy időben a Latin-amerikai Szabad Szoftver Alapítvány létrehozta a teljesen ingyenes kernel 7.2-es verzióját - Linux-libre 7.2-gnu, megtisztítva a nem szabad komponenseket vagy a gyártó által korlátozott hatókörű kódrészleteket tartalmazó firmware és illesztőprogram elemektől. A 7.2-es kiadás blob-tisztítást tartalmaz az új rt722-sdca és tac5xx2 illesztőprogramokhoz. Frissítették az amdgpu, nova core, qcom iris, q6v5, iwlwifi, amdxnda, adreno, r8152 és mt792x illesztőprogramok tisztító kódját. Módosították a firmware betöltésére szolgáló interfészeket. Az ARM chipek devicetree (dts) fájljaiban található blob-nevek megtisztításra kerültek.

Forrás: opennet.ru

Vásároljon megbízható tárhelyet DDoS védelemmel, VPS VDS szerverekkel rendelkező webhelyekhez 🔥 Vásároljon megbízható weboldal tárhelyet DDoS védelemmel, VPS VDS szerverekkel | ProHoster