Linukso-kerna eldono 5.15

Post du monatoj da evoluo, Linus Torvalds prezentis la liberigon de la Linukso-kerno 5.15. Rimarkindaj ŝanĝoj inkludas: nova NTFS-ŝoforo kun skribsubteno, ksmbd-modulo kun SMB-servila efektivigo, DAMON-subsistemo por memoralira monitorado, realtempa ŝlosa primitivuloj, fs-verity-subteno en Btrfs, process_mrelease-sistemvoko por malsatresponda sistemo memoro, fora atestadmodulo dm-ima.

La nova versio inkluzivas 13499 korektojn de 1888 programistoj, la flikgrandeco estas 42 MB (la ŝanĝoj influis 10895 dosierojn, 632522 linioj de kodo estis aldonitaj, 299966 linioj estis forigitaj). Proksimume 45% de ĉiuj ŝanĝoj lanĉitaj en 5.15 rilatas al aparataj ŝoforoj, proksimume 14% de ŝanĝoj rilatas al ĝisdatigo de kodo specifa por hardvararkitekturoj, 14% rilatas al la interkonekta stako, 6% rilatas al dosiersistemoj kaj 3% estas rilataj al internaj kernaj subsistemoj.

Ĉefaj novigoj:

  • Diska Subsistemo, I/O kaj Dosiersistemoj
    • La kerno adoptis novan efektivigon de la dosiersistemo NTFS, malfermita de Paragon Software. La nova ŝoforo povas funkcii en skribreĝimo kaj subtenas ĉiujn funkciojn de la nuna versio de NTFS 3.1, inkluzive de plilongigitaj dosier-atributoj, alirlistoj (ACLs), datuma kunprema reĝimo, efika laboro kun malplenaj spacoj en dosieroj (malabundaj) kaj reludado de ŝanĝoj de la protokolo por restarigi integrecon post misfunkciadoj.
    • La dosiersistemo Btrfs subtenas la fs-verity-mekanismon, kiu estas uzata por travideble kontroli la integrecon kaj aŭtentikecon de individuaj dosieroj uzante kriptajn haŝojn aŭ ŝlosilojn asociitajn kun la dosieroj, konservitaj en la metadatuma areo. Antaŭe, fs-verity estis nur havebla por Ext4 kaj F2fs dosiersistemoj.

      Btrfs ankaŭ aldonas subtenon por mapado de uzantidentigiloj por muntitaj dosiersistemoj (antaŭe subtenata por FAT, ext4 kaj XFS dosiersistemoj). Ĉi tiu funkcio permesas kompari dosierojn de specifa uzanto sur muntita eksterlanda sekcio kun alia uzanto sur la nuna sistemo.

      Aliaj ŝanĝoj al Btrfs inkluzivas: pli rapida aldono de ŝlosiloj al la dosierujo-indekso por plibonigi la rendimenton de la kreado de dosieroj; la kapablo labori raid0 per unu aparato, kaj raid10 kun du (ekzemple, dum la procezo de reagordo de la tabelo); opcio "rescue=ibadroots" por ignori malĝustan ampleksan arbon; akcelo de la "sendo" operacio; redukto de ŝlosaj konfliktoj dum renomaj operacioj; la kapablo uzi 4K-sektorojn en sistemoj kun 64K-memorpaĝa grandeco.

    • En XFS, la kapablo uzi datojn post 2038 en la dosiersistemo estis stabiligita. Efektivigis mekanismon por malfrua inodo-malaktivigo kaj subteno por prokrastita instalado kaj forigo de dosieraj atributoj. Por forigi problemojn, la kapablo malŝalti diskkvotojn por jam muntitaj subdiskoj estis forigita (vi povas perforte malŝalti kvotojn, sed la kalkulo asociita kun ili daŭros, do remuntado necesas por plene malŝalti ilin).
    • En EXT4, laboro estis farita por pliigi la efikecon de skribado de delalloc-bufroj kaj prilaborado de orfaj dosieroj kiuj daŭre ekzistas pro la fakto ke ili restas malfermitaj, sed ne estas asociitaj kun dosierujo. Pretigo de forĵetaj operacioj estis movita el la jbd2 kthread-fadeno por eviti blokadon de operacioj kun metadatenoj.
    • F2FS aldonis la opcion "discard_unit=bloko|segmento|sekcio" por ligi forĵetajn operaciojn (markante liberigitajn blokojn kiuj eble ne plu estas fizike stokitaj) al la paraleligo rilate al bloko, sektoro, segmento aŭ sekcio. Aldonita subteno por spurado de ŝanĝoj en I/O-latenteco.
    • La dosiersistemo EROFS (Etendebla Nurlegebla Dosiersistemo) aldonas rektan I/O-subtenon por dosieroj konservitaj sen kunpremado, same kiel fiemap-subtenon.
    • OverlayFS efektivigas ĝustan uzadon de la "neŝanĝebla", "nur almetas", "sync" kaj "noatime" muntoflagoj.
    • NFS plibonigis pritraktadon de situacioj kie la NFS-servilo ĉesas respondi al petoj. Aldonita la kapablo munti de servilo kiu estas jam uzata, sed alirebla per malsama retadreso.
    • Preparoj komenciĝis por reverkado de la FSCACHE-subsistemo.
    • Aldonita subteno por EFI-sekcioj kun ne-norma allokigo de GPT-tabloj.
    • La fanotify-mekanismo efektivigas novan flagon, FAN_REPORT_PIDFD, kiu igas pidfd esti inkluzivita en la metadatenoj resenditaj. Pidfd helpas pritrakti PID-reuzosituaciojn por pli precize identigi procezojn alirantajn monitoritajn dosierojn (pidfd estas rilata al specifa procezo kaj ne ŝanĝiĝas, dum PID povas esti asociita kun alia procezo post kiam la nuna procezo asociita kun tiu PID finiĝas).
    • Aldonis la kapablon aldoni muntajn punktojn al ekzistantaj komunaj grupoj al la sistemvoko move_mount(), kiu solvas problemojn pri konservado kaj restarigo de procezstato en CRIU kiam estas multoblaj muntaj spacoj kunhavitaj en izolitaj ujoj.
    • Aldonita protekto kontraŭ kaŝitaj raskondiĉoj, kiuj eble povus kaŭzi dosierkorupton dum plenumado de kaŝmemorlegadoj dum prilaborado de malplenoj en dosiero.
    • Subteno por deviga (deviga) dosierŝlosado, efektivigita per blokado de sistemvokoj kiuj kondukas al dosierŝanĝo, estis nuligita. Pro eblaj raskondiĉoj, tiuj kluzoj estis konsideritaj nefidindaj kaj estis malrekomenditaj antaŭ multaj jaroj.
    • La subsistemo LightNVM estis forigita, kio permesis rektan aliron al la SSD-disko, preterirante la emuladtavolon. LightNVM perdis sian signifon post la apero de NVMe-normoj kiuj zorgas pri zonigo (ZNS, Zoned Namespace).
  • Memoraj kaj sistemaj servoj
    • La subsistemo DAMON (Data Access MONitor) estis efektivigita, permesante al vi kontroli agadon rilate al aliro de datumoj en RAM rilate al elektita procezo funkcianta en uzantspaco. La subsistemo permesas analizi kiujn memorareojn la procezo aliris dum sia tuta operacio, kaj kiuj memorareoj restis nepostulitaj. DAMON havas malaltan CPU-ŝarĝon, malaltan konsumon de memoro, altan precizecon kaj antaŭvideblan konstantan superkoston, sendepende de grandeco. La subsistemo povas esti uzata kaj de la kerno por optimumigi memoradministradon, kaj de servaĵoj en uzantspaco por kompreni kion precize procezo faras kaj optimumigi memoruzon, ekzemple, liberigante troan memoron por la sistemo.
    • La sistemvoko process_mrelease estis efektivigita por akceli la procezon de liberigo de la memoro de procezo, kiu kompletigas sian ekzekuton. En normalaj cirkonstancoj, rimedo-liberigo kaj procezfino ne estas tujaj kaj povas esti prokrastitaj pro diversaj kialoj, malhelpante uzantspacan memorajn fruajn respondsistemojn kiel ekzemple oomd (provizita de systemd) kaj lmkd (uzita de Android). Nomante process_mrelease, tiaj sistemoj povas pli antaŭvideble ekigi la reakiron de memoro de malvolaj procezoj.
    • De la PREEMPT_RT-kernbranĉo, kiu evoluigas subtenon por realtempa funkciado, variaĵoj de primitivoj por organizado de seruroj mutex, ww_mutex, rw_semaphore, spinlock kaj rwlock, bazitaj sur la subsistemo RT-Mutex, estis transdonitaj. Ŝanĝoj estis aldonitaj al SLUB-slab-asignilo por plibonigi funkciadon en PREEMPT_RT-reĝimo kaj redukti la efikon al interrompoj.
    • Subteno por la atributo de la taskoplanisto SCHED_IDLE estis aldonita al cgroup, permesante al vi provizi ĉi tiun atributon al ĉiuj procezoj de grupo inkluzivita en specifa cgroup. Tiuj. ĉi tiuj procezoj nur funkcios kiam ne estas aliaj taskoj atendantaj esti ekzekutitaj en la sistemo. Male al fiksado de la SCHED_IDLE-atributo al ĉiu procezo individue, dum ligado de SCHED_IDLE al cgrupo, la relativa pezo de taskoj ene de la grupo estas konsiderata kiam elektas taskon por efektivigi.
    • La mekanismo por kontado pri memorkonsumo en cgroup estis vastigita kun la kapablo spuri kromajn kernajn datumstrukturojn, inkluzive de tiuj kreitaj por balotado, signalprilaborado kaj nomspacoj.
    • Aldonita subteno por nesimetria planado de taskoligado al procesorkernoj sur arkitekturoj en kiuj kelkaj CPUoj permesas plenumon de 32-bita taskoj, kaj kelkaj funkciigas nur en 64-bita reĝimo (ekzemple, ARM). La nova reĝimo permesas konsideri nur CPUojn, kiuj subtenas 32-bitajn taskojn, kiam vi planas 32-bitajn taskojn.
    • La io_uring nesinkrona I/O-interfaco nun subtenas malfermi dosierojn rekte en la fiksa dosiera indeksa tabelo, sen uzi dosierpriskribilon, kio ebligas signife akceli kelkajn specojn de operacioj, sed kontraŭas la tradician Unix-procezon de uzado de dosierpriskribiloj. malfermi dosierojn.

      io_uring por la subsistemo BIO (Block I/O Layer) efektivigas novan recikladmekanismon ("BIO-reciklado"), kiu reduktas superŝarĝon en la procezo de administrado de interna memoro kaj pliigas la nombron da prilaboritaj I/O-operacioj je sekundo je proksimume 10% . io_uring ankaŭ aldonas subtenon por la sistemvokoj mkdirat(), symlinkat() kaj linkat().

    • Por BPF-programoj, la kapablo peti kaj prilabori tempigilokazaĵojn estis efektivigita. Iteratoro por UNIX-ingoj estis aldonita, kaj la kapablo akiri kaj agordi ingo-opciojn por setsockopt estis efektivigita. BTF-dumpero nun subtenas tajpitajn datumojn.
    • Sur NUMA-sistemoj kun malsamaj specoj de memoro kiuj diferencas en rendimento, kiam libera spaco estas elĉerpita, forpelitaj memorpaĝoj estas translokigitaj de dinamika memoro (DRAM) al pli malrapida permanenta memoro (Persistent Memory) anstataŭe de forigo de ĉi tiuj paĝoj. Testoj montris, ke tiaj taktikoj kutime plibonigas agadon sur tiaj sistemoj. NUMA ankaŭ disponigas la kapablon asigni memorpaĝojn por procezo de elektita aro de NUMA-nodoj.
    • Por la ARC-arkitekturo, subteno por tri- kaj kvar-nivelaj memorpaĝaj tabeloj estis efektivigita, kio plue ebligos subtenon por 64-bitaj ARC-procesoroj.
    • Por la s390-arkitekturo, la kapablo uzi la KFENCE-mekanismon por detekti erarojn dum laborado kun memoro estis efektivigita, kaj subteno por la KCSAN-raskondiĉdetektilo estis aldonita.
    • Aldonita subteno por indeksado de la listo de mesaĝoj eligo per printk(), ebligante vin retrovi ĉiujn tiajn mesaĝojn samtempe kaj spuri ŝanĝojn en uzantspaco.
    • mmap () forigis subtenon por la opcio VM_DENYWRITE, kaj la kernkodo estis forigita de uzado de la MAP_DENYWRITE-reĝimo, kiu reduktis la nombron da situacioj kiuj kondukas al blokado de skribaĵoj al dosiero kun la ETXTBSY-eraro.
    • Nova speco de ĉekoj, "Eventaj enketoj", estis aldonita al la spura subsistemo, kiu povas esti alfiksita al ekzistantaj spuraj eventoj, difinante vian propran eligformaton.
    • Dum konstruado de la kerno uzante la Clang-kompililon, la defaŭlta asemblero de la LLVM-projekto nun estas uzata.
    • Kiel parto de projekto por forigi la kernon de kodo, kiu kondukas al avertoj eligitaj de la kompililo, eksperimento estis farita kun la "-Werror" reĝimo ebligita defaŭlte, en kiu la avertoj de la kompililo estas procesitaj kiel eraroj. En preparo por la eldono 5.15, Linus komencis akcepti nur ŝanĝojn kiuj ne rezultigis avertojn dum konstruado de la kerno kaj ebligis konstruaĵon per "-Werror", sed tiam konsentis ke tia decido estis trofrua kaj prokrastis ebligi "-Werror" defaŭlte. . La inkludo de la flago "-Werror" dum asembleo estas kontrolita per la parametro WERROR, kiu estas agordita al COMPILE_TEST defaŭlte, t.e. Nuntempe ĝi estas ebligita nur por testaj konstruoj.
  • Virtualigo kaj Sekureco
    • Nova dm-ima prizorganto estis aldonita al Device Mapper (DM) kun la efektivigo de fora atestadmekanismo bazita sur la subsistemo IMA (Integrity Measurement Architecture), kiu permesas al ekstera servo kontroli la staton de kernaj subsistemoj por certigi ilian aŭtentecon. . En praktiko, dm-ima permesas krei stokadojn per Device Mapper, kiuj estas ligitaj al eksteraj nubaj sistemoj, en kiuj la valideco de la lanĉita DM-cela agordo estas kontrolita per IMA.
    • prctl() efektivigas novan opcion PR_SPEC_L1D_FLUSH, kiu kiam ĝi estas ebligita, igas la kernon forĵeti la enhavon de la unuanivela (L1D) kaŝmemoro ĉiufoje kiam okazas kunteksta ŝanĝado. Ĉi tiu reĝimo permesas, selekteme por la plej gravaj procezoj, efektivigi plian protekton kontraŭ la uzo de flankaj-kanalaj atakoj efektivigitaj por determini datumojn, kiuj instaliĝis en la kaŝmemoro kiel rezulto de vundeblecoj kaŭzitaj de spekula ekzekuto de instrukcioj en la CPU. La kosto de ebligo de PR_SPEC_L1D_FLUSH (ne ebligita defaŭlte) estas grava agado-puno.
    • Eblas konstrui la kernon kun la aldono de la flago "-fzero-call-used-regs=used-gpr" al GCC, kiu certigas, ke ĉiuj registroj estas restarigitaj al nulo antaŭ ol redoni kontrolon de la funkcio. Ĉi tiu opcio permesas protekti vin kontraŭ informa elfluado de funkcioj kaj redukti je 20% la nombron da blokoj taŭgaj por konstrui ROP (Return-Oriented Programming) aparatoj en ekspluataĵoj.
    • La kapablo konstrui kernojn por la ARM64-arkitekturo en la formo de klientoj por la hiperviziero Hyper-V estis efektivigita.
    • Nova ŝofor-disvolva kadro "VDUSE" estas proponita, kiu permesas efektivigi virtualajn blokajn aparatojn en uzantspaco kaj uzi Virtio kiel transporton por aliro de gastsistemoj.
    • Aldonita Virtio-ŝoforo por la I2C-buso, ebligante kopii I2C-regilojn en paravirtualiza reĝimo uzante apartajn backends.
    • Aldonita Virtio-ŝoforo gpio-virtio por permesi al gastoj aliri GPIO-liniojn provizitajn de la gastiga sistemo.
    • Aldonis la kapablon limigi aliron al memorpaĝoj por aparataj ŝoforoj kun DMA-subteno en sistemoj sen I/O MMU (memor-administra unuo).
    • La KVM-hiperviziero havas la kapablon montri statistikojn en la formo de liniaj kaj logaritmaj histogramoj.
  • Reta subsistemo
    • La modulo ksmbd estis aldonita al la kerno kun la efektivigo de dosierservilo uzante la SMB3-protokolon. La modulo kompletigas la SMB-klient-efektivigon antaŭe haveblan en la kerno kaj, male al la SMB-servilo funkcianta en uzantspaco, estas pli efika laŭ rendimento, memorkonsumo kaj integriĝo kun altnivelaj kernaj kapabloj. Ksmbd estas elmontrita kiel alt-efikeca, enigita-preta Samba etendo, kiu integriĝas kun Samba-iloj kaj bibliotekoj laŭbezone. La kapabloj de ksmbd inkluzivas plibonigitan subtenon por distribuata dosiera kaŝmemorteknologio (SMB-luoj) sur lokaj sistemoj, kiuj povas signife redukti trafikon. En la estonteco, ili planas aldoni subtenon por RDMA ("smbdirect") kaj protokolaj etendoj rilataj al pliigo de la fidindeco de ĉifrado kaj konfirmo per ciferecaj subskriboj.
    • La CIFS-kliento jam ne subtenas NTLM kaj la pli malfortajn DES-bazitajn konfirmalgoritmojn uzitajn en la SMB1-protokolo.
    • Multicast-subteno estas efektivigita en la efektivigo de retaj pontoj por vlanoj.
    • La liga pelilo, uzata por kunigi retajn interfacojn, aldonis subtenon por la subsistemo XDP (eXpress Data Path), kiu ebligas al vi manipuli retajn pakaĵojn en la stadio antaŭ ol ili estas prilaboritaj de la Linukso-kerna reto-stako.
    • La sendrata stako mac80211 subtenas 6GHZ STA (Speciala Provizora Rajtigo) en LPI, SP kaj VLP-reĝimoj, same kiel la kapablon agordi individuan TWT (Celan Vektempon) en alirpunktoreĝimo.
    • Aldonita subteno por la MCTP (Management Component Transport Protocol), uzita por interagado inter administraj regiloj kaj rilataj aparatoj (gastigaj procesoroj, ekstercentraj aparatoj, ktp.).
    • 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 subtenon por adresoj en fullmesh-reĝimo.
    • Pritraktiloj por retfluoj enkapsuligitaj en la protokolo SRv6 (Segment Routing IPv6) estis aldonitaj al netfilter.
    • Aldonita sockmap-subteno por Unikso-fluaj ingoj.
  • Ekipaĵo
    • La amdgpu-ŝoforo subtenas Cyan Skillfish APU-ojn (ekipitajn per Navi 1x GPU-oj). La Yellow Carp APU nun subtenas videokodekojn. Plibonigita Aldebaran GPU-subteno. Aldonitaj novaj mapidentigiloj bazitaj sur GPU Navi 24 "Beige Goby" kaj RDNA2. Plibonigita efektivigo de virtualaj ekranoj (VKMS) estas proponita. Subteno por monitorado de la temperaturo de AMD Zen 3-fritoj estis efektivigita.
    • La amdkfd-ŝoforo (por diskretaj GPUoj, kiel ekzemple Polaris) efektivigas komunan virtualan memormanaĝeron (SVM, komuna virtuala memoro) bazitan sur la HMM (Heterogenea memoradministrado) subsistemo, 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.
    • La i915-ŝoforo por Intel-vidkartoj vastigas la uzon de la TTM-videomemoradministrilo kaj inkluzivas la kapablon administri elektrokonsumon bazitan sur GuC (Grafika mikroregilo). Preparoj komenciĝis por la efektivigo de subteno por la grafika karto Intel ARC Alchemist kaj Intel Xe-HP GPU.
    • La nouveau-ŝoforo efektivigas kontraŭluman kontrolon por eDP-paneloj uzante DPCD (DisplayPort Configuration Data).
    • Aldonita subteno por Adreno 7c Gen 3 kaj Adreno 680 GPU-oj al la msm-ŝoforo.
    • La IOMMU-ŝoforo estas efektivigita por la Apple M1-peceto.
    • Aldonita sonpelilo por sistemoj bazitaj sur APU-oj de AMD Van Gogh.
    • La Realtek R8188EU-ŝoforo estis aldonita al la sursceniga branĉo, kiu anstataŭigis la malnovan version de la ŝoforo (rtl8188eu) por la sendrataj blatoj Realtek RTL8188EU 802.11 b/g/n.
    • La ocp_pt-ŝoforo estas inkluzivita por la PCIe-tabulo evoluigita de Meta (Facebook) kun la efektivigo de miniatura atomhorloĝo kaj GNSS-ricevilo, kiuj povas esti uzataj por organizi la funkciadon de apartaj ekzaktaj tempaj sinkronigaj serviloj.
    • Aldonita subteno por Sony Xperia 10II (Snapdragon 665), Xiaomi Redmi 2 (Snapdragon MSM8916), Samsung Galaxy S3 (Snapdragon MSM8226), Samsung Gavini/Codina/Kyle-poŝtelefonoj.
    • Aldonita subteno por ARM SoС kaj NVIDIA Jetson TX2 NX Developer Kit, Sancloud BBE Lite, PicoITX, DRC02, SolidRun SolidSense, SKOV i.MX6, Nitrogen8, Traverse Ten64, GW7902, Microchip SAMA7, ualcomm Snapdragon Renes636, HSM8150 tabuloj -3G/M2e-3G, Marvell CN2x, ASpeed ​​​​AST913 (tabuloj de Facebook Cloudripper, Elbert kaj Fuji), 2600KOpen STiH4-b418.
    • Aldonita subteno por Gopher 2b LCD-paneloj, EDT ETM0350G0DH6/ETMV570G2DHU, LOGIC Technologies LTTD800480070-L6WH-RT, Multi-Innotechnology MI1010AIT-1CP1, Innolux EJ030NA 3.0, ilitek EJ9341NA 3300, ilitek EJ33NK20, Samsung iliC7430K2401 XNUMX, Samsung DBXNUMX, WideChips WSXNUMX .
    • Aldonita LiteETH-ŝoforo kun subteno por Ethernet-regiloj uzataj en LiteX-softvaro SoCs (por FPGAoj).
    • Malalta latenta opcio estis aldonita al la usb-aŭdio-ŝoforo por kontroli la inkludon de operacio en la minimuma latenta reĝimo. Ankaŭ aldonis quirk_flags opcion por pasigi aparato-specifajn agordojn.

Samtempe, Latin American Free Software Foundation formis version de la tute libera kerno 5.15 - Linux-libre 5.15-gnu, malplenigita de elementoj de firmware kaj ŝoforoj enhavantaj neliberajn komponantojn aŭ kodsekciojn, kies amplekso estas limigita. de la fabrikanto. La nova eldono efektivigas la eligon de mesaĝo al la protokolo pri la fino de purigado. Problemoj kun generado de pakaĵoj uzante mkspec estis solvitaj, subteno por klakaj pakaĵoj estis plibonigita. Forigis iujn avertojn montritajn dum prilaborado de la kapdosiero firmware.h. Permesis la eligon de iuj specoj de avertoj ("format-extra-args", komentoj, neuzataj funkcioj kaj variabloj) dum konstruado en la "-Werror" reĝimo. Aldonita gehc-achc ŝoforpurigado. Ĝisdatigita blob-purigadkodo en ŝoforoj kaj subsistemoj adreno, btusb, btintel, brcmfmac, aarch64 qcom. Purigado de ŝoforoj prism54 (forigita) kaj rtl8188eu (anstataŭigita per r8188eu) estis ĉesigita.

fonto: opennet.ru

Aldoni komenton