A December elején megjelent Linux kernel 6.1 újdonságai

kami911 képe

Megjelent a Linux kernel 6.1-es verziója. Ez egy LTS, azaz hosszan támogatott verzió. Már csak ezért is fontos, hogy vessünk néhány pillantást a lényegesebb újdonságokra. Ez a kiadás tartalmazza a Rust programozási nyelv kezdeti támogatását; egy opcionális MGLRU memóriakezelési algoritmust, amely jobb memóriakezelési teljesítményt biztosít; egy kernel memória tisztítót a hatékonyabb memóriabiztonsági hibakeresés érdekében; memória tiering javításokat; lehetővé teszi a folyamatok számára, hogy önkéntes módon vonják össze a memóriát egy Transparent Hugepage-be; új BPF funkciókat, például egy pánik segédprogramot; jobb Btrfs teljesítményt összességében; egy Maple tree adatszerkezetet, amely jobb algoritmikus tulajdonságokkal rendelkezik, mint az átlátható hatalmas oldal; a per-cgroup Pressure Stall Information támogatását és egy új IRQ/SoftIRQ PSI mutatót.

  • A Rust programozási nyelv kezdeti támogatása
    Ez a kiadás hozzáadja a Rust programozási nyelv támogatását. A Rust célja, hogy egy modern rendszerprogramozási nyelvet biztosítson bizonyítható memóriabiztonsággal, szemétgyűjtő használata nélkül, így kiküszöbölve a biztonsági sebezhetőségek leggyakoribb forrását jelentő hibák egy egész osztályát. Ez a kiadás kezdeti támogatást tartalmaz a Rust programozási nyelv számára, amely a későbbi kiadásokban továbbfejlesztésre kerül.
    (Cikk)
  • Többgenerációs LRU a jobb memóriakezelés érdekében
    Amikor a programok megpróbálnak több memóriát használni, mint amennyi rendelkezésre áll, a Linux kernelnek döntést kell hoznia arról, hogy a memória mely részei, és melyik program(ok)tól, költözzenek a memóriából swapolásra vagy kiürítésre. Ez a folyamat dönti el a kernel gyorsítótárazási politikáját és a memória túlköltésének képességét. A Linux jelenlegi memóriakezelő alrendszere úgy próbál helyes döntést hozni, hogy LRU (Least Recently Used) listákat vezet a memóriaoldalakról. Ez a módszer azonban nem mindig a legjobb döntéseket hozza. A többgenerációs LRU egy alternatív LRU implementáció, amely optimalizálja a lapok visszavételét és javítja a teljesítményt memóriaterhelés alatt. Ez a megvalósítás nem helyettesíti a jelenlegi memóriakezelési sémát, a fordításkor konfigurálható.
    (Cikk, Cikk, Rendszergazdai útmutató, Tervezési dokumentáció)
  • KMSAN, a kernel memóriatisztító
    A KMSAN egy dinamikus hibadetektor, amelynek célja a nem inicializált értékek használatának megtalálása. A fordítói eszköztáron alapul, és meglehetősen hasonlít a felhasználói tér MemorySanitizer eszközéhez. Fontos megjegyzés, hogy a KMSAN-t nem produktív használatra szánják, mert drasztikusan növeli a kernel memória lábnyomát, és lelassítja az egész rendszert.
    (Dokumentáció, cikk)
  • A KCF integritási séma támogatása
  • Memóriaréteg-javítások
  • A modern rendszerekben a RAM több féle tulajdonságú chipre osztható, amelyek a hozzáférő CPU-tól függően gyorsabb vagy valamivel lassabb sebességgel érhetők el. A modern rendszerek még több RAM-szintet adnak hozzá. Ez azt jelenti, hogy az adatok egyik vagy másik csomóponthoz tartozó memóriaoldalra történő elhelyezése komolyan befolyásolhatja a teljesítményt. Ez a kiadás tartalmaz néhány fejlesztést a memóriakezelő alrendszerben. Az első egy új algoritmus, amely segít azonosítani, hogy mely memóriaoldalak a sűrűn használtak egy csomópontban. Így a rendszer a sűrűn használt (forró), és a ritkán használt (hideg) memóriaoldalakat a megfelelő csomópontokba tudja előléptetni, illetve átirányítani. A második változtatás a felhasználói tér számára is elérhetővé teszi a rétegzési (tiering) információkat, és lehetővé teszi a felhasználók számára azok konfigurálását.
    (cikk)
  • BPF funkciók: pánik segédprogram, PKCS#7 aláírásellenőrzés, memória allokátor. A szokásos módon ez a kiadás is tartalmaz néhány BPF funkciót:
    • Mivel néhány típusú BPF program képes csatolni a kprobe és a fentry programokat, ismeretlen környezetben is futhatnak, ahol a sima kmalloc() hívása nem biztos, hogy biztonságos. Emiatt egy kis memóriapuffer van lefoglalva, hogy ilyen kontextusokban is lehetővé tegye a kiosztást
      (cikk)
    • Néhány hibakeresési technika memóriadumpot igényel, ez a kiadás lehetővé teszi a pánik kiváltását az eBPF-ből, hogy a memóriaállapot a megfelelő pillanatban dumpolható legyen.
      (cikk)
    • Vannak más funkciók is, mint például a PKCS#7 aláírás-ellenőrzési funkciók vagy egy felhasználó-tér-kiadó gyűrűs puffertérkép típus.
  • Maple trees, egy hatékonyabb fastruktúrájú-adatszerkezet
    A Maple trees egy RCU zárolásmentes munkavégzés (read-copy-update) tartomány alapú B-fa adatszerkezet, amelyet a modern processzorok gyorsítótárának hatékony használatára terveztek. A kernelben számos olyan hely van, ahol egy nem átfedő tartomány alapú fa előnyös lenne, különösen egy egyszerű interfésszel rendelkező megvalósítással. A teljesítményt javító, más adatszerkezetekkel ellátott rbtree vagy a nem átfedő tartományok követésére szolgáló intervallumfa felhasználói profitálnak a legtöbbet a Maple trees-ből.
    (cikk)
  • A folyamat számára engedélyezett, hogy önkéntes módon vonják össze a memóriát egy Transparent Hugepage-be
    Ez a fejlesztés egy olyan mechanizmust biztosít a felhasználói térben futó program számára, amely folyamat-kontextuson belül előidézheti a memória alkalmas tartományainak Transparent Hugepage, nagyméretű memórialapokká való összevonását, lehetővé téve ezzel a felhasználók számára, hogy saját költségükön szigorúbban ellenőrizzék saját Hugepage-használati politikájukat. A javasolt interfész egy új madvise(2) módot ad hozzá, a MADV_COLLAPSE-t, és kihasználja az új process_madvise(2) hívást.
    (cikk)
  • PSI-fejlesztések: csoportonkénti PSI, IRQ/SoftIRQ PSI, optimalizálás
    A Pressure Stall Information részletes képet ad a rendszer aktuális erőforrás-használatáról. Ez a fejlesztés tartalmazza az opcionális per-cgroup PSI elszámolás (némi overhead árán biztosított) támogatását, egy új PSI_IRQ to IRQ/SOFTIRQ nyomásértéket, és néhány optimalizálást.
    (Dokumentáció)
  • Btrfs teljesítmény fejelsztések
    Ez a kiadás tartalmaz néhány olyan változtatást, amelyek sokkal gyorsabbá teszik a Btrfs-t, amikor aszinkron pufferelt I/O-t végez az io_uring használatával. Továbbá javult a teljesítmény a normál pufferelt I/O során is, drasztikusan gyorsabbak lettek az lseek és a FIEMAP (extent mapping information) kasználata is. Előkészületek kezdődtek egy külön blokkcsoport-fa implementálására, amely felgyorsítja a mountolási időket, javított inode naplózás (+25%-kal gyorsabb dbench teljesítmény, -21% maximális késleltetés).

