Linux 5.14 kernel kiadás

Két hónapos fejlesztés után Linus Torvalds bemutatta a Linux 5.14-es kernel kiadását. A figyelemre méltó változások közé tartozik az új quotactl_fd() és memfd_secret() rendszerhívások, az ide és a nyers illesztőprogramok eltávolítása, az új cgroup I/O prioritásvezérlő, a SCHED_CORE feladatütemezési mód, az ellenőrzött BPF programok betöltőinek létrehozására szolgáló infrastruktúra.

Az új verzió 15883 javítást kapott 2002 fejlesztőktől, a patch mérete 69 MB (a változtatások 12580 fájlt érintettek, 861501 kódsor került be, 321654 sor törölve lett). Az 47-ben bevezetett változtatások körülbelül 5.14%-a az eszközillesztőkkel kapcsolatos, a változtatások hozzávetőleg 14%-a a hardverarchitektúrák kódjának frissítéséhez, 13%-a a hálózati veremhez, 3%-a a fájlrendszerekhez és 3%-a a belsőhöz kapcsolódik. kernel alrendszerek.

Főbb újítások:

  • Lemez alrendszer, I/O és fájlrendszerek
    • Egy új I/O prioritásvezérlőt, az rq-qos-t implementáltuk a cgroupokhoz, amely képes szabályozni az egyes cgroupok tagjai által generált eszközök blokkolására irányuló kérések feldolgozási prioritását. Az mq-deadline I/O ütemező egy új prioritásvezérlő támogatásával bővült.
    • Az ext4 fájlrendszer egy új ioctl parancsot valósít meg, az EXT4_IOC_CHECKPOINT, amely a naplóból és a hozzá tartozó pufferekből minden függőben lévő tranzakciót a lemezre ürít, valamint felülírja a napló tárolójában használt területet. A változtatást a fájlrendszerekből való információszivárgást megakadályozó kezdeményezés részeként készítették elő.
    • A Btrfs teljesítményoptimalizálása megtörtént: az fsync végrehajtása során a szükségtelen kiterjesztett attribútumnaplózás megszüntetésével az intenzív kiterjesztett attribútumműveletek teljesítménye akár 17%-kal is nőtt. Ezenkívül a kiterjedést nem befolyásoló csonkolási műveletek végrehajtásakor a teljes szinkronizálás le van tiltva, ami 12%-kal csökkentette a műveleti időt. A sysf-hez hozzáadtunk egy beállítást, amely korlátozza az I/O sávszélességet az FS ellenőrzésekor. Ioctl hívások hozzáadva az eszköz átméretezésének megszakításához és a műveletek eltávolításához.
    • Az XFS-ben újratervezték a puffer-gyorsítótár megvalósítását, amely átkerült a memórialapok kötegelt módban történő lefoglalására. Javított gyorsítótár hatékonysága.
    • Az F2FS hozzáadott egy opciót, amely csak olvasható módban fut, és egy tömörített blokk-gyorsítótár módot (compress_cache) implementált a véletlenszerű olvasási teljesítmény javítása érdekében. Megvalósított támogatás a memóriába leképezett fájlok tömörítéséhez az mmap() művelettel. A maszkos fájltömörítés szelektív letiltásához új beillesztési opciót, a nocompress-t javasoltak.
    • Dolgoztunk az exFAT illesztőprogramban, hogy javítsák a kompatibilitást egyes digitális fényképezőgépek tárolóival.
    • Hozzáadásra került a quotactl_fd() rendszerhívás, amely lehetővé teszi a kvóták kezelését nem egy speciális eszközfájlon keresztül, hanem egy fájlleíró megadásával ahhoz a fájlrendszerhez, amelyre a kvótát alkalmazzák.
    • A kernelből eltávolították a régi IDE blokk eszközillesztőket, amelyeket régen a libata alrendszer váltott fel.
    • Eltávolította a "raw" illesztőprogramot a kernelből, amely puffermentes hozzáférést biztosít a blokkoló eszközökhöz a /dev/raw felületen keresztül. Ezt a funkciót régóta alkalmazzák az O_DIRECT jelzőt használó alkalmazásokban.
  • Memória- és rendszerszolgáltatások
    • A feladatütemező új ütemezési móddal rendelkezik, a SCHED_CORE, amely lehetővé teszi annak vezérlését, hogy mely folyamatok futhatnak együtt ugyanazon a CPU magon. Minden folyamathoz hozzá lehet rendelni egy cookie-azonosítót, amely meghatározza a folyamatok közötti bizalom hatókörét (például, hogy ugyanahhoz a felhasználóhoz vagy tárolóhoz tartoznak). A kódvégrehajtás megszervezése során az ütemező gondoskodhat arról, hogy csak az azonos tulajdonoshoz társított folyamatok osztozzanak egyetlen CPU-magon, ami bizonyos Spectre-támadások blokkolására használható azáltal, hogy megakadályozza, hogy megbízható és nem megbízható feladatok futjanak ugyanazon az SMT (Hyper Threading) szálon.
    • A cgroup esetében a kill művelet támogatása van megvalósítva, amely lehetővé teszi a csoporthoz kapcsolódó összes folyamat azonnali leállítását (SIGKILL küldése), ha a virtuális cgroup.kill fájlba "1"-et ír.
    • Az osztott zárolások ("split lock") észlelésére adott válaszokkal kapcsolatos képességek, amelyek a memóriában lévő nem igazított adatok elérésekor jelentkeznek, mivel egy atomi utasítás végrehajtása során az adatok a CPU gyorsítótárának két sorát keresztezik. kiterjesztett. Az ilyen zárolások a teljesítmény jelentős csökkenéséhez vezetnek, így korábban gyakran lehetett kényszeríteni az alkalmazást a zárolást okozó alkalmazás megszüntetésére. Az új kiadás a kernel "split_lock_detect=ratelimit:N" parancssori paraméterével egészíti ki a rendszerszintű korlátot a zárolási műveletek másodpercenkénti sebességére vonatkozóan, amely után minden olyan folyamat, amely osztott zárolás forrásává vált, kénytelen lesz leállítás helyett 20 ms-ra álljon meg.
    • A cgroup sávszélesség-vezérlő CFS (CFS bandwidth controller), amely meghatározza, hogy mennyi processzoridőt lehet lefoglalni az egyes ccsoportokhoz, képes egy adott működési időtartam által korlátozott korlátok meghatározására, ami lehetővé teszi a késésekre érzékeny munkaterhelések jobb szabályozását. Például, ha a cpu.cfs_quota_us értéket 50000-re, a cpu.cfs_period_us értéket pedig 100000-ra állítja, a folyamatcsoport 100 ms-onként 50 ms CPU-időt veszít el.
    • Kiegészült egy kezdeti infrastruktúra a BPF programbetöltők létrehozásához, amely később csak megbízható digitális kulccsal aláírt BPF programok betöltését teszi lehetővé.
    • Egy új futex-művelet, a FUTEX_LOCK_PI2 került hozzáadásra, amely monoton időzítőt használ az időtúllépés kiszámításához, amely figyelembe veszi a rendszer alvó üzemmódban töltött idejét.
    • A RISC-V architektúra esetében megvalósul a nagy memórialapok támogatása (Transparent Huge-Pages), valamint a KFENCE mechanizmus használatának képessége a memóriával végzett munka során fellépő hibák észlelésére.
    • Hozzáadtuk a MADV_POPULATE_READ és MADV_POPULATE_WRITE jelzőket a madvise() rendszerhíváshoz, amely lehetőséget biztosít a folyamatmemória-kezelés optimalizálására, hogy "oldalhibát" generáljon az olvasási vagy írási műveletekre leképezett összes memóriaoldalon anélkül, hogy ténylegesen olvasási vagy írási műveletet hajtana végre (előbeállítás ). A jelzők használata hasznos lehet a programvégrehajtási folyamat késésének csökkentése érdekében, mivel proaktívan végrehajtja az oldalhiba-kezelőt az összes ki nem osztott oldalra egyszerre, anélkül, hogy meg kellene várnia a tényleges hozzáférést.
    • A kunit egységtesztelési rendszerhez hozzáadták a QEMU környezetben végzett tesztek futtatásának támogatását.
    • Új nyomkövetők kerültek hozzáadásra: az "osnoise" a megszakításkezelés okozta alkalmazáskésések figyelésére, a "timerlat" pedig az időzítő ébresztésének késleltetéseiről szóló részletes információk megjelenítésére.
  • Virtualizáció és biztonság
    • A memfd_secret() rendszerhívás hozzá lett adva, hogy egy privát memóriaterületet hozzon létre egy izolált címtérben, amely csak a tulajdonos folyamata számára látható, más folyamatok számára nem tükröződik, és nem érhető el közvetlenül a kernel számára.
    • A seccomp rendszerhívás-szűrő rendszer lehetővé teszi, hogy egyetlen atomi művelettel fájlleírót hozzon létre egy elszigetelt feladathoz, és visszaadja azt a rendszerhívás feldolgozásakor, amikor a zárkezelőket a felhasználói térbe helyezi át. A javasolt művelet megoldja azt a problémát, hogy jel megérkezésekor megszakítja a kezelőt a felhasználói térben.
    • Egy új mechanizmus került hozzáadásra a felhasználói azonosító névtérben lévő erőforráskorlátok kezelésére, amely az egyes rlimit számlálókat a "felhasználói névtérben" lévő felhasználóhoz köti. A változtatás megoldja a közös erőforrás-számlálók használatának problémáját, amikor ugyanaz a felhasználó különböző tárolókban indít folyamatokat.
    • Az ARM64 rendszerekhez készült KVM hypervisorban hozzáadásra került az MTE (MemTag, Memory Tagging Extension) bővítmény vendégrendszerekben való használatának lehetősége, amely lehetővé teszi címkék kötését minden memóriafoglalási művelethez, és gondoskodik a mutatók használatának helyességének ellenőrzéséről. blokkolja a már felszabadult memóriablokkokhoz való hozzáférés, a puffer túlcsordulása, az előzetes inicializálási hívások és az aktuális kontextuson kívüli használat által okozott sebezhetőségek kihasználását.
    • Az ARM64 platform által biztosított mutató hitelesítés mostantól külön konfigurálható a kernelhez és a felhasználói területhez. A technológia lehetővé teszi speciális ARM64 utasítások használatát a visszatérési címek digitális aláírások segítségével történő ellenőrzésére, amelyeket magának a mutatónak a fel nem használt felső bitjeiben tárolnak.
    • A felhasználói módú Linux támogatja a PCI-eszközök illesztőprogramjainak használatát a PCI-over-virtio illesztőprogram által megvalósított virtuális PCI-busszal.
    • Az x86-os rendszerek esetében a virtio-iommu paravirtualizált eszköz támogatásával bővült, amely lehetővé teszi az IOMMU kérések, például az ATTACH, DETACH, MAP és UNMAP elküldését a virtio átvitelen keresztül oldaltáblázatok emulálása nélkül.
    • Az Intel CPU-k esetében, a Skylake családtól a Coffee Lake-ig, alapértelmezés szerint le van tiltva az Intel TSX (Transactional Synchronization Extensions) bővítmények használata, amelyek eszközöket biztosítanak a többszálú alkalmazások teljesítményének javításához a szükségtelen szinkronizálási műveletek dinamikus kiküszöbölésével. A bővítmények le vannak tiltva, mivel előfordulhat, hogy a Zombieload támadások manipulálják az információszivárgást harmadik féltől származó csatornákon keresztül, amelyek az aszinkron műveletek megszakítása (TAA, TSX Asynchronous Abort) mechanizmus működése során fordulnak elő.
  • Hálózati alrendszer
    • Folyamatos integráció az MPTCP (MultiPath TCP) magjába, amely a TCP-protokoll kiterjesztése a TCP-kapcsolat működésének megszervezésére a csomagok egyidejű, több útvonalon történő kézbesítésével, különböző, különböző IP-címekhez kötött hálózati interfészeken keresztül. Az új kiadás egy olyan mechanizmust ad hozzá, amellyel saját forgalomkivonatolási házirendeket állíthat be az IPv4 és IPv6 számára (multipath hash policy), amely lehetővé teszi a felhasználói térből annak meghatározását, hogy a csomagokban (beleértve a beágyazottakat is) mely mezőket használják a hash kiszámításakor. amely meghatározza a csomag elérési útját.
    • A SOCK_SEQPACKET socketek támogatása (rendezett és megbízható datagram átvitel) hozzáadásra került a virtio virtuális szállításhoz.
    • Kibővült a SO_REUSEPORT socket mechanizmus lehetősége, amely lehetővé teszi, hogy egyszerre több lehallgató socket csatlakozzon egy porthoz, hogy egyszerre fogadhassa a kapcsolatokat a bejövő kérések elosztásával a SO_REUSEPORT-on keresztül csatlakoztatott összes socket között, ami leegyszerűsíti a többszálas szerveralkalmazások létrehozását. . Az új verzió olyan eszközöket ad hozzá, amelyekkel az eredetileg kiválasztott socket kérésének feldolgozása során hiba esetén a vezérlés átvihető egy másik socketre (megoldja az egyes kapcsolatok elvesztését a szolgáltatások újraindításakor).
  • Оборудование
    • Az amdgpu illesztőprogram támogatja az új AMD Radeon RX 6000 sorozatú GPU-kat, amelyek kódnevek "Beige Goby" (Navi 24) és "Yellow Carp", valamint továbbfejlesztett támogatást nyújt az Aldebaran (gfx90a) GPU-khoz és a Van Gogh APU-khoz. Több eDP-panellel való egyidejű munkavégzés lehetősége. Az APU Renoir esetében a videomemória titkosított puffereivel való munkavégzés támogatása (TMZ, Trusted Memory Zone) megvalósult. Hozzáadott hot-unplug támogatás a grafikus kártyákhoz. A Radeon RX 6000 (Navi 2x) GPU-k és a régebbi AMD GPU-k esetében alapértelmezés szerint engedélyezve van az ASPM (Active State Power Management) energiatakarékossági mechanizmus, amely korábban csak a Navi 1x, Vega és Polaris GPU-k esetében volt engedélyezve.
    • Az AMD chipeknél a HMM (Heterogeneous memory management) alrendszeren alapuló megosztott virtuális memória (SVM, megosztott virtuális memória) támogatása került be, amely lehetővé teszi a saját memóriakezelő egységgel (MMU, memóriakezelő egység) rendelkező eszközök használatát, amely hozzáférhet a fő memóriához. A HMM segítségével különösen megosztott címteret szervezhet a GPU és a CPU között, amelyben a GPU hozzáférhet a folyamat fő memóriájához.
    • Hozzáadott kezdeti támogatás az AMD Smart Shift technológiához, amely dinamikusan változtatja a CPU és a GPU teljesítménybeállításait az AMD lapkakészlettel és grafikus kártyával rendelkező laptopokon a játék, a videószerkesztés és a 3D megjelenítési teljesítmény fokozása érdekében.
    • Az Intel grafikus kártyák i915 illesztőprogramja támogatja az Intel Alderlake P chipeket.
    • Hozzáadott drm/hyperv illesztőprogram a Hyper-V virtuális grafikus adapterhez.
    • Támogatás hozzáadva a Raspberry Pi 400 monoblokkos számítógéphez.
    • Hozzáadtuk a dell-wmi-privacy illesztőprogramot a Dell által szállított kamera- és mikrofonhardver-kapcsolók támogatásához.
    • A Lenovo laptopokhoz WMI interfészt adtak a BIOS-beállítások megváltoztatásához a sysfs /sys/class/firmware-attributes/ segítségével.
    • Kiterjesztett támogatás az USB4 eszközökhöz.
    • Hozzáadott támogatás az AmLogic SM1 TOACODEC, Intel AlderLake-M, NXP i.MX8, NXP TFA1, TDF9897, Rockchip RK817, Qualcomm Quinary MI2 és Texas Instruments TAS2505 hangkártyákhoz és kodekekhez. Továbbfejlesztett hangtámogatás HP és ASUS laptopokon. Javítások hozzáadva a késleltetés csökkentése érdekében, mielőtt a hanglejátszás elindulna USB-eszközökön.

Forrás: opennet.ru

Hozzászólás