Linux 5.3 kernel kiadás

Két hónapos fejlesztés után Linus Torvalds benyújtott kernel kiadás Linux 5.3. A legfigyelemreméltóbb változások közé tartozik: az AMD Navi GPU-k, a Zhaoxi processzorok és az Intel Speed ​​​​Select energiagazdálkodási technológia támogatása, az umwait utasítások használatának lehetősége a ciklusok nélküli várakozáshoz,
a „kihasználtság rögzítése” mód növeli az aszimmetrikus CPU-k interaktivitását, a pidfd_open rendszerhívást, a 4/0.0.0.0 alhálózatból származó IPv8-címek használatának lehetőségét, az nftables hardveres gyorsítás lehetőségét, a HDR támogatást a DRM alrendszerben, az ACRN integrációját hipervizor.

В közlemény Az új kiadásban Linus minden fejlesztőt emlékeztetett a kernelfejlesztés fő szabályára: ugyanazt a viselkedést kell fenntartani a felhasználói terület összetevőinél. A kernel módosításai semmilyen módon nem törhetik meg a már futó alkalmazásokat, és nem vezethetnek felhasználói szintű regresszióhoz. Ebben az esetben a viselkedés megsértése nemcsak az ABI változását, az elavult kód eltávolítását vagy a hibák megjelenését okozhatja, hanem a helyesen működő hasznos fejlesztések közvetett hatását is. Szemléltető példaként ott volt eldobták hasznos optimalizálás Ext4 kódban, amely csökkenti a meghajtó-hozzáférések számát azáltal, hogy letiltja az inode tábla előzetes beolvasását kis I/O kérések esetén.

Az optimalizálás oda vezetett, hogy a lemezaktivitás csökkenése miatt a getrandom() véletlenszám-generátor entrópiája lassabban kezdett felhalmozódni, és bizonyos konfigurációkban bizonyos körülmények között lefagyások figyelhetők meg a betöltés során, amíg az entrópiakészlet létre nem jött. megtöltött. Mivel az optimalizálás valóban hasznos, vita alakult ki a fejlesztők között, amelyben javasolták a probléma megoldását a getrandom() hívás alapértelmezett blokkoló módjának letiltásával és egy opcionális jelző hozzáadásával, amely megvárja az entrópiát, de egy ilyen változtatás hatással lesz a a véletlen számok minősége a betöltés kezdeti szakaszában.

Az új verzió 15794 1974 javítást tartalmaz XNUMX XNUMX fejlesztőtől,
javítás mérete - 92 MB (a változások 13986 fájlt érintettek, hozzáadva 258419 kódsort,
599137 sor eltávolítva). Az 39-ben bemutatott összesnek körülbelül 5.3%-a
a változtatások eszközillesztőkkel kapcsolatosak, a változtatások körülbelül 12%-a
hozzáállás a hardver architektúrákra jellemző kód frissítéséhez, 11%
a hálózati veremhez, 3% a fájlrendszerekhez és 3% a belsőhöz kapcsolódik
kernel alrendszerek.

A főbb innovációk:

  • Memória- és rendszerszolgáltatások
    • A „pidfd” funkció folyamatos fejlesztése a PID újrafelhasználási helyzetek kezelésében (a pidfd egy adott folyamathoz van társítva, és nem változik, míg a PID társítható egy másik folyamathoz, miután az adott PID-hez tartozó jelenlegi folyamat leáll). Korábban hozzáadták a kernelhez
      a pidfd_send_signal() rendszerhívás és a CLONE_PIDFD jelző a clone() hívásban az idfd_send_signal() függvényben használható pidfd lekéréséhez. A clone() használata a CLONE_PIDFD jelzővel problémákat okozhat a szolgáltatáskezelőkkel vagy az Android platform memórián kívüli kényszerleállító rendszerével. Ebben az esetben a fork() vagy a clone() hívása CLONE_PIDFD nélkül használatos az indításhoz.

      Az 5.3-as kernel bevezette a rendszerhívást pidfd_open(), amely lehetővé teszi, hogy ellenőrizhető pidfd-t kapjon egy tetszőleges létező folyamathoz, amely nem a clone() CLONE_PIDFD jelzővel történő meghívásával jött létre. A poll() és az epoll() használatával végzett pidfd lekérdezés támogatása is, amely lehetővé teszi a folyamatmenedzserek számára, hogy nyomon kövessék tetszőleges folyamatok leállását anélkül, hogy félnének a versenyhelyzettől, ha PID-t rendelnek hozzá egy új folyamathoz. A pidfd-hez társított folyamat leállásáról szóló értesítés mechanizmusa ugyanaz, mint az utódfolyamat leállásáról szóló értesítés;

    • A terhelésrögzítési mechanizmus támogatása hozzáadásra került a feladatütemezőhöz (Felhasználási szorítás), lehetővé téve a minimális vagy maximális frekvenciatartományok betartását, a CPU-n aktív feladatoktól függően. A bemutatott mechanizmus felgyorsítja a felhasználói élmény minőségét közvetlenül befolyásoló feladatokat azáltal, hogy ezeket a feladatokat legalább a „kért” gyakoriság alsó határán futtatjuk. Az alacsony prioritású, a felhasználó munkáját nem befolyásoló feladatok a „megengedett” gyakoriság felső határán indulnak el. A korlátokat a sched_uclamp_util_min és sched_uclamp_util_max attribútumok állítják be a sched_setattr() rendszerhívásban.
    • Hozzáadott támogatás az energiagazdálkodási technológiához Intel Speed ​​​​Select, elérhető bizonyos Intel Xeon processzorokkal rendelkező szervereken. Ez a technológia lehetővé teszi a teljesítmény és a partíciók átviteli sebességének beállítását a különböző CPU magokhoz, ami lehetővé teszi, hogy bizonyos magokon végrehajtott feladatok teljesítményét prioritásként kezelje, más magok teljesítményét feláldozva;
    • Folyamatok a felhasználói térben megadott az a képesség, hogy az umwait utasítást használva rövid ideig várjon hurkok használata nélkül. Ez az utasítás az umonitor és tpause utasításokkal együtt az Intel hamarosan megjelenő "Tremont" lapkáiban lesz elérhető, és lehetővé teszi olyan késleltetések megvalósítását, amelyek energiahatékonyak, és nem befolyásolják más szálak teljesítményét a Hyper Threading használatakor;
    • A RISC-V architektúrához hozzáadták a nagy memórialapok támogatását;
    • A kprobes nyomkövetési mechanizmus hozzáadta a kernelmutatók felhasználói térre való hivatkozásának megszüntetését, amely például felhasználható a rendszerhívásoknak átadott struktúrák tartalmának kiértékelésére. Az ellenőrzések rendszerindítási szakaszban történő telepítésének lehetősége is hozzáadásra került.
    • A PREEMPT_RT opció hozzáadva a konfigurációs fájlhoz a valós idejű működés érdekében. Maga a valós idejű módot támogató kód még nem került a kernelbe, de az opció megjelenése jó jele annak, hogy a hosszú távú epikus integráció A Realtime-Preempt javítások a befejezéshez közelednek;
    • Hozzáadtuk a clone3() rendszerhívást a clone() interfész egy bővíthetőbb változatának megvalósításával, amely lehetővé teszi nagyobb számú flag megadását;
    • Hozzáadott bpf_send_signal() kezelő, amely lehetővé teszi a BPF programok számára, hogy jeleket küldjenek tetszőleges folyamatoknak;
    • A KVM hypervisor környezetben lévő perf eseményekhez egy új eseményszűrési mechanizmus került hozzáadásra, amely lehetővé teszi az adminisztrátor számára, hogy meghatározza azokat az események típusait, amelyeket a vendégrendszer oldalon lehet megfigyelni vagy nem;
    • Az eBPF-alkalmazás-ellenőrzési mechanizmushoz hozzáadták a programok ciklusokkal történő feldolgozásának lehetőségét, ha a ciklus végrehajtása korlátozott, és nem vezethet az utasítások maximális számának korlátjának túllépéséhez;
  • Lemez alrendszer, I/O és fájlrendszerek
    • Az XFS fájlrendszer mostantól támogatja a többszálú inode bypass-t (például a kvóták ellenőrzésekor). Új ioctls BULKSTAT és INUMBERS került hozzáadásra, amelyek hozzáférést biztosítanak az FS formátum ötödik kiadásában megjelent szolgáltatásokhoz, például az inode születési idejéhez és a BULKSTAT és INUMBERS paraméterek beállításához az egyes AG csoportokhoz (allokációs csoportok);
    • Ext4-ben támogatás hozzáadva ürességek a könyvtárakban (nem csatolt blokkok).
      Feldolgozás biztosított jelző „i” (változhatatlan) a nyitott fájlokhoz (az írás tilos olyan helyzetben, ha a jelzőt akkor állította be, amikor a fájl már nyitva volt);

    • A Btrfs meghatározza a crc32c gyors megvalósítását minden architektúrán;
    • A CIFS-ben kísérleti fejlesztésként eltávolították az smbdirect támogatás kódját. Az SMB3 hozzáadta a kriptográfiai algoritmusok GCM módban történő használatának lehetőségét. Új beillesztési lehetőség hozzáadva a mód paramétereinek az ACE (Access Control Entry) bejegyzésekből való kinyeréséhez. Optimalizálta az open() hívás teljesítményét;
    • Hozzáadott egy opciót az F2FS-hez a szemétgyűjtő korlátozására, amikor checkpoint=disable módban fut. ioctl hozzáadva a blokktartományok eltávolításához az F2FS-ből, lehetővé téve a partíció méretének menet közbeni beállítását. Hozzáadtuk a cserefájl F2FS-be helyezésének lehetőségét a közvetlen I/O biztosításához. Támogatás hozzáadva a fájlok rögzítéséhez és a blokkok hozzárendeléséhez hasonló fájlokhoz minden felhasználó számára;
    • A sendmsg() és recvmsg() aszinkron műveletek támogatása az aszinkron bemenet/kimenet io_uring interfészéhez;
    • A zstd algoritmussal történő tömörítés támogatása és az aláírt FS-képek ellenőrzésének képessége hozzáadásra került az UBIFS fájlrendszerhez;
    • A Ceph FS mostantól támogatja a SELinux biztonsági címkéket a fájlokhoz;
    • Az NFSv4 esetében egy új „nconnect=” beillesztési beállítás került bevezetésre, amely meghatározza a kiszolgálóval létesített kapcsolatok számát. Az ezen kapcsolatok közötti forgalmat terheléselosztással osztják el. Ezenkívül az NFSv4 szerver most létrehoz egy /proc/fs/nfsd/clients könyvtárat, amely tartalmazza az aktuális ügyfelek adatait, beleértve az általuk megnyitott fájlokra vonatkozó információkat is;
  • Virtualizáció és biztonság
    • A kernel tartalmaz egy hypervisort a beágyazott eszközökhöz ACRN, amely a valós idejű feladatokra való felkészültség és a kritikus fontosságú rendszerekben való használatra való alkalmasság szem előtt tartásával készült. Az ACRN minimális többletköltséget biztosít, alacsony késleltetést és megfelelő válaszkészséget garantál a berendezésekkel való interakció során. Támogatja a CPU erőforrások, I/O, hálózati alrendszer, grafikus és hangműveletek virtualizálását. Az ACRN használható több elszigetelt virtuális gép futtatására elektronikus vezérlőegységekben, műszerfalakban, autóipari információs rendszerekben, fogyasztói IoT-eszközökben és más beágyazott technológiákban;
    • Felhasználói módban Linux - tette hozzá Időutazási mód, amely lehetővé teszi az idő lelassítását vagy felgyorsítását egy virtuális UML környezetben, hogy megkönnyítse az időhöz kapcsolódó kód hibakeresését. Emellett egy paraméter is hozzáadásra került
      time-travel-start, amely lehetővé teszi, hogy a rendszeróra egy meghatározott pillanattól induljon korszakos formátumban;

    • Új „init_on_alloc” és „init_on_free” kernel parancssori opciók kerültek hozzáadásra, ha megadjuk, a lefoglalt és felszabadított memóriaterületek nullázása engedélyezve van (nullákkal feltöltve a malloc és free esetén), ami megnövelt biztonságot tesz lehetővé a további inicializálási többletköltségek miatt;
    • Új driver hozzáadva virtio-iommu egy paravirtualizált eszköz megvalósításával, amely lehetővé teszi az 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;
    • Új driver hozzáadva virtio-pmem, amely a fizikai címtérre leképezett tárolóeszközökhöz, például NVDIMM-ekhez való hozzáférést jelenti;
    • Megvalósította a kriptográfiai kulcsok felhasználói vagy hálózati névtérhez való csatolásának lehetőségét (a kulcsok elérhetetlenné válnak a kiválasztott névtéren kívül), valamint a kulcsok védelmét ACL-ek segítségével;
    • A titkosítási alrendszerhez tette hozzá egy nagyon gyors, nem kriptográfiai kivonatoló algoritmus támogatása xxhash, melynek sebessége a memória teljesítményétől függ;
  • Hálózati alrendszer
    • A 4/0.0.0.0 tartományba eső IPv8-címek feldolgozása engedélyezett, amely korábban nem volt használható. Ennek az alhálózatnak a bemutatása engedni fogja további 16 millió IPv4-cím elosztása;
    • Az nftables Netfilterben tette hozzá hardveres gyorsítási mechanizmusok támogatása a csomagszűréshez hozzáadott illesztőprogramok használatával Flow Block API. A hálózati adapterek oldalán teljes szabálytáblázat helyezhető el az összes lánccal. Az engedélyezés az NFT_TABLE_F_HW jelző táblához való kötésével történik. Támogatja az egyszerű Layer 3 és Layer 4 protokoll metaadatokat, elfogadási/elutasítási műveleteket, leképezéseket IP és küldő/fogadó hálózati portok és protokolltípusok szerint;
    • Hozzáadva beépített kapcsolatkövetési támogatás a hálózati hidakhoz, amely nem igényli a br_netfilter emulációs réteg használatát;
    • Az nf_tables-ban tette hozzá támogatja a SYNPROXY modult, amely az iptables hasonló funkcionalitását reprodukálja, és az IPv4 fejlécben lévő egyes opciók szabályainak ellenőrzésére is lehetőség van;
    • A setsockopt() és getsockopt() rendszerhívásokhoz hozzáadtuk a BPF-programok csatolásának lehetőségét, amely például lehetővé teszi, hogy ezekhez a hívásokhoz saját hozzáférés-kezelőket csatoljunk. Ezen kívül egy új hívópont (hook) került hozzáadásra, mellyel minden RTT-intervallumra (oda-vissza út, ping idő) egyszer hívást szervezhet a BPF programhoz;
    • IPv4 és IPv6 esetén - tette hozzá új nexthop útválasztási adattárolási mechanizmus, amelynek célja az útválasztó táblák méretezhetőségének növelése. A tesztek kimutatták, hogy az új rendszer használatakor egy 743 ezer útvonalból álló készlet mindössze 4.3 másodperc alatt betöltődött a kernelbe;
    • Bluetooth-hoz végrehajtva az LE ping támogatásához szükséges funkcionalitás;
  • Оборудование
    • Hozzáadva támogatja a vállalat x86-kompatibilis processzorait Zhaoxin, amelyet a VIA Technologies és a sanghaji önkormányzat közös projektje eredményeként fejlesztettek ki. A ZX CPU család az x86-64 Isaiah architektúrára épül, folytatva a technológia fejlődését VIA Centaur;
    • A DRM (Direct Rendering Manager) alrendszer, valamint az amdgpu és i915 grafikus illesztőprogramok támogatják a HDR (nagy dinamikatartományú) metaadatok elemzését, feldolgozását és küldését a HDMI porton keresztül, lehetővé téve a HDR panelek és képernyők használatát, amelyek képesek további fényerő-tartományok megjelenítése;
    • Az amdgpu illesztőprogram kezdeti támogatást adott az AMD NAVI GPU-hoz (RX5700), amely magában foglalja az alap illesztőprogramot, a képernyő interakciós kódját (DCN2), a GFX-et és a számítási támogatást (GFX10),
      SDMA 5 (System DMA0), energiagazdálkodási és multimédiás kódolók/dekóderek (VCN2). Az amdgpu javítja a Vega12 és Vega20 GPU-n alapuló kártyák támogatását is, amelyekhez további memória- és energiagazdálkodási lehetőségeket adtak;

    • VegaM GPU-kon alapuló kártyák támogatása az amdkfd illesztőprogramhoz (diszkrét GPU-khoz, például Fiji, Tonga, Polaris);
    • Az Icelake chipekhez készült Intel videokártyák DRM-illesztőprogramjában megvalósítani új többszegmenses gammakorrekciós mód. Hozzáadtuk a DisplayPorton keresztüli kimeneti lehetőséget YCbCr4:2:0 formátumban. Új firmware hozzáadva GuC SKL, BXT, KBL, GLK és ICL számára. Bevezették a képernyő tápellátásának aszinkron módban történő kikapcsolásának lehetőségét. Hozzáadva támogatás az Ironlake (gen5) és gen4 (Broadwater - Cantiga) chipek renderelési környezetének mentéséhez és visszaállításához, amely lehetővé teszi a GPU állapotának visszaállítását a felhasználói területről, amikor egyik kötegelt műveletről a másikra vált;
    • A Nouveau illesztőprogram az NVIDIA Turing TU116 lapkakészlet észlelését biztosítja;
    • Az ARM Komeda képernyőgyorsítók (Mali D71) DRM/KMS illesztőprogramjának képességei kibővültek, támogatja a méretezést, a rétegek felosztását/egyesítését, az elforgatást, a késleltetett írást, az AFBC, az SMMU és az Y0L2, P010, YUV420_8/10BIT színkódolási formátumokat. hozzáadva;
    • Az MSM illesztőprogram támogatja a Qualcomm processzorokban használt A540 GPU Adreno sorozatot, valamint támogatja az MSM8998 DSI vezérlőt a Snapdragon 835-höz;
    • Illesztőprogramok hozzáadva az LCD panelekhez Samsung S6E63M0, Armadeus ST0700, EDT ETM0430G0DH6, OSD101T2045-53TS,
      Evervision VGG804821, FriendlyELEC HD702E, KOE tx14d24vm1bpa, TFC S9700RTWV43TR-01B, EDT ET035012DM6 és VXT VL050-8048NT-C01;

    • Hozzáadva illesztőprogram a dekódoló gyorsító eszközök engedélyezéséhez
      videók elérhetők az Amlogic Meson SoC-ben;

    • A v3d illesztőprogramban (a Raspberry Pi-ben használt Broadcom Video Core V GPU-hoz) megjelent támogatás Számítógépes árnyékolók küldése;
    • Hozzáadva illesztőprogram az Apple MacBook és MacBookPro laptopok modern modelljeiben használt SPI billentyűzetekhez és trackpadokhoz;
    • Hozzáadva további védelem a floppy illesztőprogramhoz kapcsolódó ioctl hívások számára, és maga az illesztőprogram karbantartatlanként van megjelölve
      („árva”), ami a tesztelés befejezését jelenti. Az illesztőprogram továbbra is a kernelben van tárolva, de a megfelelő működése nem garantált. Az illesztőprogram elavultnak tekinthető, mivel nehéz működő berendezést találni a teszteléshez - az összes jelenlegi külső meghajtó általában az USB interfészt használja.

    • Hozzáadva cpufreq illesztőprogram Raspberry Pi kártyákhoz, amely lehetővé teszi a processzorfrekvencia változásainak dinamikus szabályozását;
    • Hozzáadott támogatás az új ARM SoC Mediatek mt8183 (4x Cortex-A73 + 4x Cortex-A53), TI J721E (2x Cortex-A72 + 3x Cortex-R5F + 3 DSP + MMA) és Amlogic G12B (4x Cortex-A73 + 2) A53), valamint táblák:
      • Purism Librem5,
      • Aspeed BMC,
      • Microsoft Olympus BMC,
      • Kontron SMARC,
      • Novtech Meerkat96 (i.MX7),
      • ST Micro Avenger96,
      • Google Cheza (Qualcomm SDM845),
      • Qualcomm Dragonboard 845c (Qualcomm SDM845),
      • Hugsun X99 TV Box (Rockchip RK3399),
      • Khadas Edge/Edge-V/Captain (Rockchip RK3399),
      • HiHope RZ/G2M,
      • NXP LS1021A-TSN.

Ugyanakkor a Latin-Amerikai Szabad Szoftver Alapítvány alakított
opció teljesen ingyenes kernel 5.3 - Linux-mentes 5.3-gnu, megtisztítva a nem szabad komponenseket vagy kódrészleteket tartalmazó firmware-től és illesztőprogram-elemektől, amelyek terjedelmét a gyártó korlátozza. Az új kiadásban a blob betöltés le van tiltva a qcom, hdcp drm, allegro-dvt és meson-vdec illesztőprogramokban.
Frissített blobtisztító kód az amdgpu, i915, netx, r8169, brcmfmac, rtl8188eu, adreno, si2157, pvrusb2, touchscreen_dmi illesztőprogramokban és alrendszerekben, valamint a mikrokód-dokumentációban.

Forrás: opennet.ru

Hozzászólás