A Linux 6.1 funkciólistájában részletesebb áttekintést kaphat a kernel ezen verziójának összes változásáról.

  • A Linux 6.1 kiírja azt a CPU-magot, ahol szegmentációs hiba lép fel. Ha a Linux rendszergazdák úgy találják, hogy a szegmentációs hibák folyamatosan ugyanazokon a CPU-kon/magokon fordulnak elő, az egy hibás processzor jele lehet.
  • Az AMD IOMMU v2 laptábla támogatás beépítése az AMD vIOMMU hardveres IOMMU virtualizáció részeként az EPYC 7002 „Rome” és újabb processzorok esetében.
  • AMD CPU cache-to-cache és memóriajelentés és teljesítményadatok az újabb AMD processzorokkal és LbrExtV2 támogatás a Zen 4 CPU-khoz.
  • Az AMD Platform Management Framework (PMF) összevonásra került a jobb hő-, energiaés zajkezelés érdekében a következő generációs AMD Ryzen eszközökkel.
  • Az új ARM SoC-k és különböző új ARM eszközök támogatása.
  • Gyorsabb Intel memóriahiba dekódolás.
  • AMD P-State javítások és s2idle javítások az AMD Rembrandt laptopokhoz.
  • ARM-támogatás a Spectre-BHB mitigáció futás közbeni letiltásához a nagy teljesítményköltségek miatt.
  • Az Intel Meteor Lake fejlesztések további bevezetése.
  • Javított Intel GPU firmware kezelés.
  • Különböző Intel Arc Graphics DG2/Alchemist fejlesztések.
  • AMDGPU gang submit támogatás, amelyre a RADV Vulkan meghajtónak van szüksége a megfelelő mesh shader támogatáshoz.
  • Mode2 reset támogatás az RX 6000 sorozatú RDNA2 GPU-k számára.
  • Az AMD RDNA3 GPU-k támogatását lehetővé tevő fejlesztések bevezetése.
  • A RISC-V alapértelmezett kernelkonfigurációja lehetővé teszi a különböző CD-ROM képformátumok használatát. Nem mintha valószínű, hogy a RISC-V rendszerével fizikai CD-meghajtót fog kezelni, de a telepítési ISO-lemezképek és egyéb adathordozók lehetnek ISO9600 / Joliet / ZISOFS fájlrendszer formátumban is.
  • FSCache-alapú megosztott tartománytámogatás az EROFS számára, a kezdeti cél a konténer felhasználási esetek.
  • EXT4 javítások és teljesítményoptimalizálás.
  • A statx() támogatása a közvetlen I/O igazítás részleteinek jelentésére.
  • A Logitech HID++ nagy felbontású görgetés támogatásának automatikus felismerése és a HID++ engedélyezésének megkísérlése minden Logitech Bluetooth eszköz esetében.
  • Hangtámogatási kiegészítések a Sound Open Firmware kódhoz hozzáadott AMD Rembrandt, az új AMD "Pink Sardine" audio társprocesszor támogatása és az új Apple MCA SoC illesztőprogram az új Apple Silicon eszközök hangtámogatásához.
  • WiFi Extremely High Throughput (EHT) és Multi-Link Operation (MLO) előkészületek a WiFi 802.11be és a WiFi 7 számára.
  • Az Intel Habana Labs Gaudi2 engedélyezésének folytatása a következő generációs AI gyorsítóhoz.
  • Bemeneti vezérlő az IBM Operation Panel számára.
  • Hozzáadásra került egy PINE64 PinePhone (Pro) billentyűzet-illesztőprogram a Linuxon történő bevitelhez.
  • Sok más Linux laptopos fejlesztés.
  • Intel Meteor Lake Thunderbolt támogatás.
  • USB4 végponttól végpontig tartó áramlásvezérlés támogatása a Linux kernel Thunderbolt hálózati vezérlőjével.
  • Az „olcsó klón” Nintendo kontrollerek jobb kezelése.
  • Új médiavezérlők és két meglévő vezérlő került ki a stagingből.
  • Különböző hardverfelügyeleti illesztőprogram kiegészítések.
  • A Xen mostantól támogatja a grant-alapú VirtIO-t x86_64 esetén.
  • VirtIO blokk „biztonságos törlés” támogatása, valamint a vDPA funkció provisioning támogatása.
  • Gyorsabb fájlmegosztás a host és a vendég VM-ek között a 9P protokollt használók számára a jelentős 9P VirtIO optimalizációnak köszönhetően.
  • A Linux 6.1 alapértelmezés szerint figyelmeztet a W+X kernel leképezésekre, és egy jövőbeli kernel kiadásban megtiltja, hogy ilyen leképezések egyáltalán létrejöjjenek.
  • EFI-vel kapcsolatos fejlesztések a bizalmas (trusted) számítástechnika támogatására.
  • Retpolines hardaning, hogy minden feltétel nélküli ugrás után INT3 legyen kiadva.
  • Megkezdték az SELinux a futásidejű letiltás támogatásának kivezetését.
  • Az RNG és a kriptokód javításai.
  • Futásidejű figyelmeztetések a cross-field memcpy()-re, amellyel az elmúlt években a kernel számára az összes memcpy-alapú puffer túlcsordulást elkapta volna.
  • További kódtisztítások a PREEMPT_RT beolvasztása előtt. A valós idejű / PREEMPT_RT munka azonban még nem került a fővonalba beolvasztásra, és még mindig a printk átdolgozása tartja fel.
  • Általános EFI tömörített boot támogatás.
  • A nagy sebességű soros / TTY over IEEE-1394 Firewire meghajtó eltávolítása.
  • A Linux 6.1 nem támogatja már a régi a.out kód futtatását.
  • A régi DECnet hálózati kód eltávolítása.
  • Az MGLRU beolvasztásra került a Linux kernel lapvisszavételi kódjának átdolgozására, ami jobb felhasználói élményt eredményez, különösen a korlátozott RAM-kapacitású Linux-rendszerek esetében. A benchmark eredmények ígéretesnek tűnnek, és ezt a funkciót már beillesztették a Chrome OS és az Android eszközökbe.
  • Az IBM POWER/PowerPC kód 64 bites KFENCE-vel, rendszerhívás-wrapperek és csak a végrehajtást támogató memóriával vértezték fel
  • A LoongArch CPU port TLB/cache kód átdolgozást, QSpinLock támogatást, EFI bootot, perf események támogatását, Kexec kezelést, eBPF JIT támogatást és számos más funkciót kínál ehhez a kínai CPU architektúrához.
  • A Linux 6.1 elhagyja a BF16 támogatást a Cortex-A510 processzorok számára egy hardveres probléma miatt, amelyet egyébként nem lehet Linuxon megkerülni.
  • Számos egyéb hardvertámogatási kiegészítés.

