Linux 6.0 kernel kiadás

Két hónapos fejlesztés után Linus Torvalds bemutatta a Linux 6.0 kernel kiadását. A verziószám jelentős változása esztétikai okokból történt, és egy formális lépés a sorozatban felhalmozódó nagyszámú probléma okozta kellemetlenségek enyhítésére (Linus viccelődött, hogy a fiókszám megváltoztatásának oka inkább az volt, hogy kifogytak az ujjai és lábujjak a verziószámok megszámlálásához) . A legfigyelemreméltóbb változások: az aszinkron pufferelt írás támogatása XFS-ben, az ublk blokk-illesztőprogram, a feladatütemező optimalizálása, a kernel megfelelő működését ellenőrző mechanizmus, az ARIA blokk titkosításának támogatása.

Főbb újítások a 6.0-as kernelben:

  • Lemez alrendszer, I/O és fájlrendszerek
    • Az XFS fájlrendszer támogatja az aszinkron pufferelt írásokat az io_uring mechanizmus használatával. A fio eszközökkel végzett teljesítménytesztek (1 szál, 4kB blokkméret, 600 másodperc, szekvenciális írás) a másodpercenkénti bemeneti/kimeneti műveletek (IOPS) növekedését mutatják 77 KB-ról 209 KB-ra, adatátviteli sebességet 314 MB/s-ról 854 MB/s-ra, és a késleltetés csökkenése 9600ns-ról 120ns-ra (80-szor).
    • A Btrfs fájlrendszer a protokoll második verzióját valósítja meg a „send” parancshoz, amely további metaadatok támogatását valósítja meg, nagyobb blokkokban (több mint 64K) küld adatokat, és tömörített formában továbbítja a kiterjedést. A közvetlen olvasási műveletek teljesítménye jelentősen (akár 3-szorosára) nőtt az akár 256 szektor egyidejű kiolvasásának köszönhetően. Csökkentett zárolási versengés és felgyorsult a metaadatok ellenőrzése a halasztott elemek fenntartott metaadatainak csökkentésével.
    • Új ioctl műveletek EXT4_IOC_GETFSUUID és EXT4_IC_SETFSUUID kerültek az ext4 fájlrendszerbe a szuperblokkban tárolt UUID lekéréséhez vagy beállításához.
    • Az F2FS fájlrendszer alacsony memóriafelhasználású módot kínál, amely optimalizálja a működést a kis mennyiségű RAM-mal rendelkező eszközökön, és lehetővé teszi a memóriafogyasztás csökkentését a teljesítmény csökkenése árán.
    • Hozzáadott támogatás az NVMe meghajtó hitelesítéshez.
    • Az NFSv4 szerver korlátozza az aktív kliensek számát, amely 1024 érvényes kliensre van beállítva minden gigabájt RAM-hoz a rendszerben.
    • A CIFS kliens implementációja javította a teljesítményt többcsatornás átviteli módban.
    • Egy új FAN_MARK_IGNORE jelző lett hozzáadva az eseménykövető alrendszerhez a fanotify FS-ben, hogy figyelmen kívül hagyjon bizonyos eseményeket.
    • Ha az Overlayfs FS egy felhasználói azonosító leképezéssel rendelkező FS tetejére van szerelve, akkor a POSIX-kompatibilis hozzáférés-vezérlési listák megfelelő támogatása biztosított.
    • Hozzáadtuk az ublk blokk illesztőprogramot, amely meghatározott logikát helyez át a háttérfolyamat oldalára a felhasználói térben, és az io_uring alrendszert használja.
  • Memória- és rendszerszolgáltatások
    • A DAMON (Data Access MONitor) alrendszer új funkciókkal bővült, amelyek nemcsak a folyamatok RAM-hoz való hozzáférésének figyelését teszik lehetővé a felhasználói területről, hanem a memóriakezelés befolyásolását is. Különösen javasoltak egy új „LRU_SORT” modult, amely lehetővé teszi az LRU (Least Recently Used) listák átcsoportosítását bizonyos memóriaoldalak prioritásának növelése érdekében.
    • Az új memóriarégiók létrehozásának képességét a CXL (Compute Express Link) busz képességei segítségével valósították meg, amely a CPU és a memóriaeszközök közötti nagy sebességű interakció megszervezésére szolgál. A CXL lehetővé teszi a külső memóriaeszközök által biztosított új memóriarégiók csatlakoztatását, és további fizikai címterület-erőforrásként történő felhasználását a rendszer véletlen elérésű memóriájának (DDR) vagy állandó memóriájának (PMEM) bővítéséhez.
    • Megoldották az AMD Zen processzorokkal kapcsolatos teljesítményproblémákat, amelyeket a 20 évvel ezelőtt hozzáadott kód okoz, hogy megkerülje a hardverhibát egyes lapkakészletekben (egy további WAIT utasítást adtak hozzá a processzor lelassításához, így a lapkakészletnek volt ideje tétlen állapotba menni). A változás a teljesítmény csökkenését eredményezte olyan munkaterhelések mellett, amelyek gyakran váltakoznak tétlen és foglalt állapotok között. Például a kerülő megoldás letiltása után az átlagos tesztpadi pontszám 32191 MB/s-ról 33805 MB/s-ra nőtt.
    • A heurisztikus kódot eltávolították a feladatütemezőből, biztosítva a folyamatok migrációját a legkevésbé terhelt CPU-kra, figyelembe véve az energiafogyasztás előre jelzett növekedését. A fejlesztők arra a következtetésre jutottak, hogy a heurisztika nem elég hasznos, és könnyebb volt eltávolítani és a folyamatokat további értékelés nélkül áttelepíteni, amikor az ilyen migráció potenciálisan alacsonyabb energiafogyasztást eredményezhet (például amikor a cél CPU alacsonyabb energiaszinten van). A heurisztika letiltása az energiafogyasztás csökkenéséhez vezetett intenzív feladatok végrehajtása során, például a videó dekódolási tesztben az energiafogyasztás 5.6%-kal csökkent.
    • A feladatok CPU-magok közötti elosztását nagy rendszereken optimalizálták, ami bizonyos típusú munkaterhelések esetén javította a teljesítményt.
    • Az io_uring aszinkron I/O interfész egy új jelzőt kínál, az IORING_RECV_MULTISHOT, amely lehetővé teszi a többszörös felvétel mód használatát a recv() rendszerhívással, hogy egyszerre több olvasási műveletet hajtson végre ugyanabból a hálózati socketből. Az io_uring a hálózati átvitelt is támogatja köztes pufferelés nélkül (nulla másolat).
    • Megvalósította az uprobe-hoz csatolt BPF-programok alvó állapotba helyezésének képességét. A BPF egy új ksym iterátort is hozzáad a kernelszimbólum-táblázatokkal való munkavégzéshez.
    • Eltávolították a sysfs elavult „efivars” felületét, amely az UEFI rendszerindítási változóihoz való hozzáférést szolgálja (az efivarfs virtuális FS-t ma már univerzálisan használják az EFI adatok eléréséhez).
    • A perf segédprogram új jelentéseket tartalmaz a zárolási konfliktusok és a processzor által a kernelkomponensek végrehajtásával töltött idő elemzéséhez.
    • A CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3 beállítást eltávolítottuk, ami lehetővé tette a kernel "-O3" optimalizálási módban való felépítését. Megjegyzendő, hogy az optimalizálási módokkal kapcsolatos kísérletek végrehajthatók jelzők átadásával az összeállítás során ("make KCFLAGS=-O3"), és egy beállítás hozzáadása a Kconfig programhoz megismételhető teljesítményprofilozást igényel, ami azt mutatja, hogy a "-O3" módban használt hurok kibontása előny a „-O2” optimalizálási szinthez képest.
    • Egy debugfs interfész került hozzáadásra, hogy információkat szerezzen az egyes „memóriazsugorítók” működéséről (ezek a kezelők, amelyeket akkor hívnak meg, ha nincs elegendő memória, és a csomagoló kernel adatstruktúrái csökkentik a memóriafelhasználásukat).
    • Az OpenRISC és LoongArch architektúrák esetében a PCI busz támogatása megvalósul.
    • A RISC-V architektúra esetében a „Zicbom” bővítményt a gyorsítótár-koherens DMA-val rendelkező eszközök kezelésére valósították meg.
  • Virtualizáció és biztonság
    • Egy RV (Runtime Verification) ellenőrző mechanizmus került hozzáadásra a rendkívül megbízható rendszerek megfelelő működésének ellenőrzésére, amelyek garantálják a hibákat. Az ellenőrzés futás közben történik úgy, hogy kezelőket csatolnak a nyomkövetési pontokhoz, amelyek ellenőrzik a végrehajtás tényleges előrehaladását a gép előre meghatározott referenciadeterminisztikus modelljéhez képest, amely meghatározza a rendszer várható viselkedését. A modell futásidejű ellenőrzése egy könnyebb és könnyebben megvalósítható módszer a kritikus rendszereken történő végrehajtás helyességének megerősítésére, kiegészítve a klasszikus megbízhatóság-ellenőrzési módszereket. Az RV előnyei közé tartozik, hogy szigorú ellenőrzést biztosít anélkül, hogy a teljes rendszert külön implementálnák egy modellező nyelven, valamint rugalmasan reagálhat előre nem látható eseményekre.
    • Integrált kernelkomponensek az Intel SGX2 (Software Guard eXtensions) technológián alapuló enklávék kezelésére, amely lehetővé teszi az alkalmazások számára, hogy kódot hajtsanak végre a memória elszigetelt, titkosított területein, amelyhez a rendszer többi része korlátozott hozzáféréssel rendelkezik. Az Intel SGX2 technológiát az Intel Ice Lake és Gemini Lake chipek támogatják, és az Intel SGX1-től az enklávék dinamikus memóriakezelésére vonatkozó további utasításokban különbözik.
    • Az x86 architektúra esetében lehetőség van az álvéletlen számgenerátor magjának átvitelére a rendszerbetöltő beállításain keresztül.
    • A SafeSetID LSM modul mostantól képes kezelni a setgroups() híváson keresztül végrehajtott változtatásokat. A SafeSetID lehetővé teszi a rendszerszolgáltatások számára, hogy biztonságosan kezeljék a felhasználókat a jogosultságok kiterjesztése (CAP_SETUID) és root jogosultságok megszerzése nélkül.
    • Hozzáadott támogatás az ARIA blokk titkosításhoz.
    • A BPF-alapú biztonsági felügyeleti modul lehetővé teszi kezelők csatolását az egyes folyamatokhoz és folyamatcsoportokhoz (cgroup).
    • Egy watchdog implementációval rendelkező mechanizmus került hozzáadásra a vendégrendszerek lefagyásának észlelésére a vCPU-tevékenység figyelése alapján.
  • Hálózati alrendszer
    • A SYN cookie-k generálására és ellenőrzésére szolgáló kezelők hozzáadásra kerültek a BPF alrendszerhez. Szintén hozzáadódik egy funkciókészlet (kfunc) a kapcsolatok eléréséhez és megváltoztatásához.
    • A vezeték nélküli verem támogatja az MLO (Multi-Link Operation) mechanizmust, amelyet a WiFi 7 specifikációja határoz meg, és lehetővé teszi az eszközök számára, hogy egyidejűleg fogadjanak és küldjenek adatokat különböző frekvenciasávok és csatornák használatával, például egyidejűleg több kommunikációs csatorna létrehozását hozzáférési pont egy kliens eszközhöz.
    • A kernelbe épített TLS protokoll teljesítménye javult.
    • Hozzáadott egy "hostname="" kernel parancssori opciót, amely lehetővé teszi a gazdagépnév beállítását a rendszerindítási folyamat korai szakaszában, még mielőtt a felhasználói terület összetevői elindulnának.
  • Оборудование
    • Az i915 (Intel) illesztőprogram támogatja az Intel Arc (DG2/Alchemist) A750 és A770 diszkrét videokártyákat. Javasolták az Intel Ponte Vecchio (Xe-HPC) és a Meteor Lake GPU-k támogatásának kezdeti bevezetését. Továbbra is folyik a munka az Intel Raptor Lake platform támogatásán.
    • Az amdgpu illesztőprogram továbbra is támogatja az AMD RDNA3 (RX 7000) és CDNA (Instinct) platformokat.
    • A Nouveau illesztőprogram átdolgozta az NVIDIA nv50 GPU megjelenítőmotorok támogatási kódját.
    • Új logicvc DRM illesztőprogram hozzáadva a LogiCVC képernyőkhöz.
    • A v3d illesztőprogram (Broadcom Video Core GPU-hoz) támogatja a Raspberry Pi 4 kártyákat.
    • A Qualcomm Adreno 619 GPU támogatása hozzáadva az msm illesztőprogramhoz.
    • Az ARM Mali Valhall GPU támogatása hozzáadva a Panfrost illesztőprogramhoz.
    • Kezdeti támogatás hozzáadva a Lenovo ThinkPad X8s laptopokban használt Qualcomm Snapdragon 3cx Gen13 processzorokhoz.
    • Hozzáadott hang-illesztőprogramok AMD Raphael (Ryzen 7000), AMD Jadeite, Intel Meteor Lake és Mediatek MT8186 platformokhoz.
    • Támogatás hozzáadva az Intel Habana Gaudi 2 gépi tanulási gyorsítókhoz.
    • Az ARM SoC Allwinner H616, NXP i.MX93, Sunplus SP7021, Nuvoton NPCM8XX, Marvell Prestera 98DX2530, Google Chameleon v3 támogatása hozzáadva.

Ezzel egyidejűleg a Latin-Amerikai Szabad Szoftver Alapítvány létrehozta a teljesen ingyenes kernel 6.0 - Linux-libre 6.0-gnu - változatát, amely megtisztította a firmware elemeitől és a nem szabad komponenseket vagy kódrészleteket tartalmazó illesztőprogramoktól, amelyek hatóköre: a gyártó korlátozza. Az új kiadás letiltja a blobok használatát a CS35L41 HD-audio illesztőprogramban és az STM32G0 mikrokontrollerek UCSI illesztőprogramjában. A Qualcomm és MediaTek chipekhez tartozó DTS fájlokat megtisztították. A blobok letiltása a MediaTek MT76 illesztőprogramban átdolgozásra került. Frissített blob-tisztító kód az AMDGPU, Adreno, Tegra VIC, Netronome NFP és Habanalabs Gaudi2 illesztőprogramokban és alrendszerekben. Leállította a VXGE illesztőprogram tisztítását, amelyet eltávolítottak a kernelből.

Forrás: opennet.ru

Hozzászólás