Upcoming Linux kernel 7.3: fókuszban a teljesítmény, fájlrendszerek és ütemező

enlightened Ez az oldal a közösségért készül. heart Kövess minket máshol is:  Linux Mint Magyar Közösség a Mastodon-on  Telegram csatorna – csak hírek  Beszélgessünk a Telegram – Linux csevegő csoport  Hírek olvasása RSS segítségével  Linux Mint Hivatalos Magyar Közösség a Facebook-on      Linux Mint Baráti Kör a Facebook-on
wink Ha hasznosnak találod, és szeretnéd, hogy folytatódjon, támogasd a munkát Ko-fi vagy Paypal segítségével. laugh

kami911 képe

A Linux kernel közelgő 7.3-as kiadása a fejlesztői visszajelzések alapján az utóbbi évek egyik leginkább teljesítmény-orientált frissítése lesz. A változások nem egyetlen területre koncentrálnak, hanem a fájlrendszerektől a processzütemezőn és memóriakezelésen át egészen a valós idejű (RT) és hálózati terhelésekig több rétegben javítják a rendszer viselkedését. Ez a Linux Mint és más desktop disztribúciók felhasználói számára is kézzelfogható gyorsulást hozhat, különösen gyengébb hardveren és nagy I/O-terhelés mellett.

Btrfs: 3–5× gyorsulás, új alapértelmezett free-space cache

A Btrfs az elmúlt években fokozatosan lépett elő kísérleti fájlrendszerből stabil, produkciós környezetben is használható megoldássá. A 7.3-as kernelben a fejlesztők kifejezetten a teljesítményre koncentráltak, különösen a naplózás (logging), az fsync(), az extent buffer kezelés és a közvetlen I/O (direct I/O) területén. A mérések szerint ezekben a kódrészekben 3×–5× sebességnövekedés érhető el.

Az fsync() hívás a legtöbb desktop felhasználó számára láthatatlan, de kritikus: ez gondoskodik arról, hogy a fájlok tartalma valóban leíródjon a háttértárra, ne csak a cache-ben maradjon. Adatbázisok, böngészők (profil- és session-fájlok), konténer runtime-ok (pl. Docker, Podman) erősen támaszkodnak rá. Ha az fsync gyorsul, csökken a „mikrolaggok” száma, gyorsabbá válhatnak a tranzakciók, és kevesebb lesz a várakozás I/O-intenzív műveleteknél.

Az extent buffer tracking optimalizálása a Btrfs belső adatstruktúráit érinti. A Btrfs copy-on-write (CoW) fájlrendszer, amely extentszinten (folytonos blokktartományok) tartja nyilván az adatokat. Az extent buffer-ek hatékonyabb kezelése kevesebb lockolást, kevesebb memóriamozgást és kisebb CPU-terhelést jelent, ami különösen sok kis fájl, snapshotok és erősen fragmentált állományok esetén hozhat érezhető javulást.

A direct I/O (közvetlen I/O) útvonal gyorsulása főleg adatbázisoknál, virtualizációnál (pl. KVM/QEMU nyers diszk image-ek), illetve nagy fájlokat közvetlenül kezelő alkalmazásoknál (backup szoftverek, médiastreaming szerverek) fontos. A direct I/O megkerüli az oldalcache-t, így a kernelnek kevesebb másolást és cache-kezelést kell végeznie; ha ez az útvonal gyorsabb és hatékonyabb, az közvetlenül növeli az IOPS-ot és csökkenti a késleltetést.

Fontos változás, hogy a Btrfs alapértelmezett free-space cache formátuma v1-ről v2-re vált. A free-space cache azt tartja nyilván, hogy a fájlrendszer mely blokkjai szabadok, így gyorsabbá teszi az új allokációkat. A v2 formátum célja a jobb skálázódás és a kisebb overhead nagy kapacitású, sok fájlt tartalmazó köteteken. A v1 és v2 közötti különbségek részletei már korábbi kernelverziókban is dokumentáltak voltak, de az, hogy mostantól a v2 lesz az alapértelmezett, arra utal, hogy a fejlesztők elég stabilnak és érettnek tartják ahhoz, hogy széles körben használják.

Linux Mint felhasználók számára ez különösen akkor lehet érdekes, ha Btrfs-re telepítik a rendszert, snapshot-alapú mentéseket használnak (pl. Timeshift Btrfs módban), vagy konténeres, illetve virtualizációs munkaterheléseket futtatnak ugyanazon a gépen.

EXT4: finomhangolt teljesítmény, jobb IOPS Gen5 NVMe-n

Az EXT4 továbbra is a legtöbb disztribúció, így sok Linux Mint kiadás alapértelmezett fájlrendszere. A 7.3-as kernelben az EXT4 is kap teljesítményjavításokat, amelyek főleg a modern NVMe SSD-ket és párhuzamos I/O-t használó alkalmazásokat célozzák.

