Két hónap fejlesztés után Linus Torvalds kiadta a kernelt. Linux 6.0. Ez a jelentős verziószám-módosítás esztétikai okokból történt, és egy formális lépés, hogy enyhítse a sorozatban megjelenő nagyszámú kiadás okozta kellemetlenségeket (Linus viccelődött, hogy az ágszám-módosítás oka inkább az volt, hogy kifogyott az ujjaiból és lábujjaiból a verziószámok számolásához). A legjelentősebb változások közé tartozik az aszinkron pufferelt írások támogatása XFS-ben, az ublk blokkillesztőprogram, a feladatütemező optimalizálása, a kernel helyesség-ellenőrző mechanizmusa és az ARIA blokktitkosítás támogatása.
Főbb újítások a 6.0-as kernelben:
- Lemez alrendszer, I/O és fájlrendszerek
- Az XFS fájlrendszer mostantól támogatja az aszinkron pufferelt írásokat az io_uring mechanizmus használatával. A fio eszközkészlettel végzett teljesítménytesztek (1 szál, 4 KB blokkméret, 600 másodperc, szekvenciális írás) a másodpercenkénti I/O műveletek (IOPS) számának 77k-ról 209k-ra, az adatátviteli sebességnek 314 MB/s-ról 854 MB/s-ra, a késleltetésnek pedig 9600 ns-ról 120 ns-ra való csökkenését (ami 80-szoros javulás) mutatják.
- A Btrfs fájlrendszer a „send” parancsprotokoll 2. verzióját valósítja meg, amely támogatja a további metaadatokat, a nagyobb blokkokban (64K felett) küldött adatokat és a tömörített formában történő extensátvitelt. A közvetlen olvasási teljesítmény jelentősen (akár 3-szorosára) nőtt azáltal, hogy akár 256 szektor egyidejű olvasását is lehetővé teszi. Csökkentették a zárolási ütközéseket, és felgyorsították a metaadatok érvényesítését a halasztott elemekhez fenntartott metaadatok mennyiségének csökkentésével.
- Az ext4 fájlrendszer új ioctl műveleteket ad hozzá, az EXT4_IOC_GETFSUUID és az EXT4_IC_SETFSUUID műveleteket a szuperblokkban tárolt UUID lekéréséhez vagy beállításához.
- Az F2FS fájlrendszer alacsony memóriahasználatú módot kínál, amely optimalizálja a teljesítményt a korlátozott RAM-mal rendelkező eszközökön, és a teljesítmény rovására csökkenti a memóriafogyasztást.
- Hozzáadott támogatás az NVMe meghajtó hitelesítéséhez.
- В szerver Az NFSv4 korlátozza az aktív kliensek számát, amely a rendszerben lévő minden gigabájt RAM-hoz 1024 engedélyezett kliensben van beállítva.
- A CIFS kliens implementációja javította a teljesítményt többcsatornás módban.
- Egy új, FAN_MARK_IGNORE jelző került a fanotify FS eseménykövető alrendszerbe, amely lehetővé teszi bizonyos események figyelmen kívül hagyását.
- Az Overlayfs fájlrendszerben, amikor felhasználói azonosító-leképezéssel rendelkező fájlrendszer fölé csatolják, a POSIX-kompatibilis hozzáférés-vezérlési listák megfelelő támogatást kapnak.
- Hozzáadva az ublk blokkillesztőprogram, amely adott logikát helyez át a felhasználói térben futó háttérfolyamatba, és az io_uring alrendszert használja.
- Memória- és rendszerszolgáltatások
- Új képességekkel bővült a DAMON (Data Access MONitor) alrendszer, amelyek nemcsak a felhasználói tárhelyről érkező folyamatok RAM-hozzáférésének monitorozását teszik lehetővé, hanem a memóriakezelés befolyásolását is. Konkrétan egy új "LRU_SORT" modul került bevezetésre, amely lehetővé teszi az LRU (legutóbb használt) listák átrendezését az egyes memórialapok prioritásának növelése érdekében.
- Az új memóriarégiók létrehozásának lehetősége mostantól támogatott a Compute Express Link (CXL) busz használatával, amely nagysebességű kommunikációt biztosít a CPU és a memóriaeszközök között. 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ímtartomány-erőforrásként való használatát a rendszer véletlen hozzáférésű memóriájának (DDR) vagy állandó memóriájának (PMEM) bővítéséhez.
- Kijavítottuk az AMD Zen processzorok teljesítményproblémáit, amelyeket egy 20 évvel ezelőtt hozzáadott kód okozott, amely egyes lapkakészletek hardverproblémájának megkerülésére szolgált (egy további WAIT utasítást adtak hozzá, amely lelassította a processzort, hogy a lapkakészlet tétlen állapotba kerülhessen). Ez a változás a teljesítmény csökkenését eredményezte olyan terhelések alatt, 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 tbench benchmark eredmények 32 191 MB/s-ról 33 805 MB/s-ra nőttek.
- A feladatütemező eltávolította azt a heurisztikus kódot, amely a várható energiamegtakarítás alapján a legkevésbé terhelt CPU-kra migrálja a folyamatokat. A fejlesztők arra a következtetésre jutottak, hogy a heurisztikák nem biztosítják a kívánt előnyt, és könnyebb eltávolítani őket, és további kiértékelés nélkül migrálni a folyamatokat, amikor egy ilyen lépés potenciálisan az energiafogyasztás csökkenéséhez vezethet (például, amikor a cél CPU alacsonyabb energiaszinten van). A heurisztikák letiltása az energiafogyasztás csökkenését eredményezte az intenzív feladatok során; például a videó dekódolási tesztben az energiafogyasztás 5.6%-kal csökkent.
- Nagy rendszereken optimalizálták a CPU-magok közötti feladatelosztást, 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, az IORING_RECV_MULTISHOT-ot vezeti be, amely lehetővé teszi a többlépéses mód használatát a recv() rendszerhívással, így több olvasási műveletet lehet végrehajtani egyetlen hálózati socketről. Az io_uring emellett támogatja a másolásmentes hálózati átvitelt is.
- Megvalósították az uprobe-hoz csatolt BPF programok alvó állapotba helyezésének lehetőségét. A BPF egy új ksym iterátort is hozzáadott a kernel szimbólumtábláinak kezeléséhez.
- A sysfs elavult "efivars" felületét, amely az UEFI rendszerindító változók elérésére szolgált, eltávolították (az efivarfs virtuális fájlrendszert ma már széles körben használják az EFI adatok eléréséhez).
- A perf segédprogram új jelentésekkel rendelkezik a zárolási versengés és a processzor által a kernel-összetevők végrehajtásával töltött idő elemzéséhez.
- A CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3 beállítást, amely lehetővé tette a kernel "-O3" optimalizálási módban történő fordítását, eltávolítottuk. Megjegyezzük, hogy az optimalizálási módokkal való kísérletezés a fordítás során átadott jelzőkkel ("make KCFLAGS=-O3") végezhető, és a beállítás Kconfig-hoz való hozzáadása megismételhető teljesítményprofilozást igényel, amely bemutatja, hogy az "-O3" módban használt cikluskibontás teljesítménybeli előnyt eredményez az "-O2" optimalizálási szinthez képest.
- Hozzáadtunk egy debugfs felületet az egyes "memóriazsűrök" (memóriahiány esetén meghívódó kezelők, amelyek a kernel adatszerkezeteit csomagolják a memóriafogyasztás csökkentése érdekében) működésével kapcsolatos információk lekéréséhez.
- A PCI busz támogatását az OpenRISC és a LoongArch architektúrákhoz implementálták.
- A RISC-V architektúra a "Zicbom" kiterjesztést valósítja meg a nem gyorsítótár-koherens DMA-val rendelkező eszközök kezeléséhez.
- Virtualizáció és biztonság
- Egy futásidejű ellenőrzési (RV) mechanizmus került hozzáadásra a helyes működés ellenőrzésére a nagy megbízhatóságú rendszereken, amelyek garantálják a hibák hiányát. Az ellenőrzés futásidejű végrehajtásához kezelőket csatolnak a nyomkövetési pontokhoz, amelyek összehasonlítják a tényleges végrehajtási folyamatot egy előre definiált determinisztikus referenciaautomata modellel, amely meghatározza a várható rendszerviselkedést. A futásidejű ellenőrzést könnyebb és könnyebben megvalósítható módszerként pozicionálják a helyes végrehajtás megerősítésére kritikus fontosságú rendszereken, kiegészítve a klasszikus megbízhatósági ellenőrzési módszereket. Az RV előnyei közé tartozik a szigorú ellenőrzés biztosítása anélkül, hogy a teljes rendszert külön kellene modellezési nyelven megvalósítani, valamint a rugalmas válaszok a váratlan eseményekre.
- Az Intel SGX2 (Software Guard eXtensions) technológián alapuló enklávé-kezeléshez szükséges kernelkomponenseket integrálták. Ez a technológia lehetővé teszi az alkalmazások számára, hogy kódot futtassanak elszigetelt, titkosított memóriarégiókban, amelyekhez a rendszer többi része nem férhet hozzá. Az Intel SGX2-t az Intel Ice Lake és Gemini Lake processzorok támogatják, és abban különbözik az Intel SGX1-től, hogy további utasításokat tartalmaz a dinamikus enklávé-memória-kezeléshez.
- Az x86 architektúra esetében implementálták a pszeudo-véletlenszám-generátor seed-jének átadásának lehetőségét a rendszerbetöltő beállításain keresztül.
- A SafeSetID LSM modul frissítésre került, hogy támogassa a setgroups() híváson keresztül végrehajtott módosításokat. A SafeSetID lehetővé teszi a rendszerszolgáltatások számára a felhasználók biztonságos kezelését a jogosultságok (CAP_SETUI) eszkalálása vagy root hozzáférés megszerzése nélkül.
- Hozzáadott támogatás az ARIA blokk titkosításhoz.
- A BPF-alapú biztonságkezelési modul lehetővé teszi a kezelők egyes folyamatokhoz és folyamatcsoportokhoz (cgroups) való csatolását.
- Hozzáadott egy watchdog mechanizmust a vendégrendszer lefagyásainak észlelésére a vCPU tevékenységének monitorozása alapján.
- Hálózati alrendszer
- A BPF alrendszerhez hozzáadtak a SYN sütik generálására és érvényesítésére szolgáló kezelőket. Emellett hozzáadtak egy függvénykészletet (kfunc) a kapcsolat állapotának eléréséhez és módosításához.
- A vezeték nélküli hálózat mostantól támogatja az MLO (Multi-Link Operation) mechanizmust, amelyet a WiFi 7 specifikáció definiál, és amely lehetővé teszi az eszközök számára, hogy egyszerre fogadjanak és küldjenek adatokat különböző frekvenciasávok és csatornák használatával, például több kommunikációs csatorna létrehozásához egy hozzáférési pont és egy kliens eszköz között.
- A kernel beépített TLS protokoll implementációjának teljesítményének javítása.
- Hozzáadtuk a "hostname=" kernel parancssori paramétert, hogy a hosztnév már a rendszerindítási folyamat elején, a felhasználói térben lévő komponensek elindítása előtt beállítható legyen.
- Оборудование
- Az i915 (Intel) illesztőprogram támogatja az Intel Arc (DG2/Alchemist) A750 és A770 különálló grafikus kártyákat. Az Intel Ponte Vecchio (Xe-HPC) és a Meteor Lake GPU-k kezdeti támogatása is megtörtént. Folytatódik a munka az Intel Raptor Lake platform támogatásán.
- Az amdgpu illesztőprogram továbbra is azon dolgozik, hogy támogatást nyújtson az AMD RDNA3 (RX 7000) és CDNA (Instinct) platformokhoz.
- A Nouveau illesztőprogram átdolgozta a kódot, hogy az támogassa az NVIDIA nv50 GPU kijelzőmotorokat.
- Új DRM illesztőprogramot, a logicvc-t adtak hozzá a LogiCVC képernyőkhöz.
- A v3d illesztőprogram (Broadcom Video Core GPU-khoz) mostantól támogatja a Raspberry Pi 4 kártyákat.
- Hozzáadva a Qualcomm Adreno 619 GPU támogatása az msm illesztőprogramhoz.
- A Panfrost illesztőprogram frissült, hogy támogassa az ARM Mali Valhall GPU-kat.
- Hozzáadva a Lenovo ThinkPad X13s laptopokban használt Qualcomm Snapdragon 8cx Gen3 processzorok kezdeti támogatása.
- Hozzáadott audio illesztőprogramok az AMD Raphael (Ryzen 7000), AMD Jadeite, Intel Meteor Lake és Mediatek MT8186 platformokhoz.
- Hozzáadott támogatás az Intel Habana Gaudi 2 gépi tanulási gyorsítókhoz.
- Hozzáadott támogatás az ARM SoC Allwinner H616, NXP i.MX93, Sunplus SP7021, Nuvoton NPCM8XX, Marvell Prestera 98DX2530 és Google Chameleon v3 rendszerekhez.
Ezzel egy időben a Latin-amerikai Szabad Szoftver Alapítvány létrehozta a teljesen ingyenes kernel 6.0-es verzióját - Linux-libre 6.0-gnu, megtisztítva a nem szabad komponenseket vagy korlátozott hatókörű kódrészleteket tartalmazó firmware és illesztőprogram elemektől. Ez a kiadás letiltja a blobokat a CS35L41 HD-audio illesztőprogramban és az STM32G0 mikrovezérlők UCSI illesztőprogramjában. A Qualcomm és MediaTek chipek DTS fájljai megtisztításra kerültek. A MediaTek MT76 illesztőprogramban a blobok letiltását átdolgozták. A blob tisztító kódot frissítették az AMDGPU, Adreno, Tegra VIC, Netronome NFP és Habanalas Gaudi2 illesztőprogramokhoz és alrendszerekhez. A kernelből eltávolított VXGE illesztőprogram tisztítását megszüntették.
Forrás: opennet.ru
