Linux kernel 5.14

Linux kernel 5.14

Két hónapos fejlesztés után Linus Torvalds benyújtott kernel kiadás Linux 5.14. A legfigyelemreméltóbb változások közé tartozik: új quotactl_fd() és memfd_secret() rendszerhívások, ide és nyers meghajtók eltávolítása, új I/O prioritásvezérlő a cgroup számára, SCHED_CORE feladatütemezési mód, infrastruktúra ellenőrzött BPF programbetöltők létrehozásához.

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

A főbb innovációk:

  • lemez alrendszer, bemeneti/kimeneti és fájlrendszerek:
    • cgroup számára megvalósítani új I/O prioritásvezérlő - rq-qos, amely képes szabályozni az egyes cgroupok tagjai által generált eszközök blokkolására vonatkozó kérések feldolgozási prioritását. Új prioritásvezérlő támogatással bővült az mq-deadline I/O ütemező;
    • ext4 fájlrendszeren végrehajtva új ioctl parancs EXT4_IOC_CHECKPOINT, amely az összes függőben lévő tranzakciót a naplóból és a kapcsolódó pufferekből a lemezre kényszeríti, valamint felülírja a bejelentkezési tároló által használt területet. A változtatást a fájlrendszerekből való információszivárgás megelőzésére irányuló kezdeményezés részeként készítették elő;
    • a Btrfs-ben bemutatott Teljesítményoptimalizálás: Az fsync végrehajtása során a kiterjesztett attribútumok szükségtelen naplózásának kiküszöbölésével a kiterjesztett attribútumokkal végzett intenzív műveletek teljesítménye akár 17%-kal is nőtt. Ezenkívül a kiterjedést nem befolyásoló vágá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ési és törlésének megszakításához;
    • XFS-ben átdolgozva puffer gyorsítótár megvalósítása, amely kötegelt módban kerül át a memórialapok lefoglalására. Javított gyorsítótár hatékonysága;
    • Az F2FS hozzáadott egy opciót, amely csak olvasható módban működik, és egy tömörített blokk-gyorsítótárazási módot (compress_cache) implementált a véletlenszerű olvasási teljesítmény javítása érdekében. Támogatták a memóriába leképezett fájlok tömörítését az mmap() művelettel. A maszkos fájltömörítés szelektív letiltásához egy új, nocompress csatolási opciót javasoltak;
    • dolgoztunk az exFAT illesztőprogramban egyes digitális fényképezőgépek tárolásával való kompatibilitás javításán;
    • hozzáadott rendszerhívás quotactl_fd(), amely lehetővé teszi a kvóták kezelését nem egy speciális eszközfájlon keresztül, hanem a fájlrendszerhez társított fájlleíró megadásával, amelyre a kvótát alkalmazzák;
    • Az IDE interfésszel rendelkező blokkeszközök régi illesztőprogramjait eltávolították a kernelből, ezeket már régóta a libata alrendszer váltotta fel. A régi eszközök támogatása teljes mértékben megmaradt, a változtatások csak a régi illesztőprogramok használatára vonatkoznak, amelyek használatakor a meghajtókat /dev/hd*-nak hívták, és nem /dev/sd*-nak;
    • A „raw” illesztőprogramot eltávolítottuk 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:
    • új ütemezési mód került megvalósításra a feladatütemezőben SCHED_CORE, amely lehetővé teszi annak szabályozá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ésekor az ütemező gondoskodhat arról, hogy egy CPU-magot csak az azonos tulajdonoshoz tartozó folyamatok osszanak meg, ami felhasználható bizonyos Spectre támadások blokkolására azáltal, hogy megakadályozza, hogy megbízható és megbízhatatlan feladatok futjanak ugyanazon az SMT (Hyper Threading) szálon. ;
    • a cgroup mechanizmushoz a kill művelet támogatása valósult meg, amely lehetővé teszi a csoporthoz tartozó összes folyamat egyidejű leállítását (SIGKILL küldése) úgy, hogy „1”-et ír a cgroup.kill virtuális fájlba;
    • kibővült képességek az osztott zárolások ("split locks") észlelésére való reagálással kapcsolatban, 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 kereszteznek két CPU gyorsítótár vonalat. Az ilyen blokkolások a teljesítmény jelentős csökkenéséhez vezetnek, így korábban lehetőség volt a blokkolást okozó alkalmazás erőszakos leállítására. Az új kiadás hozzáadja a kernel „split_lock_detect=ratelimit:N” parancssori paraméterét, amely lehetővé teszi egy rendszerszintű korlát meghatározását a másodpercenkénti zárolási műveletek sebességére vonatkozóan, amelynek túllépése után minden olyan folyamat, amely az osztott zárolás forrásává vált. kénytelen leállni 20 ms-ra a befejezés helyett;
    • A cgroup sávszélesség-vezérlő CFS (CFS bandwidth controller), amely meghatározza, hogy az egyes cgroupokhoz mennyi processzoridőt lehet lefoglalni, képes adott működési időtartam által korlátozott korlátok meghatározására, ami lehetővé teszi a késleltetésre érzékeny terhelé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-re állítja, akkor a folyamatok egy csoportja 100 ms-onként 50 ms CPU-időt veszít el;
    • tette hozzá kezdeti infrastruktúra a BPF programbetöltők létrehozásához, amely a továbbiakban lehetővé teszi csak megbízható digitális kulccsal aláírt BPF programok letöltését;
    • hozzáadott egy új futex műveletet FUTEX_LOCK_PI2, amely monoton időzítőt használ az időtúllépés kiszámításához, amely figyelembe veszi a rendszer által alvó üzemmódban töltött időt;
    • a RISC-V architektúrához a nagy memórialapok támogatása (Transparent Huge-Pages) és a KFENCE a hibák azonosítása a memóriával való munka során;
    • a madvise() rendszerhívásba, amely lehetőséget biztosít a folyamatmemória-kezelés optimalizálására, tette hozzá A MADV_POPULATE_READ és MADV_POPULATE_WRITE jelzők „oldalhibát” generálnak az olvasási vagy írási műveletekre leképezett összes memóriaoldalon anélkül, hogy tényleges olvasási vagy írási műveletet hajtanának végre (előbeállítás). A jelzők használata hasznos lehet a program végrehajtásának késleltetésének csökkentésében, köszönhetően az „oldalhiba” kezelő proaktív végrehajtásának az összes ki nem osztott oldalra egyszerre, anélkül, hogy meg kellene várni a tényleges hozzáférést;
    • egységtesztelő rendszerben kunit tette hozzá tesztek futtatásának támogatása a QEMU környezetben;
    • új nyomjelzők hozzáadva: "osnoise" a megszakításkezelés okozta alkalmazáskésések nyomon követésére, az " timerlat " pedig az időzítő jelből való felébredéskor jelentkező késések részletes információinak megjelenítésére;
  • virtualizáció és biztonság:
    • - tette hozzá rendszerhívás memfd_secret(), amely lehetővé teszi privát memóriaterület létrehozását egy elszigetelt címtérben, amely csak a tulajdonos folyamata számára látható, más folyamatokban nem tükröződik, és közvetlenül nem érhető el a kernel számára;
    • a seccomp rendszerhívás-szűrő rendszerben a zárkezelők felhasználói térbe történő áthelyezésekor lehetőség van egy atomi művelettel egy fájlleíró létrehozására egy elszigetelt feladathoz, és rendszerhívás feldolgozása során visszaadja azt. A javasolt művelet megoldja a probléma a kezelő megszakításával a felhasználói térben, amikor jel érkezik;
    • - tette hozzá új mechanizmus az erőforrás-korlátozás kezeléséhez a felhasználói azonosító névtérben, amely az egyes rlimit számlálókat egy felhasználóhoz köti a "felhasználói névtérben". A változtatás megoldja a közös erőforrás-számlálók használatának problémáját, amikor egy felhasználó különböző tárolókban futtatja a folyamatokat;
    • az ARM64 rendszerekhez készült KVM hypervisor hozzáadta az MTE (MemTag, Memory Tagging Extension) bővítmény használatának lehetőségét a vendégrendszerekben, amely lehetővé teszi címkék kötését minden memóriafoglalási művelethez, és megszervezi a mutatók helyes használatának ellenőrzését, hogy blokkolja a kiaknázást. a már felszabadult memóriablokkokhoz való hozzáférés, a pufferek túlcsordulása, az inicializálás előtti hozzáférés és az aktuális kontextuson kívüli használat által okozott sebezhetőségek;
    • 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;
    • felhasználói módú Linuxban tette hozzá PCI-eszközök illesztőprogramjainak támogatása virtuális PCI busszal, amelyet a PCI-over-virtio illesztőprogram valósít meg;
    • x86 rendszerek esetében a virtio-iommu paravirtualizált eszköz támogatása, amely lehetővé teszi IOMMU kérések, például ATTACH, DETACH, MAP és UNMAP küldését a virtio átvitelen keresztül, memórialaptá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) használata, amely eszközöket biztosít 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 a támadások lehetősége miatt zombi terhelés, manipulálja a harmadik fél csatornáin keresztüli információszivárgást, amely a műveletek aszinkron megszakítására szolgáló mechanizmus (TAA, TSX Asynchronous Abort) működése során következik be;
  • 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 tartozó hálózati interfészeken keresztül. Az új számban - tette hozzá saját forgalomkivonatolási házirendek beállítására szolgáló mechanizmus az IPv4-hez és IPv6-hoz (multipath hash policy), lehetővé téve a felhasználói térből annak meghatározását, hogy a csomagok mely mezői (beleértve a beágyazottakat is) legyenek felhasználva az útvonalválasztást meghatározó hash kiszámításakor a csomaghoz;
    • socket támogatással bővült a virtuális transport virtio SOCK_SEQPACKET (datagramok rendezett és megbízható továbbítása);
    • Kibővültek a SO_REUSEPORT socket mechanizmus lehetőségei, amely lehetővé teszi, hogy egyszerre több lehallgató socket csatlakozzon egy porthoz, hogy egyszerre fogadja 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óban tette hozzá eszközök a vezérlés másik socketre való átvitelére, ha az eredetileg kiválasztott socket kérésének feldolgozásakor meghibásodik (megoldja az egyes kapcsolatok elvesztését a szolgáltatások újraindításakor);
  • felszerelés:
    • az amdgpu illesztőprogramban végrehajtva 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ás az Aldebaran GPU-hoz (gfx90a) és a Van Gogh APU-hoz. Hozzáadtuk a több eDP-panellel való egyidejű munkavégzés lehetőségét. Az APU Renoir esetében a videomemória titkosított puffereivel való munkavégzés támogatása (TMZ, Trusted Memory Zone) megvalósult. Támogatás hozzáadva a hot-unplug grafikus kártyákhoz. A Radeon RX 6000 (Navi 2x) GPU-k és 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 használatával is 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áadva a kezdeti technológiai támogatást AMD Smart Shift, amely dinamikusan változtatja a processzor és a GPU energiafogyasztási paramétereit lapkakészlettel és AMD grafikus kártyával rendelkező laptopokon, hogy növelje a teljesítményt játék, videószerkesztés és 3D-s megjelenítés során;
    • az Intel videokártyák i915 illesztőprogramjában beleértve Intel Alderlake P chipek támogatása;
    • hozzáadott drm/hyperv illesztőprogram a Hyper-V virtuális grafikus adapterhez;
    • - tette hozzá simpledrm grafikus illesztőprogram, amely az UEFI firmware vagy BIOS által biztosított EFI-GOP vagy VESA framebuffert használja a kimenethez. Az illesztőprogram fő célja, hogy grafikus kimeneti képességeket biztosítson a rendszerindítás kezdeti szakaszában, mielőtt a teljes DRM-illesztőprogramot használni lehetne. Az illesztőprogram ideiglenes megoldásként is használható olyan berendezésekhez, amelyek még nem rendelkeznek natív DRM-illesztőprogramokkal;
    • tette hozzá minden az egyben számítógépes támogatás Málna Pi 400;
    • Hozzáadott dell-wmi-privacy illesztőprogram a Dell laptopokhoz tartozó kamera- és mikrofonhardver-kapcsolók támogatásához;
    • Lenovo laptopokhoz - tette hozzá WMI interfész BIOS-paraméterek megváltoztatásához a sysfs /sys/class/firmware-attributes/ segítségével;
    • kiterjesztett USB4 interfésszel rendelkező eszközök támogatása;
    • tette hozzá az AmLogic SM1 TOACODEC, Intel AlderLake-M, NXP i.MX8, NXP TFA1, TDF9897, Rockchip RK817, Qualcomm Quinary MI2 és Texas Instruments TAS2505 hangkártyák és kodekek támogatása. Továbbfejlesztett hangtámogatás HP és ASUS laptopokon. Hozzáadva javítások, amelyek csökkentik az USB interfésszel rendelkező eszközökön a hang lejátszásának megkezdése előtti késéseket.

Forrás – opennet.ru.

Forrás: linux.org.ru