Ahogy Linus írta:

So here we are, a week late, but last week was nice and slow, and I'm
much happier about the state of 6.1 than I was a couple of weeks ago
when things didn't seem to be slowing down.

Of course, that means that now we have the merge window from hell,
just before the holidays, with me having some pre-holiday travel
coming up too. So while delaying things for a week was the right thing
to do, it does make the timing for the 6.2 merge window awkward.

That said, I'm happy to report that people seem to have taken that to
heart, and I already have two dozen pull requests pending for tomorrow
in my inbox. And hopefully I'll get another batch overnight, so that I
can try to really get as much of the merge window done with early. We
all want to have a calm holiday season.

And because of that "we all want to have a calm holiday season", I
want to re-iterate that I'm going to be pretty strict about the merge
window rules. The rules are that the pull requests sent to me during
the merge window should have been ready _before_ the merge window, and
have seen some time in linux-next. No last-minute batch of
experimental new development that hasn't been seen by our test
automation.

So to make my life easier, I will just drop any pull requests that
come in late, or that look like they haven't been in linux-next. This
time of year, we're all going to be much happier to deal with the
stress of the season _without_ having to deal with the stress of any
late development. So if you already realize that work hasn't been in
linux-next, let's just all agree to not even send me the pull request
at all, and we'll all be happy with the calm end-of-the-year season.
Ok?

