Linukso-kerna eldono 5.19

Post du monatoj da evoluo, Linus Torvalds prezentis la liberigon de la Linukso-kerno 5.19. Inter la plej rimarkindaj ŝanĝoj: subteno por la LoongArch-procesora arkitekturo, integriĝo de "BIG TCP" flikoj, laŭpeta reĝimo en fscache, kodo forigo por subteni la a.out formaton, la kapablo uzi ZSTD por firmware kunpremo, interfaco por administri memorforpeladon de uzantspaco, pliigante la fidindecon kaj efikecon de la pseŭdo-hazarda nombro-generatoro, subteno por Intel IFS (En-Kampa Skanado), AMD SEV-SNP (Secure Nested Paging), Intel TDX (Fidaj Domajnaj Etendaĵoj) kaj ARM SME (Scalable Matrix Extension) etendaĵoj.

En la anonco, Linus diris, ke plej verŝajne la venonta kernel-eldono estos numerita 6.0, ĉar la branĉo 5.x amasigis sufiĉe da ĵetoj por ŝanĝi la unuan numeron en la versio-numero. La numera ŝanĝo estas efektivigita pro estetikaj kialoj kaj estas formala paŝo kiu malpezigas malkomforton pro la amasiĝo de granda nombro da temoj en la serio.

Linus ankaŭ menciis, ke li uzis Apple-tekkomputilon bazitan sur ARM64-arkitekturo (Apple Silicon) kun Linukso-medio bazita sur la Asahi Linukso-distribuo por krei la liberigon. Ĝi ne estas la ĉefa laborstacio de Linus, sed li uzis la platformon por testi ĝian taŭgecon por kerna laboro kaj por certigi, ke li povus produkti kerneldonojn dum vojaĝado kun malpeza tekokomputilo ĉemane. Antaŭe, antaŭ multaj jaroj, Linus havis sperton uzante Apple-ekipaĵon por disvolviĝo - li iam uzis komputilon bazitan sur la CPU ppc970 kaj tekkomputilon Macbook Air.

La nova versio inkluzivas 16401 korektojn de 2190 programistoj (en la lasta eldono estis 16206 korektoj de 2127 programistoj), la flikgrandeco estas 90 MB (la ŝanĝoj influis 13847 dosierojn, 1149456 linioj de kodo estis aldonitaj, 349177 estis forigitaj). Proksimume 39% de ĉiuj ŝanĝoj lanĉitaj en 5.19 rilatas al aparataj ŝoforoj, proksimume 21% de ŝanĝoj rilatas al ĝisdatigo de kodo specifa por hardvararkitekturoj, 11% rilatas al la interkonekta stako, 4% rilatas al dosiersistemoj kaj 3% estas rilataj al internaj kernaj subsistemoj.

