Linukso-kerno 5.14

Linukso-kerno 5.14

Post du monatoj da evoluo, Linus Torvalds enkondukita liberigo de kerno Linukso 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.

Ĉefa novigoj:

  • disksubsistemo, enigo/eligo kaj dosiersistemoj:
    • por cgroup efektivigita nova I/O-prioritato-regilo - rq-qos, kiu povas kontroli la prilaboran prioritaton de petoj por bloki aparatojn generitajn de membroj de ĉiu cgroup. Nova prioritata regilo-subteno estis aldonita al la mq-deadline I/O-planilo;
    • sur ext4 dosiersistemo efektivigita nova ioctl-komando EXT4_IOC_CHECKPOINT, kiu devigas ĉiujn pritraktatajn transakciojn de la protokolo kaj rilataj bufroj al disko, kaj ankaŭ anstataŭigas la areon uzatan de la protokolo en stokado. La ŝanĝo estis preparita kiel parto de iniciato malhelpi informlikojn de dosiersistemoj;
    • en Btrfs enkondukita Efikecoptimumigoj: Forigante nenecesan registradon de etenditaj atributoj dum fsync-ekzekuto, la agado de intensaj operacioj kun plilongigitaj atributoj pliiĝis ĝ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 relaborita efektivigo de bufrokaŝmemoro, kiu estas transdonita al la asigno de memorpaĝoj en batreĝimo. Plibonigita kaŝmemorefikeco;
    • F2FS aldonis eblon labori en nurlegebla reĝimo kaj efektivigis 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 per masko, nova munta opcio nocompress estis proponita;
    • laboro estis farita en la eksFAT-ŝoforo por plibonigi kongruon kun la stokado de iuj ciferecaj fotiloj;
    • aldonita sistemvoko quotactl_fd(), kiu ebligas al vi administri kvotojn ne per speciala aparatdosiero, sed specifante dosierpriskribilon asociitan kun la dosiersistemo por kiu la kvoto estas aplikata;
    • Malnovaj peliloj por blokaparatoj kun la IDE-interfaco estis forigitaj de la kerno; ili estis longe anstataŭigitaj per la libata subsistemo. Subteno por malnovaj aparatoj estis plene konservita, la ŝanĝoj koncernas nur la kapablon uzi malnovajn ŝoforojn, kiam uzado de kiuj la diskoj estis nomitaj /dev/hd*, kaj ne /dev/sd*;
    • 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 flagon O_DIRECT;
  • memoraj kaj sistemaj servoj:
    • nova plana reĝimo estis efektivigita en la taskoplanilo SCHED_CORE, kiu permesas vin kontroli kiuj procezoj povas funkcii 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 ekzekutadon, 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 la cgroup-mekanismo, subteno por la kill operacio estis efektivigita, kiu permesas vin mortigi ĉiujn procezojn asociitaj kun la grupo samtempe (sendu SIGKILL) skribante "1" al la virtuala dosiero cgroup.kill;
    • vastigitaj kapabloj ligitaj al respondado al la detekto de dividitaj seruroj ("dividitaj seruroj") kiuj okazas dum aliro nevicigitaj datenoj en memoro pro la fakto ke dum efektivigado de atominstrukcio, 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 la kernan komandlinian parametron "split_lock_detect=ratelimit:N", kiu ebligas al vi difini tutsisteman limon pri la rapideco de ŝlosado de operacioj sekundo, post superado de kiu ajna procezo, kiu fariĝis la fonto de disigita seruro. esti devigita halti dum 20 ms anstataŭ ĉesigi;
    • La cgroup-bandwidth-regilo CFS (CFS-bandwidth-regilo), kiu determinas kiom multe da procesortempo povas esti asignita al ĉiu cgroup, havas la kapablon difini limojn limigitajn per antaŭfiksita daŭro de ago, kiu permesas pli bonan reguligon de latentec-sentemaj ŝarĝoj. 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;
    • aldonis komenca infrastrukturo por krei BPF-programo-ŝargilojn, kiuj plue permesos elŝuton de nur BPF-programoj subskribitaj per fidinda cifereca ŝlosilo;
    • aldonis novan futex-operacion FUTEX_LOCK_PI2, kiu uzas monotonan tempigilon por kalkuli la tempodaŭron, 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 identigi erarojn kiam oni laboras kun memoro;
    • en la madvise() sistemvokon, kiu disponigas rimedon por optimumigi procezmemoradministradon, aldonis MADV_POPULATE_READ kaj MADV_POPULATE_WRITE flagoj por generi "paĝfaŭlton" sur ĉiuj memorpaĝoj mapitaj por legado aŭ skriba operacioj, sen elfarado de reala legado aŭ skribo (antaŭafekto). La uzo de flagoj povas esti utila por redukti malfruojn en la ekzekuto de la programo, danke al la iniciatema ekzekuto de la prizorganto "paĝa misfunkciado" por ĉiuj neasignitaj paĝoj samtempe, sen atendi la realan aliron al ili;
    • en unutesta sistemo kunit aldonis subteno por ruli testojn en la QEMU-medio;
    • novaj spuriloj aldonis: "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:
    • aldonis sistema voko memfd_secret(), kiu permesas krei privatan memorareon en izolita adresspaco, videbla nur por la posedanto-procezo, ne reflektita en aliaj procezoj kaj ne rekte alirebla por la kerno;
    • en la filtrila sistemo seccomp sistemvoko, kiam oni movas serurprizorgulojn en uzantspacon, estas eble uzi unu atoman operacion por krei dosierpriskribilon por izolita tasko kaj resendi ĝin dum prilaborado de sistemvoko. La proponita operacio solvas la problemo kun interrompo de la prizorganto en uzantspaco kiam signalo alvenas;
    • aldonis nova mekanismo administri rimedlimigon 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 memora asigno operacio kaj organizi kontrolon de la ĝusta uzo de montriloj por bloki la ekspluaton de vundeblecoj kaŭzitaj de aliro jam liberigitaj memorblokoj, superfluoj bufroj, aliroj antaŭ inicialigo kaj uzo ekster la nuna kunteksto;
    • Pointer Authentication provizita de la ARM64-platformo nun povas esti agordita aparte por kerno kaj uzantspaco. La teknologio permesas uzi specialigitajn ARM64-instrukciojn por kontroli revenadresojn uzante ciferecajn subskribojn, kiuj estas konservitaj en la neuzataj supraj bitoj de la montrilo mem;
    • en Uzantreĝimo Linukso aldonis subteno por la uzo de ŝoforoj por PCI-aparatoj kun virtuala PCI-buso, efektivigita per la ŝoforo PCI-over-virtio;
    • por x86-sistemoj, aldonis subtenon por la virtio-iommu paravirtualigita aparato, kiu ebligas al vi sendi IOMMU-petojn, kiel ATTACH, DETACH, MAP kaj UNMAP, super la virtio-transporto sen emulado 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 malŝaltitaj pro la ebleco de atakoj Zombieload, manipulante la elfluon de informoj per triaj kanaloj, kiu okazas dum la funkciado de la mekanismo por nesinkrona interrompo de operacioj (TAA, TSX Asynchronous Abort);
  • reto-subsistemo:
    • daŭra 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. En la nova numero aldonis mekanismo por agordi viajn proprajn trafikajn haŝpolitikojn por IPv4 kaj IPv6 (multivoja hash-politiko), ebligante de la uzantspaco determini kiuj kampoj en pakaĵoj, inkluzive de enkapsuligitaj, estos uzataj kiam oni kalkulas la haŝon kiu determinas la elekton de vojo. por la pako;
    • ingosubteno estis aldonita al la virtuala transportvirtio SOCK_SEQPACKET (orda kaj fidinda transdono de datagramoj);
    • 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. . En la nova versio aldonis rimedo por translokigi kontrolon al alia ingo en kazo de malsukceso dum prilaborado de peto de la komence elektita ingo (solvas la problemon kun la perdo de individuaj konektoj dum rekomencado de servoj);
  • ekipaĵo:
    • en la amdgpu-ŝoforo efektivigita subteno por la nova AMD Radeon RX 6000 serio de GPUoj, kodita "Beige Goby" (Navi 24) kaj "Yellow Carp", same kiel plibonigita subteno por 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, subteno por la ASPM (Active State Power Management) elektroŝpara mekanismo 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 HMM (Heterogeneous memory management) subsistemo, kiu permesas la uzon de aparatoj kun siaj propraj memoradministradunuoj (MMU, memoradministradunuo), kiu povas aliri ĉefmemoron. Inkluzive de uzado de 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 teknologian subtenon AMD Smart Shift, kiu dinamike ŝanĝas la energikonsumajn parametrojn de la CPU kaj GPU sur tekkomputiloj kun pecetaro kaj AMD-grafika karto por akceli rendimenton dum videoludado, videoredaktado kaj 3D bildigo;
    • en la i915-ŝoforo por Intel-vidkartoj inkluzivita subteno por Intel Alderlake P-blatoj;
    • aldonita drm/hyperv-ŝoforo por la virtuala grafikadaptilo Hyper-V;
    • aldonis simpledrm-grafika pelilo kiu uzas la EFI-GOP aŭ VESA-frambuffer provizitan de la UEFI-firmvaro aŭ BIOS por eligo. La ĉefa celo de la ŝoforo estas disponigi grafikajn produktaĵkapablojn dum la komencaj stadioj de lanĉo, antaŭ ol plena DRM-ŝoforo povas esti uzita. La ŝoforo ankaŭ povas esti uzata kiel provizora solvo por ekipaĵo, kiu ankoraŭ ne havas denaskajn DRM-ŝoforojn;
    • aldonis tut-en-unu komputila subteno Frambo Pi 400;
    • Aldonita dell-wmi-privateca ŝoforo por subteni la fotilon kaj mikrofonajn aparatajn ŝaltilojn inkluzivitajn en Dell-tekkomputiloj;
    • por Lenovo-tekkomputiloj aldonis WMI-interfaco por ŝanĝi BIOS-parametrojn per sysfs /sys/class/firmware-attributes/;
    • disetendiĝis subteno por aparatoj kun USB4-interfaco;
    • aldonis subteno por sonkartoj kaj kodekoj AmLogic SM1 TOACODEC, Intel AlderLake-M, NXP i.MX8, NXP TFA1, TDF9897, Rockchip RK817, Qualcomm Quinary MI2 kaj Texas Instruments TAS2505. Plibonigita aŭdsubteno sur tekkomputiloj HP kaj ASUS. Aldonita flikoj por redukti prokrastojn antaŭ ol aŭdo komenciĝas ludi sur aparatoj kun USB-interfaco.

Fonto - opennet.ru.

fonto: linux.org.ru