Az egyik kulcsfontosságú fejlesztés a párhuzamos direct I/O írások jobb kezelése. A korábbi kódútvonalak bizonyos esetekben szűk keresztmetszetet jelentettek, ha több szál egyszerre próbált direct I/O-t végezni ugyanazon fájlrendszeren. A javítások célja, hogy a lockolás és a szinkronizáció finomabb legyen, így a modern, sokmagos CPU-k és gyors NVMe meghajtók valóban ki tudják használni a hardverben rejlő párhuzamosságot.

Emellett az EXT4 multi-block allocator is fejlődik, különösen a fallocate() híváson keresztül. A fallocate() lehetővé teszi, hogy egy alkalmazás előre lefoglaljon (preallocate) diszkterületet egy fájl számára, csökkentve a fragmentációt és javítva a későbbi írások teljesítményét. Az allocator finomhangolása azt jelenti, hogy kevesebb lesz a széttöredezett allokáció, jobb lesz a szekvenciális írási teljesítmény, és stabilabb I/O-viselkedés érhető el nagy terhelés alatt.

Konkrét mérések szerint Gen5 NVMe meghajtókon az IOPS (másodpercenkénti I/O műveletek száma) 1,92 millióról 2,19 millióra nőtt. Ez körülbelül 14%-os javulás, ami már a gyakorlatban is érezhető lehet nagy I/O-terhelésű szervereken, adatbázisokon, vagy akár desktopon, ha sok párhuzamos I/O-t generáló alkalmazást futtatunk (pl. több virtuális gép, konténerek, intenzív build-folyamatok).

Ütemező: jobb frame pacing, különösen gyenge hardveren

A kernel CPU ütemezője (scheduler) az egyik legkritikusabb komponens, hiszen ez dönti el, melyik folyamat mikor és melyik magon fusson. A 7.3-as verzióban jelentős átdolgozás érkezik, amelynek egyik fő célja a frame pacing javítása, vagyis a képkockák közötti időközök egyenletessége grafikus és interaktív alkalmazásoknál.

Ez különösen a „potato-class” hardvereken, azaz gyengébb, régebbi CPU-kon, kevés maggal és alacsony órajellel rendelkező gépeken fontos. Ilyen környezetben a scheduler minden hibája, rossz döntése azonnal látható: akadozó görgetés, mikrolaggok játékokban, UI „beragadások” nagy I/O vagy CPU-terhelés mellett.

A fejlesztések célja, hogy:

  • jobban priorizálják az interaktív folyamatokat (pl. ablakkezelő, böngésző UI szálak),
  • csökkentsék a kontextusváltások és migrációk felesleges számát,
  • kiegyensúlyozottabban osszák el a terhelést a magok között.

Ennek eredménye lehet, hogy ugyanazon hardveren a Linux Mint Cinnamon vagy más grafikus környezet simábban reagál, kevesebb „tüskét” látunk az input-latencyben, és a játékoknál is stabilabb frametime-ot kapunk, még ha az átlag FPS nem is nő drámaian.

Memóriakezelés: zsmalloc és KSM brutális gyorsulása

A memóriakezelés finomhangolása a kernel egyik folyamatosan fejlődő területe. A 7.3-as kiadásban két fontos komponens kapott jelentős teljesítményjavítást: a zsmalloc és a KSM (Kernel Samepage Merging).

A zsmalloc egy tömörített memóriaallokátor, amelyet például a zram használ. Zram esetén a rendszer egy RAM-alapú, tömörített blokkeszközt hoz létre, amelyet swapként vagy akár fájlrendszerként is használhatunk. Ez különösen hasznos kevés memóriával rendelkező gépeken, például Raspberry Pi-n vagy régebbi laptopokon.

A zsmalloc-ban kontenciós problémákat javítottak, vagyis csökkentették azt az időt, amíg a különböző CPU-magok egymásra várnak lockok miatt. A mérések szerint ez 1,4×–1,83× teljesítménynövekedést hoz, ami a gyakorlatban azt jelenti, hogy a zram-alapú swap használata kevésbé fogja „megakasztani” a rendszert, kevesebb lesz a hirtelen belassulás, amikor a memória elfogy és a kernel intenzíven kezd lapozni.

A KSM (Kernel Samepage Merging) olyan technika, amely azonos tartalmú memóriaoldalakat egyesít, így csökkentve az összes memóriahasználatot. Ezt főleg virtualizációs környezetekben használják (sok hasonló virtuális gép futtatásakor), de desktopon is előfordulhat, például bizonyos konfigurációkban.

A KSM-ben a reverse-mapping lock ideje drasztikusan csökkent: korábban akár 500 ms feletti lockidők is előfordulhattak, mostanra ez 2 ms alá esik. Ez 100×–500× javulást jelent. A hosszú lockidők azt eredményezték, hogy a rendszer bizonyos részei hosszabb ideig várakoztak, ami érezhető laggokhoz vezethetett. A rövidebb lockidők simább, kiszámíthatóbb viselkedést eredményeznek, különösen sok folyamatot és intenzív memóriahasználatot felvonultató rendszereken.

