Két hónapos fejlesztés után Linus Torvalds bemutatta a Linux 5.14 kernelének kiadását. A legszembetűnőbb változások között szerepel: az új rendszerhívások, mint a quotactl_fd() és memfd_secret(), az ide és raw meghajtók eltávolítása, az új prioritás-vezérlő a cgroupokhoz, a feladatütemezés SCHED_CORE módja és az infrastruktúra a validált BPF programok indítóihoz.
Az új verzió 15883 javítást tartalmaz 2002 fejlesztőtől, a patch mérete 69 MB (a változtatások 12580 fájlt érintenek, 861501 kódsort adtak hozzá, 321654 sort töröltek). A 5.14-es verzióban a becslések szerint a benyújtott változtatások körülbelül 47%-a eszközmeghajtókhoz kapcsolódik, körülbelül 14%-a hardverarchitektúrákra specifikus kódfrissítésekhez, 13%-a a hálózati stackhez, 3%-a fájlrendszerekhez, és 3%-a a kernel belső alrendszereihez.
Főbb újítások:
- Lemezszubszisztéma, bemenet/kipontozás és fájlrendszerek
- A cgroup számára megvalósították az rq-qos prioritás-vezérlőt, amely képes kezelni a blokkeszközökhöz, a cgroupok tagjai által generált kérések feldolgozásának prioritását. Az új prioritás-vezérlőt hozzáadták a mq-deadline input/output ütemezőhöz.
- Az ext4 fájlrendszerben új ioctl parancsot, az EXT4_IOC_CHECKPOINT-ot vezettek be, amely kényszerítve kiírja a lemezre az összes folyamatban lévő tranzakciót a naplókból és a hozzájuk tartozó pufferből, valamint újraírja a napló által használt területet a tárolóba. A változtatás az információs kiszivárgás megelőzésére irányuló kezdeményezés keretében készült.
- A Btrfs teljesítményoptimalizálásokat kapott: az fsync végrehajtása során a felesleges naplózás eltávolításával a kiterjesztett attribútumokkal végzett intenzív műveletek teljesítménye akár 17%-kal is növekedett. Ezenkívül a kiterjedéseket nem érintő levágási műveletek során leállították a teljes szinkronizálás végrehajtását, ami 12%-kal csökkentette a művelet végrehajtásának idejét. A sysfs-ben hozzáadtak egy beállítást a fájlrendszer ellenőrzésekor a bemeneti/xki kimeneti sebesség korlátozására. Hozzáadták az ioctl hívásokat a méretváltoztatás és az eszköz eltávolításának műveleteinek visszavonására.
- Az XFS újratervezte a puffertárazási megoldását, amelyet most memóriaoldalak csoportos allokálására alakítottak át. A cache teljesítménye javult.
- Az F2FS-hez hozzáadva egy olvasási csak üzemmód opció, valamint egy tömörített blokkok caching üzemmódban (compress_cache) valósult meg a véletlenszerű olvasás teljesítményének javítására. Megvalósult a memória tükrözésével történő fájltömörítés támogatása az mmap() művelet segítségével. Az egyes fájlok tömörítésének letiltására új nocompress mount opció került bevezetésre.
- Az exFAT meghajtóban munkálatok folytak a digitális fényképezőgépek bizonyos tárolókkal való kompatibilitásának javítása érdekében.
- Új rendszerhívás került bevezetésre: quotactl_fd(), amely lehetővé teszi a kvóták kezelését nem speciális eszköz fájlon keresztül, hanem a fájlrendszeren kapcsolódó fájlleíró megadásával.
- Az yádból eltávolításra kerültek a régi IDE interfészű blokk eszköz meghajtók, helyettük a libata alrendszer került bevezetésre.
- A kernelből eltávolításra került a raw drivert, amely nem pufferelt hozzáférést biztosított a blokk eszközökhöz a /dev/raw interfészen keresztül. Ez a funkcionalitás már régóta megvalósítható alkalmazásokon keresztül az O_DIRECT zászló segítségével.
- Memória és rendszerszolgáltatások
- A feladat ütemezőben egy új SCHED_CORE ütemezési mód valósult meg, amely lehetővé teszi annak kezelését, hogy mely folyamatok futhatnak együtt egy CPU magon. Minden egyes folyamatnak hozzárendelhetünk egy cookie azonosítót, amely meghatározza a bizalmi zónát a folyamatok között (például ugyanolyan felhasználóhoz vagy konténerhez való tartozás). A kód végrehajtásának megszervezésekor az ütemező biztosítani tudja, hogy egy CPU mag közös használata csak az azonos tulajdonosú folyamatok számára elérhető, ami felhasználható a Spectre típusú támadások blokkolására a bizalmas és nem megbízható feladatok egy szálban történő végrehajtásának megakadályozásával SMT (Hyper Threading) révén.
- A cgroup-hoz megvalósult a kill művelet támogatása, amely lehetővé teszi az összes csoporthoz tartozó folyamat együttes leállítását (SIGKILL küldésével), egy virtuális fájlba "1" írásával a cgroup.kill-en.
- Bővültek a válaszadás lehetőségei a megosztott zárolások („split lock”) észlelésével kapcsolatban, amelyek előfordulnak, amikor a rendszermemória nem megfelelően igazított adataihoz próbálnak hozzáférni, mivel az atomikus utasítás végrehajtása során az adatok átlépik a CPU két cache-sorát. Az ilyen zárolások jelentős teljesítménycsökkenést okoznak, ezért korábban lehetőség volt a zárolást okozó alkalmazás kényszerített leállítására. Az új kiadásban a „split_lock_detect=ratelimit:N” kernel parancssori paraméter került bevezetésre, amely lehetővé teszi egy általános rendszer szintű zárolási művelet intenzitásának másodpercenkénti korlátjának beállítását, amelynek túllépése után bármely, megosztott zárolást okozó folyamat 20 ms-ra kényszerített leállítást kap a leállítás helyett.
- A CFS (CFS sávszélesség-vezérlő) cgroup-vezérlőben, amely meghatározza, mennyi CPU-időt oszthatunk ki minden cgroup számára, lehetőség nyílik az időkorlátos korlátok létrehozására, így jobban szabályozhatjuk a késleltetésérzékeny terheléseket. Például, ha a cpu.cfs_quota_us értékét 50000-ra, a cpu.cfs_period_us értékét pedig 100000-ra állítjuk, akkor a folyamatcsoportoknak 100 ms-ként lehetőségük van 50 ms CPU-időt költeni.
- Bepillantást nyert az alapinfrastruktúra BPF programok betöltésére, amely a későbbiekben lehetővé teszi csak azokat a BPF programokat betölteni, amelyek megbízható digitális kulccsal vannak aláírva.
- Új FUTEX_LOCK_PI2 futex-művelet került hozzáadásra, amely monoton időzítőt használ a várakozási idő meghatározásához, figyelembe véve a rendszer alvásban töltött idejét.
- A RISC-V architektúra esetében megvalósult a nagy memóriablokkok (Transparent Huge-Pages) támogatása, valamint a KFENCE mechanizmus alkalmazásának lehetősége a memóriahasználat hibáinak észlelésére.
- A madvise() rendszerhívásba, amely eszközöket biztosít a folyamat memóriakezelésének optimalizálására, bekerültek a MADV_POPULATE_READ és MADV_POPULATE_WRITE kapcsolók, amelyek "page fault" generálására szolgálnak az összes memóriában lévő oldalra, amelyet írási vagy olvasási műveletekhez használnak, anélkül, hogy valójában végrehajtanák az olvasást vagy írást (prefault). A kapcsolók alkalmazása hasznos lehet a program futásidejének késleltetésének csökkentésére, mivel lehetővé teszi a "page fault" kezelő előzetes végrehajtását az összes nem kiosztott oldalon, anélkül, hogy megvárnák a tényleges elérésüket.
- A kunit egységtesztelő rendszerben hozzáadódott a tesztek QEMU környezetben való futtatásának támogatása.
- Új nyomkövetők lettek hozzáadva: az "osnoise" az interrupt kezelésből adódó késések nyomon követésére, és a "timerlat" a timer jelének felébresztésekor fellépő késések részletes információinak megjelenítésére.
- Virtualizáció és biztonság
- Hozzáadva a memfd_secret() rendszerhívás, amely lehetővé teszi egy privát memória rész kialakítását egy elszigetelt címtartományban, amely csak a tulajdonos folyamat számára látható, más folyamatok számára nem tükröződik, és közvetlenül nem elérhető a mag számára.
- A seccomp rendszerhívás szűrőrendszerében, amikor a blokkoló kezelőket felhasználói térbe helyezik, lehetőség nyílik egy atomikus művelet használatára, amely egy fájl leíró létrehozását és annak visszaadását biztosítja az elszigetelt feladathoz a rendszerhívás feldolgozásakor. A javasolt művelet megoldja a felhasználói térbeli kezelő megszakításának problémáját a jel érkezésekor.
- Új mechanizmus került hozzáadásra a felhasználói azonosítók névtérében a forráskorlátozással kapcsolatos szabályok kezelésére, amely különálló rlimit számlálókat köt a felhasználóhoz a 'user namespace' keretében. A változtatás megoldja a közös forrásszámlálók alkalmazásának problémáját, amikor egy felhasználó különböző konténerekben futtat folyamatokat.
- A hypervisorban KVM ARM64 rendszerekhez hozzáadva a MTE (MemTag, Memory Tagging Extension) kiterjesztés használatának lehetősége a vendég rendszerekben, amely lehetővé teszi a címkék hozzárendelését minden egyes memóriafoglalási művelethez és a pointerek használatának érvényességének ellenőrzését az olyan sebezhetőségek kiaknázásának megakadályozása érdekében, amelyek az már felszabadított memória blokkok elérésével, puffer-túlcsordulásokkal, inicializálás előtti elérésekkel és az aktuális kontextuson kívüli használattal kapcsolatosak.
- Az ARM64 platform által biztosított mutatóhitelesítési eszközök mostantól külön beállíthatók a kernél és a felhasználói tér számára. A technológia lehetővé teszi, hogy ARM64-specifikus utasításokat használjunk a visszatérési címek ellenőrzésére digitális aláírások segítségével, amelyek a mutató legfelső, nem használt bitjeiben tárolódnak.
- A User-mode Linuxban hozzáadva lett a PCI-eszközökhez való illesztőprogramok használatának támogatása a virtuális PCI buszon, amelyet a PCI-over-virtio illesztőprogram valósít meg.
- X86 rendszerek számára hozzáadva lett a virtio-iommu paravirtualizált eszköz támogatása, amely lehetővé teszi az IOMMU-kérdések, mint például az ATTACH, DETACH, MAP és UNMAP, további virtuális szállítási réteg nélkül történő kezelést.
- Intel CPU-k esetén, kezdve a Skylake családtól egészen a Coffee Lake-ig, alapértelmezés szerint le van tiltva az Intel TSX (Transactional Synchronization Extensions) kiterjesztések használata, amelyek az összetett alkalmazások teljesítményének növelésére szolgáló eszközöket biztosítanak a felesleges szinkronizálási műveletek dinamikus eltávolításával. A kiterjesztéseket a Zombieload támadások lehetősége miatt tiltották le, amelyek a TAA (TSX Asynchronous Abort) működése közben fellépő kívülről származó információszivárgást manipulálják.
- Hálózati alrendszer
- Folyamatban van az MPTCP (MultiPath TCP) integrálása a kernelbe, a TCP protokoll kiterjesztése a TCP-kapcsolatok működésének megszervezésére, lehetővé téve a csomagok egyidejű szállítását különböző útvonalakon, különböző hálózati interfészeken keresztül, amelyek eltérőek. IP-címekAz új kiadásban bevezetésre került egy mechanizmus, amely lehetővé teszi a saját forgalomhashing politikák megadását IPv4 és IPv6 esetében (multipath hash policy), amely lehetővé teszi, hogy a felhasználói térből meghatározzuk, hogy a csomagokban, beleértve az enkapszuláltakat is, mely mezők kerüljenek felhasználásra a hash kiszámításakor, amely meghatározza a csomag útvonalát.
- A virtio virtuális szállítóba hozzáadva lett a SOCK_SEQPACKET socketek támogatása (sorrendben és megbízhatóan átadott datagramok).
- A SO_REUSEPORT socket mechanizmus kibővült, amely lehetővé teszi, hogy egyszerre több figyelő socket csatlakozzon egy porthoz a kapcsolatok fogadására, a beérkező kérések egyidejű elosztásával az összes csatlakoztatott SO_REUSEPORT socket között, ez megkönnyíti a több szálú szerveralkalmazások létrehozását. Az új verzióban eszközök kerültek bevezetésre, amelyek lehetővé teszik, hogy a vezérlés átkerüljön egy másik sockethez abban az esetben, ha a kérés feldolgozása közben az eredetileg kiválasztott socket hibát észlel (ez megoldja a különböző kapcsolatok elvesztésének problémáját a szolgáltatások újraindításakor).
- Hardver
- Az amdgpu meghajtóban implementálták az új AMD Radeon RX 6000 GPU sorozat támogatását, amelyek kódnevei „Beige Goby” (Navi 24) és „Yellow Carp”, valamint javították az Aldebaran GPU (gfx90a) és Van Gogh APU támogatását. A több eDP panel egyidejű működésének lehetősége is hozzáadódott. A Renoir APU esetében támogatható az elérhető pufferek titkosított módban a videomemóriában (TMZ, Trusted Memory Zone). Hozzáadta a grafikus kártyák forró kihúzásának támogatását (hot-unplug). Az RX 6000 GPU-k (Navi 2x) és régebbi AMD GPU-k számára alapértelmezés szerint engedélyezve van az ASPM (Active State Power Management) energiatakarékos mechanizmus támogatása, amelyet korábban csak a Navi 1x, Vega és Polaris GPU-k esetében aktiváltak.
- Az AMD chipjeihez hozzáadták a megosztott virtuális memória (SVM, shared virtual memory) támogatását a HMM (Heterogeneous memory management) alrendszer alapjául, amely lehetővé teszi a memóriavezérlő egységgel (MMU, memory management unit) rendelkező eszközök főmemóriához való hozzáférését. A HMM segítségével közös címzési teret lehet létrehozni a GPU és a CPU között, amelyben a GPU a folyamat főmemóriájához hozzáférhet.
- Hozzáadták az AMD Smart Shift technológiájának kezdeti támogatását, amely dinamikusan módosítja a CPU és GPU energiafogyasztási paramétereit az AMD chipsettel és videokártyával rendelkező laptopokban a teljesítmény fokozása érdekében játékok, videószerkesztés és 3D-renderelés során.
- Az Intel i915 meghajtóban aktiválták az Intel Alderlake P chipek támogatását.
- Hozzáadva a drm/hyperv meghajtót a Hyper-V virtuális grafikus adapterhez.
- Hozzáadva a Raspberry Pi 400 integrált számítógép támogatása.
- Hozzáadva a dell-wmi-privacy meghajtó, amely támogatja a Dell laptopokban található kamera- és mikrofonengedélyező hardverkapcsolókat.
- A Lenovo laptopokhoz WMI interfészt adtak hozzá a BIOS paraméterek sysfs /sys/class/firmware-attributes/ módosításához.
- Bővítették az USB4 interfésszel rendelkező eszközök támogatását.
- Hozzátették a hangkártyák és kodekek AmLogic SM1 TOACODEC, Intel AlderLake-M, NXP i.MX8, NXP TFA1, TDF9897, Rockchip RK817, Qualcomm Quinary MI2 és Texas Instruments TAS2505 támogatását. Javították a hang támogatását a HP és ASUS laptopoknál. Hozzáadták a késleltetés csökkentésére szolgáló javításokat a USB interfésszel rendelkező eszközök hanglejátszási késleltetésének csökkentésére.
Forrás: opennet.ru
