Linux kernel 5.14

Linux kernel 5.14

Két hónap fejlesztés után Linus Torvalds bemutatott magyar kernel kiadás Linux 5.14. A legfontosabb változások közé tartoznak: az új rendszerhívások, a quotactl_fd() és a memfd_secret(), az ide és raw meghajtók eltávolítása, az új I/O prioritásvezérlő a cgroup számára, a SCHED_CORE feladatütemezési mód, valamint az infrastruktúra a hitelesített BPF-programok indítóinak létrehozásához.

Az új verzió 15883 javítást tartalmaz 2002 fejlesztőtől, a javítócsomag mérete 69 MB (a változtatások 12580 fájlt érintettek, 861501 kódsor került hozzáadásra, 321654 kódsor eltávolításra került). A 5.14-es verzióban bemutatott változások körülbelül 47%-a az eszközillesztőkhöz kapcsolódik, körülbelül 14% a hardverarchitektúrákhoz specifikus kódfrissítésekhez, 13% a hálózati veremhez, 3% a fájlrendszerekhez, és 3% a kernel belső rendszereihez.

Fő újdonságok:

  • lemez alrendszer, I/O és fájlrendszerek:
    • cgroup számára megvalósították új I/O prioritásvezérlő — rq-qos, amely kezelheti a blokkeszközökhez irányuló kérések feldolgozási prioritását a cgroup részvevői által generáltakban. Az új prioritásvezérlő támogatása hozzáadva az mq-deadline I/O ütemezőhöz;
    • az ext4 fájlrendszerben megvalósítva új ioctl-parancs, az EXT4_IOC_CHECKPOINT, amely kényszeríti az összes függő tranzakció és a hozzájuk kapcsolódó pufferek leírását a lemezre, valamint újraírja a felhasználás alatt lévő naplóterületet a tárolóra. A változtatás célja az információk kiszivárgásának megakadályozása a fájlrendszerekből;
    • a Btrfs-ben bevezetésre kerültek teljesítményoptimalizálás: a fölösleges naplózás eltávolításával a kiterjesztett attribútumok fsync végrehajtása során a kiterjesztett attribútumok intenzív műveletei akár 17%-kal is megnövelték a teljesítményt. Ezen kívül a szegmenseket nem érintő vágási műveleteknél letiltották a teljes szinkronizálás végrehajtását, csökkentve a művelet végrehajtási idejét 12%-kal. A sysfs-hez hozzáadtak egy beállítást a fájlrendszer ellenőrzése során az I/O átbocsátóképesség korlátozására. ioctl-hívásokat is bevezettek a méretezési műveletek és eszközeltávolítások lemondására;
    • az XFS-ben újra lett tervezve a puffertárolók végrehajtásának új megközelítése, amelyet szegmentált memóriaoldal-elosztásra állítottak át. A cache működésének hatékonysága jelentősen nőtt;
    • Az F2FS fájlrendszerhez hozzáadódott a csak olvasási mód, és megvalósult a tömörített blokkok gyorsítótárazási módja (compress_cache) a véletlenszerű olvasás teljesítményének növelése érdekében. A mmap() művelettel a memóriába tükrözött fájlok tömörítésének támogatása is megvalósult. A fájlok tömörítésének maszk szerinti egyedi letiltására új nocompress csatolási opció kerül bevezetésre;
    • Az exFAT meghajtóval zajlott a kompatibilitás javítása bizonyos digitális fényképezőgépek tárolóival;
    • Hozzáadva a rendszerhívás quotactl_fd(), amely lehetővé teszi a kvóták kezelését nem speciális eszközfájlokon keresztül, hanem a fájlrendszerhez tartozó fájldeszkóz jelzésével, amelyhez a kvóta alkalmazva van;
    • Az kernelből eltávolításra kerültek a régi IDE interfésszel rendelkező blokkmeghajtók, amelyeket már régóta felváltott a libata alrendszer. A régi eszközök támogatása teljes mértékben megmarad, a változások csupán a régi meghajtók használatának lehetőségét érintik, amelyek esetében a meghajtók nevei \/dev\/hd* helyett \/dev\/sd*;
    • A kernelből eltávolításra került a "raw" meghajtó, amely a blokkmeghajtókhoz való puffer nélküli hozzáférést biztosít a \/dev\/raw interfészen keresztül. Ez a funkció már régóta megvalósul az alkalmazásokban az O_DIRECT flag segítségével;
  • A memória és a rendszer szolgáltatások:
    • A feladatütemezőben egy új ütemezési mód valósult meg SCHED_CORE, amely lehetővé teszi a folyamatok egy CPU magon belüli együttes végrehajtásának irányítását. Minden folyamatnak kiosztható egy süti-azonosító, amely meghatározza a folyamatok közötti bizalmi zónát (például egy felhasználó vagy konténer tulajdonjoga). A kód végrehajtásának megszervezésekor az ütemező biztosíthatja egy CPU mag közös használatát csak azoknak a folyamatoknak a számára, amelyek egyetlen tulajdonoshoz kapcsolódnak, ami használható a Spectre osztályú támadások blokkolására a megbízhatatlan és megbízható feladatok egyidejű végrehajtásának megakadályozásával SMT (Hyper Threading) szálon;
    • A cgroup mechanizmushoz megvalósításra került a kill művelet támogatása, amely lehetővé teszi az összes csoporthoz kötött folyamat egyidejű leállítását (SIGKILL küldését) a virtuális cgroup.kill fájlba 1-es írásával;
    • Bővült a választható lehetőségek köre a "split lock" (megszakított zár) észlelésére, amely az igazságtalanul elérhetetlen adatokhoz való hozzáféréskor fordul elő a memóriában, amikor az atomikus utasítás végrehajtása során az adatok átnyúlnak a CPU két cache vonalán. Az ilyen zárak jelentős teljesítménycsökkenést okoznak, ezért korábban lehetőség volt az ezt okozó alkalmazás kényszerített leállítására. Az új kiadásban bevezetésre került egy kernel parancssori paraméter, a "split_lock_detect=ratelimit:N", amely lehetővé teszi a blokkolásos műveletek másodpercenkénti általános rendszerhatárának meghatározását, amelynek túllépése esetén bármely folyamat, amely megszakított zárat okoz, nem véglegesen leáll, hanem 20 ms-ra kényszerítve megáll;
    • A CFS (CFS sávszélesség-vezérlő) cgroup-vezérlőjében, amely meghatározza, hogy mennyi CPU időt lehet egyes cgroupok számára meghatározni, lehetőség nyílt olyan korlátok beállítására, amelyek adott időintervallumra korlátozódnak, ezáltal jobban szabályozhatóak a késleltetésérzékeny terhelések. Például, ha a cpu.cfs_quota_us értéke 50000-ra, míg a cpu.cfs_period_us értéke 100000-ra van beállítva, akkor a folyamatcsoport minden 100 ms-ban 50 ms CPU időt használhat el;
    • hozzáadva lett A BPF programok betöltésének kezdeti infrastruktúrája, amely lehetővé teszi, hogy csak olyan BPF programokat töltsünk be, amelyek megbízható digitális kulccsal vannak aláírva;
    • Új futex-művelet, a FUTEX_LOCK_PI2 került bevezetésre, amely monoton időzítőt használ a rendszer alvó állapotában eltöltött időt figyelembe vevő időtúllépés számítására;
    • RISC-V architektúra számára megvalósult a nagy memóriablokkok (Transparent Huge-Pages) támogatása és a KFENCE meghibásodások észlelésére a memóriahasználat során;
    • a madvise() rendszerhívásba, amelyeszközöket biztosít a folyamat memória kezelésének optimalizálására, hozzáadva a MADV_POPULATE_READ és MADV_POPULATE_WRITE flagok bevezetése, amelyek "page fault"-ot generálnak az összes memóriablokkon, amelyek írási vagy olvasási műveletekhez vannak hozzárendelve, anélkül, hogy a tényleges olvasásra vagy írásra sor kerüljön (prefault). A flagok használata hasznos lehet a program végrehajtása során fellépő késleltetések csökkentésére, mivel előre végrehajtják a "page fault" kezelőt egyszerre az összes nem allokált blokknál, anélkül, hogy valóban hozzáférnének hozzájuk;
    • a unit-tesztelő rendszerben kunit hozzáadva lett a tesztek futtatásának támogatása QEMU környezetben;
    • új nyomkövetők hozzáadva: "osnoise" az alkalmazásokban keletkező késleltetések nyomon követésére, amelyek az interruptok kezeléséből adódnak, és a "timerlat" a késleltetések részletes információinak kiírására az időzítő jelének felébresztésekor;
  • virtualizáció és biztonság:
    • hozzáadva a rendszerhívás memfd_secret(), amely lehetővé teszi egy privát memória tér létrehozását elkülönített címtartományban, amelyet csak a birtokló folyamat lát, a többi folyamat számára nem tükröződik és közvetlenül nem elérhető a kernel számára;
    • a seccomp rendszerhívás szűrő rendszerben a blokkoló kezelők felhasználói térbe való kiemelése egy atomikus művelet használatának lehetőségét biztosítja, amely létrehozza az izolált feladat számára a fájlkezelőt és visszatéríti azt a rendszerhívás feldolgozásakor. A javasolt művelet megoldja a problémát a blokkoló kezelők felhasználói térben történt megszakítását a jel érkezésekor;
    • hozzáadva új mechanizmus az erőforrás-korlátozások kezelésére a felhasználói azonosítók névtartományában, amely külön számlálókat összekapcsol a felhasználóhoz a "user namespace"-ben. Ez a módosítás megoldja a közös erőforrás-számlálók alkalmazásával kapcsolatos problémát különböző konténerekben több folyamat indításakor egy felhasználó által;
    • az ARM64 rendszerek KVM hypervisorában a vendég rendszerekben a MTE (MemTag, Memory Tagging Extension) kiterjesztés használatának lehetősége hozzáadva, amely lehetővé teszi, hogy tageket rögzítsenek minden memóriafoglalási művelethez és végezzenek ellenőrzést a mutatók helyes használatának megállapítására, hogy megakadályozzák a sebezhetőségek kihasználását, amelyek a már felszabadított memória blokkokhoz való hozzáférésből, puffertúltöltésből, inicializálás előtti hozzáférésekből és a jelenlegi kontextustól való eltérésből adódnak;
    • az ARM64 platform által biztosított mutató-igazoló eszközök (Pointer Authentication) most külön konfigurálhatók a kernel és a felhasználói tér számára. A technológia lehetővé teszi a speciális ARM64 utasítások használatát 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;
    • User-mode Linuxban hozzáadva lett a PCI-eszközökhöz tartozó illesztőprogramok használatának támogatása virtuális PCI busz segítségével, amelyet a PCI-over-virtio illesztőprogram valósít meg;
    • x86 rendszerekhez hozzáadva a virtio-iommu paravirtualizált eszköz támogatása, amely lehetővé teszi az IOMMU-kérések, például az ATTACH, DETACH, MAP és UNMAP küldését a virtio transport felett anélkül, hogy a memóriaoldalak tábláit kellene emulálni;
    • Intel CPU-k, a Skylake családtól a Coffee Lake-ig, alapértelmezés szerint le van tiltva az Intel TSX (Transactional Synchronization Extensions) használata, amely eszközöket biztosít a párhuzamos alkalmazások teljesítményének növelésére a felesleges szinkronizációs műveletek dinamikus eltávolításával. A kiterjesztések letiltása a támadások lehetősége miatt Zombieload, amelyek manipulálják az adatok szivárgását a külső csatornákon, amely a műveletek aszinkron megszakítási mechanizmusának működése közben merül fel (TAA, TSX Asynchronous Abort);
  • hálózati alrendszer:
    • a MPTCP (MultiPath TCP) kernelbe való integrálás folytatódik, a TCP protokoll kiterjesztése, amely lehetővé teszi a TCP-kapcsolat működését, több útvonalon történő csomagátvitellel különböző hálózati interfészeken keresztül, különböző IP-címekhez rendelve. Az új kiadásban hozzáadva mechanizmus a saját forgalom hash-politikájának meghatározására IPv4 és IPv6 esetén (multipath hash policy), amely lehetővé teszi a felhasználói térből történő meghatározást, hogy a csomagokban, beleértve az encapsuláltakat is, mely mezők kerüljenek felhasználásra a hash számításához, amely meghatározza a csomag útvonalának választását;
    • a virtio virtuális transporthoz socket-támogatás került hozzáadásra SOCK_SEQPACKET (sorrendben és megbízhatóan adatok továbbítása);
    • a SO_REUSEPORT socket mechanizmusának képességei bővültek, amely lehetővé teszi, hogy több figyelő socket csatlakozzon egy portra, és oszd el a bejövő kapcsolatokat, egyszerre az összes SO_REUSEPORT sockethez csatlakozó socket között, ami megkönnyíti a több szálú szerveralkalmazások létrehozását. Az új verzióban hozzáadva az irányítás átadásának eszközei egy másik sockethez, ha az eredetileg kiválasztott socket hibát észlel a kérés feldolgozása során (megoldja a meglévő kapcsolatok elvesztésének problémáját a szolgáltatások újraindításakor);
  • hardver:
    • az amdgpu illesztőprogramban megvalósítva támogatás az AMD Radeon RX 6000 GPU új sorozataihoz, amelyeket a «Beige Goby» (Navi 24) és a «Yellow Carp» kódnevével fejlesztenek, valamint javították az Aldebaran (gfx90a) és a Van Gogh APU GPU támogatottságát. Megvalósították a több eDP panel egyidejű működésének lehetőségét. A Renoir APU esetében támogatást nyújtanak a videomemóriában található titkosított pufferekhez (TMZ, Trusted Memory Zone). Hozzáadták a grafikus kártyák forró lecsatlakoztatásának (hot-unplug) támogatását. A Radeon RX 6000 (Navi 2x) és a régebbi AMD GPU-k alapértelmezés szerint magukba foglalják az ASPM (Active State Power Management) energia-megtakarító mechanizmus támogatását, amely korábban csak a Navi 1x, Vega és Polaris GPU-k számára volt aktiválva;
    • az AMD chipek számára hozzáadták a megosztott virtuális memória (SVM, shared virtual memory) támogatást a HMM (Heterogeneous memory management) alrendszer alapján, amely lehetővé teszi az önálló memória-vezérlő blokkokkal rendelkező eszközök (MMU, memory management unit) használatát, amelyek hozzáférhetnek a fő memóriához. A HMM segítségével közös címzési teret is létrehozhatunk a GPU és a CPU között, amelyben a GPU hozzáférhet a folyamat fő memóriájához;
    • alapvető támogatást kaptunk a technológia AMD Smart Shift, amely dinamikusan módosítja a CPU és GPU energiafogyasztási paramétereit az AMD chipsettel és grafikus kártyával rendelkező laptopok esetében a teljesítmény fokozása érdekében játékok során, videószerkesztésnél és 3D-renderelésnél;
    • az i915 drivernél Intel grafikus kártyákhoz bekapcsolva támogatás az Intel Alderlake P chipekhez;
    • hozzáadták a drm/hyperv drivert a Hyper-V virtuális grafikus adapterhez;
    • hozzáadva a simpledrm grafikus driver, amely az EFI-GOP vagy VESA framebuffer kimenetét használja, amelyet az UEFI firmware vagy BIOS biztosít. A driver fő célja, hogy lehetőséget biztosítson grafikus kimenetre a betöltési folyamat korai szakaszaiban, még mielőtt lehetővé válik a teljes körű DRM driver használata. A driver ideiglenes megoldásként is használható olyan hardverhez, amelyhez egyelőre nincsenek natív DRM driverek;
    • hozzáadva lett támogatás az all-in-one számítógéphez Raspberry Pi 400;
    • hozzáadták a dell-wmi-privacy drivert a Dell laptopokhoz szállított hardveres kamera- és mikrofon kikapcsolók támogatásához;
    • Lenovo laptopok esetén hozzáadva WMI interfész a BIOS beállítások sysfs /sys/class/firmware-attributes/ általi módosításához;
    • bővítették a USB4 interfésszel rendelkező eszközök támogatását;
    • hozzáadva lett Az AmLogic SM1 TOACODEC, az Intel AlderLake-M, az NXP i.MX8, az NXP TFA1, a TDF9897, a Rockchip RK817, a Qualcomm Quinary MI2 és a Texas Instruments TAS2505 hangkártyák és kodekek támogatása. Javított hangtámogatás HP és ASUS laptopokon. Hozzáadták Patchek a hang lejátszásának késleltetésének csökkentésére USB interfészes eszközökön.

Forrás – opennet.ru.

Forrás: linux.org.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster