Linukso-kerna eldono 5.14

Post du monatoj da evoluo, Linus Torvalds prezentis la liberigon de la Linukso-kerno 5.14. Inter la plej rimarkindaj ŝanĝoj: novaj quotactl_fd() kaj memfd_secret() sistemvokoj, forigo de ide kaj krudaj ŝoforoj, nova I/O-prioritato-regilo por cgroup, SCHED_CORE taskoplana reĝimo, infrastrukturo por krei kontrolitajn BPF-programo-ŝargilojn.

La nova versio inkluzivas 15883 korektojn de 2002 programistoj, la flikgrandeco estas 69 MB (la ŝanĝoj influis 12580 dosierojn, 861501 linioj de kodo estis aldonitaj, 321654 linioj estis forigitaj). Proksimume 47% de ĉiuj ŝanĝoj lanĉitaj en 5.14 rilatas al aparataj ŝoforoj, proksimume 14% de ŝanĝoj rilatas al ĝisdatigo de kodo specifa por hardvararkitekturoj, 13% rilatas al la interkonekta stako, 3% rilatas al dosiersistemoj kaj 3% estas rilataj al internaj kernaj subsistemoj.

Ĉefaj novigoj:

  • Diska Subsistemo, I/O kaj Dosiersistemoj
    • Nova I/O prioritatregilo estis efektivigita por cgroups, rq-qos, kiuj povas kontroli la pretigprioritato de petoj bloki aparatojn generitaj fare de membroj de ĉiu cgroup. Nova prioritata regilo-subteno estis aldonita al la mq-deadline I/O-planilo.
    • La dosiersistemo ext4 efektivigas novan ioctl-komandon, EXT4_IOC_CHECKPOINT, kiu devigas ĉiujn pritraktatajn transakciojn de la ĵurnalo kaj iliaj rilataj bufroj esti fluitaj al disko, kaj ankaŭ anstataŭigas la areon uzatan de la ĵurnalo en stokado. La ŝanĝo estis preparita kiel parto de iniciato por malhelpi informlikojn de dosiersistemoj.
    • Efikecoptimumigoj estis faritaj al Btrfs: forigante nenecesan registradon de etenditaj atributoj dum fsync-ekzekuto, la agado de intensaj operacioj kun etenditaj atributoj pliiĝis je ĝis 17%. Aldone, dum elfarado de tajloperacioj kiuj ne influas ampleksojn, plena sinkronigo estas malŝaltita, kio reduktis la operaciotempon je 12%. Agordo estis aldonita al sysfs por limigi I/O-bendolarĝon dum kontrolado de la FS. Aldonitaj ioctl-vokoj por nuligi regrandigi kaj forigi aparatojn.
    • En XFS, la efektivigo de la bufrokaŝmemoro estis restrukturita, kiu estis ŝanĝita al asignado de memorpaĝoj en batreĝimo. Plibonigita kaŝmemorefikeco.
    • F2FS aldonas opcion por funkcii en nurlegebla reĝimo kaj efektivigas kunpremitan blokan kaŝmemorreĝimon (compress_cache) por plibonigi hazardan legan rendimenton. Subteno estis efektivigita por kunpremi dosierojn mapitajn al memoro per la operacio mmap(). Por elekte malebligi dosierkunpremadon bazitan sur masko, nova munta opcio nocompress estis proponita.
    • Laboro estis farita en la exFAT-ŝoforo por plibonigi kongruon kun iu stokado de cifereca fotilo.
    • Aldonita la sistemvoko quotactl_fd(), kiu ebligas al vi administri kvotojn ne per speciala aparato-dosiero, sed specifante dosierpriskribilon asociitan kun la dosiersistemo por kiu la kvoto estas aplikata.
    • La malnovaj ŝoforoj por blokaparatoj kun la IDE-interfaco estis forigitaj de la kerno; ili estis longe anstataŭigitaj per la libata subsistemo.
    • La "kruda" pelilo estis forigita de la kerno, provizante nebufritan aliron por bloki aparatojn per la /dev/raw-interfaco. Ĉi tiu funkcio estas delonge efektivigita en aplikaĵoj uzantaj la O_DIRECT-flagon.
  • Memoraj kaj sistemaj servoj
    • La taskoplanisto efektivigas novan planan reĝimon, SCHED_CORE, kiu ebligas al vi kontroli kiuj procezoj povas esti efektivigitaj kune sur la sama CPU-kerno. Ĉiu procezo povas esti asignita kuketo-identigilo kiu difinas la amplekson de fido inter procezoj (ekzemple, apartenanta al la sama uzanto aŭ ujo). Organizante kodan ekzekuto, la planisto povas certigi, ke unu CPU-kerno estas dividita nur inter procezoj asociitaj kun la sama posedanto, kiu povas esti uzata por bloki iujn Spectre-atakojn malhelpante fidindajn kaj nefidindajn taskojn funkcii per la sama SMT (Hyper Threading) fadeno. .
    • Por cgroup, subteno por la kill operacio estis efektivigita, kio permesas vin mortigi ĉiujn procezojn asociitaj kun la grupo samtempe (sendu SIGKILL) skribante "1" al la virtuala dosiero cgroup.kill.
    • Vastigitaj kapabloj rilataj al reagado al la detekto de dividitaj seruroj ("dividitaj seruroj") kiuj okazas dum aliro de nevicigitaj datenoj en memoro pro la fakto ke dum plenumado de atoma instrukcio, la datenoj transiras du CPU-kaŝmemorliniojn. Tia blokado kondukas al grava malpliigo de rendimento, do antaŭe eblis perforte ĉesigi la aplikaĵon, kiu kaŭzis la blokadon. La nova eldono aldonas kernan komandlinian parametron "split_lock_detect=ratelimit:N", kiu ebligas al vi difini tutsisteman limon de la rapideco de ŝlosado de operacioj sekundo, post superado de kiu ajna procezo, kiu fariĝis la fonto de disigita seruro. estos devigita halti dum 20 ms anstataŭ ĉesi.
    • La cgroup-bandwidth-regilo CFS (CFS-bandwidth-regilo), kiu determinas kiom da procesoro-tempo povas esti asignita al ĉiu cgroup, efektivigas la kapablon difini temp-limigitajn limojn, kio permesas pli bonan reguligon de latentec-sentemaj laborkvantoj. Ekzemple, agordi cpu.cfs_quota_us al 50000 kaj cpu.cfs_period_us al 100000 permesos al grupo de procezoj malŝpari 100ms da CPU-tempo ĉiun 50ms.
    • Aldonita komenca infrastrukturo por krei BPF-programo-ŝargilojn, kiuj plu permesos la ŝarĝon de nur BPF-programoj subskribitaj per fidinda cifereca ŝlosilo.
    • Aldonita nova futex-operacio FUTEX_LOCK_PI2, kiu uzas monotonan tempigilon por kalkuli tempon, kiu konsideras la tempon pasigitan de la sistemo en dormreĝimo.
    • Por la arkitekturo RISC-V, subteno por grandaj memorpaĝoj (Transparent Huge-Pages) kaj la kapablo uzi la KFENCE-mekanismon por detekti erarojn dum laborado kun memoro estas efektivigitaj.
    • La madvise() sistemvoko, kiu disponigas rimedon por optimumigi procezmemoradministradon, aldonis la MADV_POPULATE_READ kaj MADV_POPULATE_WRITE flagojn por generi "paĝfaŭlton" sur ĉiuj memorpaĝoj mapitaj por legi aŭ skribi operaciojn sen farado de reala legado aŭ skribo (antaŭfaŭlto). ). La uzo de flagoj povas esti utila por redukti prokrastojn en la ekzekuto de la programo, pro la iniciatema ekzekuto de la "paĝa faŭlto" prizorganto por ĉiuj neasignitaj paĝoj samtempe, sen atendi la realan aliron al ili.
    • La kunit-unua testa sistemo aldonis subtenon por fari testojn en la QEMU-medio.
    • Novaj spuriloj estis aldonitaj: "osnoise" por spuri aplikaĵmalfruojn kaŭzitajn de interrompa uzado, kaj "timerlat" por montri detalajn informojn pri prokrastoj kiam vekiĝo de tempigilo signalo.
  • Virtualigo kaj Sekureco
    • La sistemvoko memfd_secret() estis aldonita por krei privatan memorareon en izolita adrespaco, videbla nur al la posedanta procezo, ne reflektita al aliaj procezoj, kaj ne rekte alirebla al la kerno.
    • En la filtrila sistemo seccomp sistemvoko, dum movo de blokantaj prizorgantoj en uzantspacon, estas eble uzi ununuran atomoperacion por krei dosierpriskribilon por izolita tasko kaj resendi ĝin dum prilaborado de sistemvoko. La proponita operacio solvas la problemon de interrompo de prizorganto en uzantspaco kiam signalo alvenas.
    • Aldonis novan mekanismon por administri rimedlimojn en la uzanta ID-nomspaco, kiu ligas individuajn rlimit-nombrilojn al uzanto en la "uzantnomspaco". La ŝanĝo solvas la problemon kun la uzo de komunaj rimedkalkuliloj kiam unu uzanto prizorgas procezojn en malsamaj ujoj.
    • La KVM-hiperviziero por ARM64-sistemoj aldonis la kapablon uzi la etendon MTE (MemTag, Memory Tagging Extension) en gastsistemoj, kiu ebligas vin ligi etikedojn al ĉiu memor-asigna operacio kaj organizi kontrolon de la ĝusta uzo de montriloj por bloki la ekspluaton de vundeblecoj kaŭzitaj de aliro jam liberigitaj memorblokoj, superfluas bufron, alirojn antaŭ inicialigo kaj uzo ekster la nuna kunteksto.
    • La instalaĵoj de Pointer Authentication de la ARM64-platformo nun povas esti agorditaj aparte por kerno kaj uzantspaco. La teknologio permesas vin uzi specialigitajn instrukciojn de ARM64 por kontroli revenadresojn uzante ciferecajn subskribojn, kiuj estas konservitaj en la neuzataj supraj pecoj de la montrilo mem.
    • Uzant-reĝima Linukso aldonis subtenon por uzado de ŝoforoj por PCI-aparatoj kun virtuala PCI-buso, efektivigita per la PCI-super-virtio-ŝoforo.
    • Por x86-sistemoj, aldonis subtenon por la virtio-iommu paravirtualigita aparato, permesante al IOMMU-petoj kiel ekzemple ATTACH, DETACH, MAP kaj UNMAP esti senditaj super la virtio-transporto sen kopiado de memorpaĝaj tabeloj.
    • Por Intel-CPUoj, de la familio Skylake ĝis Coffee Lake, la uzo de Intel TSX (Transactional Synchronization Extensions), kiuj provizas ilojn por plibonigi la agadon de multfadenaj aplikoj dinamike forigante nenecesajn sinkronigajn operaciojn, estas malebligita defaŭlte. Etendaĵoj estas malfunkciigitaj pro la ebleco de Zombieload-atakoj, kiuj manipulas informojn per triaj kanaloj, kiuj okazas dum la funkciado de la mekanismo TAA (TSX Asynchronous Abort).
  • Reta subsistemo
    • Integriĝo en la kernon de MPTCP (MultiPath TCP), etendaĵo de la TCP-protokolo por organizi la operacion de TCP-ligo kun livero de pakaĵoj samtempe laŭ pluraj itineroj tra malsamaj retaj interfacoj asociitaj kun malsamaj IP-adresoj. La nova eldono aldonas mekanismon por agordi viajn proprajn trafikajn haŝpolitikojn por IPv4 kaj IPv6 (multivoja hash-politiko), ebligante determini el uzantspaco kiuj kampoj en pakaĵoj, inkluzive de enkapsuligitaj, estos uzataj kiam oni kalkulas la haŝon kiu determinas la elekto de vojo por la pako.
    • Subteno por SOCK_SEQPACKET-ingoj (ordigita kaj fidinda dissendo de datagramoj) estis aldonita al la virtio virtuala transporto.
    • La kapabloj de la SO_REUSEPORT-ingomekanismo estis vastigitaj, kio permesas al pluraj aŭskultantaj ingoj konektiĝi al unu haveno samtempe por ricevi ligojn kun la distribuado de envenantaj petoj samtempe tra ĉiuj ingoj konektitaj per SO_REUSEPORT, kiu simpligas la kreadon de plurfadenaj servilaj aplikaĵoj. . La nova versio aldonas ilojn por translokigi kontrolon al alia ingo en kazo de malsukceso dum prilaborado de peto per la komence elektita ingo (solvas la problemon kun la perdo de individuaj konektoj dum rekomencado de servoj).
  • Ekipaĵo
    • La amdgpu-ŝoforo provizas subtenon por la nova AMD Radeon RX 6000 serio de GPU-oj, kodita "Beige Goby" (Navi 24) kaj "Yellow Carp", same kiel plibonigita subteno por la Aldebaran GPU (gfx90a) kaj Van Gogh APU. Aldonita la kapablo samtempe labori kun pluraj eDP-paneloj. Por APU Renoir, subteno por labori kun ĉifritaj bufroj en videomemoro (TMZ, Trusted Memory Zone) estis efektivigita. Aldonita subteno por varm-malkonekti grafikaj kartoj. Por Radeon RX 6000 (Navi 2x) GPU-oj kaj pli malnovaj AMD-GPU-oj, ASPM (Active State Power Management) subteno estas ebligita defaŭlte, kiu antaŭe estis ebligita nur por Navi 1x, Vega kaj Polaris GPU-oj.
    • Por AMD-fritoj, subteno por komuna virtuala memoro (SVM, komuna virtuala memoro) estis aldonita surbaze de la subsistemo HMM (Heterogenea memoradministrado), kiu permesas la uzon de aparatoj kun siaj propraj memoradministradunuoj (MMU, memoradministradunuo), kiu povas aliri ĉefmemoron. Aparte, uzante HMM, vi povas organizi komunan adresspacon inter la GPU kaj CPU, en kiu la GPU povas aliri la ĉefan memoron de la procezo.
    • Aldonis komencan subtenon por AMD Smart Shift-teknologio, kiu dinamike ŝanĝas CPU- kaj GPU-potencajn agordojn sur tekkomputiloj kun AMD-pecetaro kaj grafika karto por akceli rendimenton por videoludado, videoredaktado kaj 3D-bildigo.
    • La i915-ŝoforo por Intel-grafikaj kartoj inkluzivas subtenon por Intel Alderlake P-blatoj.
    • Aldonita drm/hyperv-ŝoforo por virtuala grafikadaptilo Hyper-V.
    • Aldonita subteno por la ĉiu-en-unu komputilo Raspberry Pi 400.
    • Aldonita dell-wmi-privateca ŝoforo por subteni la aparataron fotilon kaj mikrofonŝaltilojn inkluzivitajn en Dell-tekkomputiloj.
    • Por Lenovo-tekkomputiloj, WMI-interfaco estis aldonita por ŝanĝi BIOS-agordojn per sysfs /sys/class/firmware-attributes/.
    • Pligrandigita subteno por aparatoj kun USB4-interfaco.
    • Aldonita subteno por AmLogic SM1 TOACODEC, Intel AlderLake-M, NXP i.MX8, NXP TFA1, TDF9897, Rockchip RK817, Qualcomm Quinary MI2 kaj Texas Instruments TAS2505 sonkartoj kaj kodekoj. Plibonigita aŭdsubteno sur tekkomputiloj HP kaj ASUS. Aldonitaj diakiloj por redukti prokrastojn antaŭ ol aŭdo komenciĝas ludi sur USB-aparatoj.

fonto: opennet.ru

Aldoni komenton