Anyway,  I think I've harped on that enough, let's just enjoy this
release and the upcoming festivities. As can be seen from the shortlog
below, last week really was very quiet, and it's mainly a few
last-minute fixes mostly dominated by drivers (networking in
particular, but there's some media, HID and GPU noise in there too).

              Linus

Azaz:

Szóval itt vagyunk, egy hét késéssel, de a múlt hét szépen lassan telt, és én sokkal boldogabb vagyok a 6.1 állapotával kapcsolatban, mint pár héttel ezelőtt, amikor a problémák nem csitultak.

Persze ez azt jelenti, hogy most nyílik pokolbeli egyesítési ablak, pont így az ünnepek előtt. Én utazni fogok az ünnepek előtt. Szóval, bár a dolgok egy hetes késleltetése jó döntés volt, de ez furcsává tette a 6.2-es beolvasztási ablak időzítését.

Ennek ellenére örömmel jelentem, hogy ezt az emberek úgy tűnik nem vették a lelkükre, és máris a postaládábmban két tucat beolvasztási kérelem várakozik holnapra. Remélhetőleg kapok egy másik adagot az éjszaka folyamán, így én minél hamarabb végezi tudok az egyesítési ablak nagy részével. Mi mindannyian nyugodt ünnepeket szeretnénk.

És mivel „mindannyian nyugodt ünnepeket akarunk”, ezért... szeretném megismételni, hogy elég szigorúan fogok eljárni az egyesítéssel kapcsolatban. A szabályok szerint a hozzám küldött pull requestek a következő beolvasztási ablak időszakban már „A beolvasztási ablak előtt” készen kell lenniük, és már egy időt töltöttek a linux-next forrásfában. Nem lehet az utolsó pillanatban küldött
kísérleti új fejlesztés, amit még nem látott a tesztelőnk.

Szóval, hogy megkönnyítsem az életemet, minden olyan pull-kérelmet, amelyik ami későn érkezik, vagy ami úgy néz ki, hogy nem volt a linux-nextben. A az évnek ebben az időszakában mindannyian sokkal boldogabbak leszünk, ha foglalkozhatunk a az évszak stresszével anélkül, hogy késői fejlesztések bármilyen egyéb stresszével kellene foglalkoznunk. Tehát ha már rájöttél, hogy az új fejlesztés nem járt a linux-next fejlesztői ágban, akkor egyezzünk meg abban, hogy egyáltalán nem is küldik el nekem a pull requestet - és mindannyian boldogok leszünk a nyugodt év végi szezonnal.
Oké?

Mindegy, azt hiszem, eleget mondtam, élvezzük a ezt a kiadást és a közelgő ünnepeket. Amint az alábbi naplóból is kiderül, a múlt hét tényleg nagyon csendes volt, és ez főleg néhány utolsó pillanatban elvégzett javításokat tartalmaz, amelyek főleg az illesztőprogramok (hálózati, de van némi média, HID és GPU mozholodás is).

              Linus

(kép)

(forrás, forrás)