SMP valós idejű késleltetés: P99 latency a tizedére esik

A többprocesszoros (SMP) rendszerek valós idejű késleltetése (real-time latency) kulcsfontosságú olyan terheléseknél, mint a hálózati csomagfeldolgozás, ipari vezérlés, vagy bármilyen RT-kritikus alkalmazás. A 7.3-as kernelben a P99 latency – azaz az a késleltetés, amelyet az esetek 99%-ában nem lép túl a rendszer – 17 ms-ról 1,5 ms-ra csökken.

Ez több mint tízszeres javulás, ami DPDK-t (Data Plane Development Kit) használó alkalmazásoknál és más valós idejű workloadoknál különösen fontos. A DPDK célja, hogy a hálózati csomagokat a kernel hagyományos hálózati stackjét megkerülve, user space-ben, minimális overhead mellett dolgozza fel. Itt minden mikro- és milliszekundum számít; a kisebb jitter és alacsonyabb P99 latency stabilabb throughputot és megbízhatóbb reakcióidőt jelent.

Bár a Linux Mint tipikus desktop felhasználója ritkán futtat DPDK-alapú alkalmazásokat, a valós idejű késleltetés javulása általános értelemben is kedvező: a kernel belső lockolási és ütemezési mechanizmusainak finomhangolása a mindennapi interaktív használatban is hozhat kisebb, de pozitív hatásokat.

Intel hibrid CPU-k: jobb P-core / E-core terheléselosztás

Az Intel hibrid architektúrája – P-core (teljesítménymagok) és E-core (hatékonysági magok) kombinációja – komoly kihívást jelent az operációs rendszerek ütemezőinek. A Linux kernel az elmúlt években folyamatosan fejlesztette a hibrid CPU-k támogatását, többek között az Intel Thread Director információinak felhasználásával.

A 7.3-as kernelben tovább javul a terheléselosztás az Intel hibrid CPU-kon, különösen az Alder Lake, Lunar Lake és Panther Lake generációknál. A cél, hogy:

  • az interaktív, latency-érzékeny folyamatok inkább a P-core-okra kerüljenek,
  • a háttérben futó, kevésbé kritikus, de párhuzamosítható feladatok (pl. indexelés, batch feldolgozás) az E-core-okon fussanak,
  • csökkenjen a felesleges migráció a magtípusok között.

Ez a Linux Mint felhasználók számára azt jelentheti, hogy modern Intel laptopokon és desktopokon a rendszer reszponzívabb lesz, miközben az energiafogyasztás is optimalizálódik. A jobb magkiosztás különösen fontos akkumulátoros üzemmódban, ahol a hatékonysági magok megfelelő kihasználása hosszabb üzemidőt eredményezhet, miközben a felhasználói élmény nem romlik.

Gyakorlati hatások Linux Mint alatt és jövőbeli kilátások

A 7.3-as kernel teljesítményfókusza több szinten is érezhető lesz a mindennapi használatban:

  • Gyengébb gépek: simább UI, kevesebb mikrolagg a scheduler fejlesztéseinek köszönhetően.
  • Btrfs használók: gyorsabb snapshotok, jobb fsync-teljesítmény, stabilabb viselkedés nagy I/O-terhelésnél.
  • EXT4 + NVMe: magasabb IOPS, jobb skálázódás párhuzamos direct I/O mellett.
  • Kevés RAM / zram: kevesebb akadozás, jobb reakcióidő zsmalloc optimalizációk révén.
  • Virtualizáció, konténerek: KSM és RT-latency javulások miatt kiszámíthatóbb teljesítmény.
  • Modern Intel laptopok: jobb P-core / E-core kihasználás, reszponzívabb rendszer és potenciálisan jobb üzemidő.

A Linux Mint stabil kiadásai jellemzően konzervatívabban váltanak új kernelverziókra, de a teljesítményjavulások mértéke miatt várható, hogy a 7.3-as ág a disztribúciók számára is vonzó cél lesz, akár HWE (Hardware Enablement) kernelként, akár opcionális frissítésként. Aki ennél is hamarabb szeretné kipróbálni az új fejlesztéseket, az saját felelősségre használhat mainline kernelt, de ezt desktop rendszeren mindig körültekintően érdemes megtenni.

Összességében a Linux kernel 7.3-as verziója jól mutatja, hogy a kernelfejlesztés nem csak új funkciókról és hardvertámogatásról szól, hanem a meglévő komponensek folyamatos finomhangolásáról is. A Btrfs és EXT4 fájlrendszerek, az ütemező, a memóriakezelés és a valós idejű viselkedés együttes javulása a Linux Mint felhasználók számára is kézzelfoghatóan gyorsabb, simább és kiszámíthatóbb rendszert ígér.