Ŝlosilaj novigoj en kerno 5.19:

  • Diska Subsistemo, I/O kaj Dosiersistemoj
    • La dosiersistemo EROFS (Enhanced Read-Only File System), destinita por uzo sur nurlegeblaj subdiskoj, estis konvertita por uzi la fscache-subsistemon, kiu disponigas datuman kaŝmemoron. La ŝanĝo signife plibonigis la agadon de sistemoj en kiuj granda nombro da ujoj estas lanĉitaj de EROFS-bazita bildo.
    • Laŭpostulelega reĝimo estis aldonita al la fscache-subsistemo, kiu estas uzata por optimumigi EROFS. La nova reĝimo permesas organizi legadon de kaŝmemoro de dosiersistemaj bildoj situantaj en la loka sistemo. Kontraste al la komence disponebla reĝimo de operacio, kiu estas temigis kaŝmemoron en la loka dosiersistemo de datumoj transdonitaj tra retaj dosiersistemoj, la "postpeta" reĝimo delegas la funkciojn de reakiro de datumoj kaj skribi ĝin al la kaŝmemoro al aparta. fona procezo kuranta en uzantspaco.
    • XFS disponigas la kapablon stoki miliardojn da etenditaj atributoj en i-nodo. La maksimuma nombro da etendaĵoj por unu dosiero estis pliigita de 4 miliardoj al 247. Reĝimo estis efektivigita por atome ĝisdatigi plurajn plilongigitajn dosierajn atributojn samtempe.
    • La dosiersistemo Btrfs optimumigis laboron kun seruroj, kio permesis proksimume 7% pliiĝon en rendimento dum skribado rekte en nowait-reĝimo. La agado de operacioj en NOCOW-reĝimo (sen kopio-sur-skribi) pliiĝas je proksimume 3%. La ŝarĝo sur la paĝa kaŝmemoro dum rulado de la "sendu" komando estis reduktita. La minimuma grandeco de subpaĝoj estis reduktita de 64K al 4K (subpaĝoj pli malgrandaj ol kernaj paĝoj povas esti uzataj). Transiro estis farita de uzado de radixarbo al la XArrays-algoritmo.
    • Reĝimo estis aldonita al la NFS-servilo por etendi la konservadon de la ŝlosa stato starigita de kliento, kiu ĉesis respondi al petoj. La nova reĝimo permesas prokrasti seruron ĝis unu tago krom se alia kliento petas konkurantan seruron. En normala reĝimo, la blokado estas forigita 90 sekundojn post kiam la kliento ĉesas respondi.
    • La okazaĵa spura subsistemo en la fanotify FS efektivigas la FAN_MARK_EVICTABLE flagon, per kiu vi povas malŝalti alpingli celajn i-nodojn en la kaŝmemoro, ekzemple, por ignori subbranĉojn sen alpingli iliajn partojn en la kaŝmemoro.
    • La ŝoforo por la FAT32-dosiersistemo aldonis subtenon por akiri informojn pri la tempo de dosierkreado per la statx-sistemvoko kun la efektivigo de pli efika kaj funkcia versio de stat(), kiu resendas plilongigitajn informojn pri la dosiero.
    • Signifaj optimumigoj estis faritaj al la eksFAT-ŝoforo por permesi samtempan malplenigon de grupo de sektoroj kiam la "dirsync" reĝimo estas aktiva, anstataŭe de sinsekva sektoro-post-sektora malplenigo. Reduktante la nombron da blokpetoj post optimumigo, la agado de kreado de granda nombro da dosierujoj sur la SDa karto pliiĝis je pli ol 73-85%, depende de la grandeco de la areto.
    • La kerno inkluzivas la unuan korektan ĝisdatigon al la ntfs3-ŝoforo. Ĉar ntfs3 estis inkluzivita en la 5.15-kerno lastan oktobron, la ŝoforo ne estis ĝisdatigita kaj komunikado kun la programistoj perdiĝis, sed la programistoj nun rekomencis publikigi ŝanĝojn. La proponitaj flikoj eliminis erarojn kondukantajn al memorfuĝoj kaj kraŝoj, solvis problemojn kun xfstests-ekzekuto, purigis neuzatan kodon kaj riparis tajperarojn.
    • Por OverlayFS, la kapablo mapi uzantidentigilojn de surmuntitaj dosiersistemoj estis efektivigita, kiu estas uzata por egali la dosierojn de specifa uzanto sur surmuntita eksterlanda sekcio kun alia uzanto sur la nuna sistemo.
  • Memoraj kaj sistemaj servoj
    • Aldonita komenca subteno por la LoongArch-instrukcia arkitekturo uzita en la Loongson 3 5000 procesoroj, kiu efektivigas la novan RISC ISA, similan al MIPS kaj RISC-V. La LoongArch-arkitekturo haveblas en tri gustoj: senvestigita 32-bita (LA32R), regula 32-bita (LA32S), kaj 64-bita (LA64).
    • Forigita kodo por subteni la plenumeblan dosierformaton a.out, kiu estis malrekomendita en eldono 5.1. La a.out formato estas delonge malrekomendita en Linuksaj sistemoj, kaj generacio de a.out dosieroj ne estas subtenata de modernaj iloj en defaŭltaj Linuksaj agordoj. La ŝargilo por a.out dosieroj povas esti efektivigita tute en uzantspaco.
    • Subteno por x86-specifaj startopcioj estis nuligita: nosp, nosmap, nosmep, noexec kaj noclflush).
    • Subteno por la malmoderna CPU h8300-arkitekturo (Renesas H8/300), kiu longe restis sen subteno, estis nuligita.
    • 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. Tiaj blokadoj kondukas al signifa malpliigo de rendimento. Se antaŭe, defaŭlte, la kerno eligus averton kun informoj pri la procezo, kiu kaŭzis la blokadon, nun la problema procezo estos plu malrapidigita por konservi la agadon de la resto de la sistemo.
    • Aldonita subteno por la mekanismo IFS (In-Field Scan) efektivigita en Intel-procesoroj, kiu ebligas al vi ruli malaltnivelajn CPU-diagnozajn testojn, kiuj povas identigi problemojn, kiuj ne estas detektitaj per normaj iloj bazitaj sur eraraj korektaj kodoj (ECC) aŭ egalecaj bitoj. . La testoj faritaj estas en la formo de elŝutebla firmvaro, dizajnita simile al mikrokodaj ĝisdatigoj. Testrezultoj haveblas per sysfs.
    • Aldonis la kapablon enigi bootconfig-dosieron en la kernon, kio permesas, krom komandliniaj opcioj, determini la parametrojn de la kerno per agorda dosiero. Enkonstruado estas efektivigita per la kunigo opcio 'CONFIG_BOOT_CONFIG_EMBED_FILE="/PATH/TO/BOOTCONFIG/FILE"'. Antaŭe, bootconfig estis determinita per aldonado al la initrd-bildo. Integriĝo en la kernon permesas al bootconfig esti uzata en agordoj sen initrd.
    • La kapablo elŝuti firmvaro kunpremitan uzante la Zstandard-algoritmon estis efektivigita. Aro da kontroldosieroj /sys/class/firmware/* estis aldonita al sysfs, permesante al vi komenci ŝarĝon de firmware de uzantspaco.
    • La io_uring nesinkrona I/O-interfaco ofertas novan flagon, IORING_RECVSEND_POLL_FIRST, kiu, kiam agordita, unue sendos retan operacion por esti prilaborita per balotado, kiu povas ŝpari rimedojn en situacioj kie prilaborado de la operacio kun iom da prokrasto estas akceptebla. io_uring ankaŭ aldonis subtenon por la socket() sistemvoko, proponis novajn flagojn por simpligi la administradon de dosierpriskribiloj, aldonis "multi-pafa" reĝimo por akcepti plurajn ligojn samtempe en la accept() alvoko, kaj aldonis operaciojn por plusendado de NVMe. komandoj rekte al la aparato.
    • La arkitekturo Xtensa provizas subtenon por la senarariga ilo KCSAN (Kernel Concurrency Sanitizer), dizajnita por dinamike detekti raskondiĉojn ene de la kerno. Ankaŭ aldonis subtenon por dormreĝimo kaj kunprocesoroj.
    • Por la arkitekturo m68k (Motorola 68000), virtuala maŝino (platformsimulilo) bazita sur la Android Goldfish-emulilo estis efektivigita.
    • Por la AArch64-arkitekturo, subteno por Armv9-A SME (Scalable Matrix Extension) etendaĵoj estis efektivigita.
    • La eBPF-subsistemo permesas stoki tajpitajn montrilojn en mapstrukturoj, kaj ankaŭ aldonas subtenon por dinamikaj montriloj.
    • Nova iniciatema memorreakiro mekanismo estas proponita kiu apogas uzantspacan kontrolon uzante la memoro.reclaim dosieron. Skribi nombron al la specifita dosiero provos forpeli la respondan nombron da bajtoj de la aro asociita kun la cgroup.
    • Plibonigita precizeco de memoruzo dum kunpremado de datumoj en la interŝanĝa sekcio uzante la zswap-mekanismon.
    • Por la RISC-V-arkitekturo, subteno por prizorgado de 32-bitaj ruligeblaj sur 64-bitaj sistemoj estas disponigita, reĝimo estas aldonita por ligi restriktajn atributojn al memorpaĝoj (ekzemple, por malŝalti kaŝmemoron), kaj la kexec_file_load () funkcio estas efektivigita. .
    • La efektivigo de subteno por 32-bitaj Armv4T kaj Armv5-sistemoj estas adaptita por uzo en universalaj plurplatformaj kernaj konstruoj taŭgaj por malsamaj ARM-sistemoj.
  • Virtualigo kaj Sekureco
    • La EFI-subsistemo efektivigas la kapablon konfidence transdoni sekretajn informojn al gastsistemoj sen malkaŝado de ĝi al la gastiga sistemo. La datumoj estas provizitaj per la dosierujo sekureco/koko en securityfs.
    • Ŝlosa protektoreĝimo, kiu limigas radikan uzantan aliron al la kerno kaj blokas UEFI Secure Boot bypass-vojojn, eliminis kaŝpasejon kiu permesis al protekto esti preterpasita manipulante la kern-eraĉirmilon.
    • Inkluditaj estas diakiloj celantaj plibonigi la fidindecon kaj efikecon de la pseŭdo-hazarda nombro-generatoro.
    • Konstruante uzante Clang 15, subteno por la mekanismo por hazardigi kernstrukturojn estas efektivigita.
    • La mekanismo Landlock, kiu permesas vin limigi la interagadon de grupo de procezoj kun la ekstera medio, provizas subtenon por reguloj, kiuj ebligas al vi kontroli la ekzekuton de dosiero renomaj operacioj.
    • La subsistemo IMA (Integrity Measurement Architecture), dizajnita por kontroli la integrecon de operaciumaj komponentoj uzante ciferecajn subskribojn kaj haŝojn, estis ŝanĝita al uzado de la fs-verity-modulo por dosierkonfirmo.
    • La logiko de agoj ĉe malfunkciigado de senprivilegia aliro al la subsistemo eBPF estis ŝanĝita - antaŭe ĉiuj komandoj asociitaj kun la bpf() sistemvoko estis malŝaltitaj, kaj ekde versio 5.19, aliro al komandoj, kiuj ne kondukas al kreado de objektoj, estas lasita. . Ĉi tiu konduto postulas privilegian procezon por ŝarĝi BPF-programon, sed tiam neprivilegiaj procezoj povas interagi kun la programo.
    • Aldonita subteno por la etendaĵo AMD SEV-SNP (Secure Nested Paging), kiu provizas sekuran laboron kun nestitaj memorpaĝaj tabeloj kaj protektas kontraŭ "undeSERVed" kaj "SEVerity" atakoj sur AMD EPYC-procesoroj, kiuj ebligas preteriri la AMD SEV (Secure Encrypted Virtualization). ) protekta mekanismo.
    • Aldonita subteno por la mekanismo Intel TDX (Trusted Domain Extensions), kiu ebligas al vi bloki triajn provojn aliri la ĉifritan memoron de virtualaj maŝinoj.
    • La virtio-blk-ŝoforo, uzata por kopii blokajn aparatojn, aldonis subtenon por I/O uzante balotadon, kiu, laŭ testoj, reduktis latencian je ĉirkaŭ 10%.
  • Reta subsistemo
    • La pako inkluzivas serion de GRANDA TCP-pecetoj, kiuj ebligas al vi pliigi la maksimuman pakaĵon de TCP-pako al 4GB por optimumigi la funkciadon de altrapidaj internaj datumcentraj retoj. Simila pliiĝo en pakaĵgrandeco kun 16-bita kaplinia kampograndeco estas atingita per la efektivigo de "jumbaj" pakaĵetoj, kies grandeco en la IP-kapo estas agordita al 0, kaj la reala grandeco estas transdonita en aparta 32-bita. kampo en aparta kuna kaplinio. En agado-testado, fiksante la pakaĵgrandecon al 185 KB pliigis trairon je 50% kaj signife reduktis datumtransigan latentecon.
    • Laboro daŭris pri integrigado de iloj en la retan stakon por spuri la kialojn de faligi pakaĵetojn (kialaj kodoj). La kialo-kodo estas sendita kiam la memoro asociita kun la pakaĵeto estas liberigita kaj enkalkulas situaciojn kiel ekzemple pakaĵetforĵeto pro titolaj eraroj, rp_filter-falsaddetekto, nevalida ĉeksumo, el memoro, IPSec XFRM-reguloj ekigitaj, malvalida sekvencnumero TCP, ktp.
    • Aldonita subteno por fali MPTCP (MultiPath TCP) konektoj por uzi regulan TCP, en situacioj kie certaj MPTCP funkcioj ne povas esti uzata. MPTCP estas 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. Aldonita API por kontroli MPTCP-fluojn de uzantspaco.
  • Ekipaĵo
    • Aldonitaj pli ol 420k linioj de kodo rilataj al la amdgpu-ŝoforo, el kiuj ĉirkaŭ 400k linioj estas aŭtomate generitaj titoldosieroj por ASIC-registraj datumoj en la AMD GPU-ŝoforo, kaj aliaj 22.5k linioj disponigas komencan efektivigon de subteno por la AMD SoC21. La totala ŝoforgrandeco por AMD GPU-oj superis 4 milionojn da linioj de kodo. Krom SoC21, la AMD-ŝoforo inkluzivas subtenon por SMU 13.x (Sistema Administra Unuo), ĝisdatigitan subtenon por USB-C kaj GPUVM, kaj estas preta subteni la venontajn generaciojn de RDNA3 (RX 7000) kaj CDNA (AMD Instinct) platformoj.
    • La i915-ŝoforo (Intel) vastigis kapablojn rilate al potenco-administrado. Aldonitaj identigiloj por Intel DG2 (Arc Alchemist) GPUoj uzitaj sur tekokomputiloj, disponigis komencan subtenon por la Intel Raptor Lake-P (RPL-P) platformo, aldonis informojn pri Arctic Sound-M grafikkartoj), efektivigis ABI por komputaj motoroj, aldonitaj por DG2-kartoj subteno por la Tile4-formato; por sistemoj bazitaj sur la Haswell-mikroarkitekturo, DisplayPort HDR-subteno estas efektivigita.
    • La Nouveau-ŝoforo ŝanĝis al uzado de la drm_gem_plane_helper_prepare_fb-traktilo; senmova memoratribuo estis aplikita al iuj strukturoj kaj variabloj. Koncerne la uzon de kernaj moduloj malfermfonte fare de NVIDIA en Nouveau, la laboro ĝis nun estas identigi kaj forigi erarojn. En la estonteco, la publikigita firmvaro estas planita esti uzata por plibonigi ŝoforan rendimenton.
    • Aldonita ŝoforo por la NVMe-regilo uzata en Apple-komputiloj bazitaj sur la M1-peceto.

Samtempe, Latin American Free Software Foundation formis version de la tute senpaga kerno 5.19 - Linux-libre 5.19-gnu, malplenigita de elementoj de firmware kaj ŝoforoj enhavantaj neliberajn komponantojn aŭ sekciojn de kodo, kies amplekso estas limigita de la fabrikanto. La nova eldono purigas la ŝoforojn por pureLiFi X/XL/XC kaj TI AMx3 Wkup-M3 IPC. Ĝisdatigita blob-purigadkodo en Silicon Labs WFX, AMD amdgpu, Qualcomm WCNSS Peripheral Image Loader, Realtek Bluetooth, Mellanox Spectrum, Marvell WiFi-Ex, Intel AVS, IFS, pu3-imgu-ŝoforoj kaj subsistemoj. Pretigo de Qualcomm AArch64 devicetree dosieroj estis efektivigita. Aldonita subteno por la nova Sound Open Firmware-komponenta nomskemo. Ĉesis purigi la ATM Ambassador-ŝoforo, kiu estis forigita de la kerno. Administrado de blobpurigado en HDCP kaj Mellanox Core estis movita al apartaj kconfig-etikedoj.

fonto: opennet.ru

Aldoni komenton