Linukso-kerna eldono 5.7

Post du monatoj da evoluo, Linus Torvalds enkondukita liberigo de kerno Linukso 5.7. Inter la plej rimarkindaj ŝanĝoj: nova efektivigo de la dosiersistemo exFAT, bareudp-modulo por krei UDP-tunelojn, protekton bazitan sur montrilo-aŭtentikigo por ARM64, la kapablo ligi BPF-programojn al LSM-traktiloj, nova efektivigo de Curve25519, disigo- serurdetektilo, BPF-kongruo kun PREEMPT_RT, forigante la limon sur la 80-karaktera liniograndeco en la kodo, konsiderante CPU-temperaturindikilojn en la taskoplanilo, la kapablo uzi klonon () por generi procezojn en alia cgrupo, protekto kontraŭ skribo al memoro uzante userfaultfd.

La nova versio inkluzivas 15033 korektojn de 1961 programistoj,
grandeco de flikilo - 39 MB (ŝanĝoj influis 11590 dosierojn, aldonis 570560 liniojn de kodo,
297401 vicoj forigitaj). Ĉirkaŭ 41% de ĉiuj prezentitaj en 5.7
ŝanĝoj rilatas al aparataj peliloj, proksimume 16% de ŝanĝoj estas
sinteno al ĝisdatigo de kodo specifa por hardvararkitekturoj, 13%
rilata al la reto stako, 4% al dosiersistemoj kaj 4% al interna
kernaj subsistemoj.

Ĉefa novigoj:

  • Diska Subsistemo, I/O kaj Dosiersistemoj
    • Aldonita nova ekzFAT-ŝoforo efektivigo, fondita surbaze de la nuna "sdfat" (2.x) kodbazo evoluigita fare de Samsung por ĝiaj Android-poŝtelefonoj. La ŝoforo antaŭe aldonita al la kerno estis bazita sur hereda Samsung-kodo (versio 1.2.9) kaj estis ĉirkaŭ 10% malantaŭ la nova ŝoforo en efikeco. Ni memoru, ke aldoni eksFAT-subtenon al la kerno fariĝis ebla post Microsoft eldonita publikaj specifoj kaj disponigis eksFAT patentojn por senpaga uzo en Linukso.
    • Btrfs efektivigas novan ioctl() komandon - BTRFS_IOC_SNAP_DESTROY_V2, kiu ebligas al vi forigi subsekcion per ĝia identigilo. Plena subteno por klonado de enliniaj amplekso estas provizita. La nombro da nuligaj punktoj por redistribuaj operacioj estis pligrandigita, kio reduktis longajn atendojn dum plenumado de la komando 'balance cancel'. La determino de malantaŭaj ligiloj al mezuroj estis akcelita (ekzemple, la tempo de ekzekuto de testa skripto malpliiĝis de horo al pluraj minutoj). Aldonita la kapablo alligi dosiertendojn al ĉiu inodo de arbo. La blokadskemo uzata dum skribado al subsekcioj kaj ekskludante NOCOW estis restrukturita. Plibonigita efikeco de fsync-ekzekuto por intervaloj.
    • XFS plibonigis metadatenojn kontroladon kaj fsck por aktivaj sekcioj. Biblioteko estis proponita por rekonstrui btree-strukturojn, kiuj estonte estos uzataj por relabori xfs_repair kaj efektivigi la eblecon de reakiro sen malmunti la subdiskon.
    • Eksperimenta subteno por meti interŝanĝan sekcion en SMB3-stokadojn estis aldonita al CIFS. Efektivigitaj POSIX-etendaĵoj al readdir, difinita en la SMB3.1.1-specifo. Plibonigita skribefikeco por 64KB-paĝoj kiam kaŝmemoro=strikta reĝimo estas ebligita kaj protokolversioj 2.1+ estas uzataj.
    • FS EXT4 estis translokigita de bmap kaj iopoll al uzado de iomap.
    • F2FS disponigas laŭvolan subtenon por datumkunpremado uzante la zstd-algoritmon. Defaŭlte, la LZ4-algoritmo estas uzata por kunpremado. Aldonita subteno por la komando "chattr -c commit". Montra tempomontrado estas provizita. Aldonita ioctl F2FS_IOC_GET_COMPRESS_BLOCKS por akiri informojn pri la nombro da kunpremitaj blokoj. Aldonita kunprema datuma eligo per statx.
    • La Ceph-dosiersistemo aldonis la kapablon loke fari dosierojn pri kreado kaj forigo de operacioj (malligi) sen atendi respondon de la servilo (laborante en nesinkrona reĝimo). La ŝanĝo, ekzemple, povas signife plibonigi rendimenton dum rulado de la rsync-ilaĵo.
    • La kapablo uzi virtiofojn kiel plej altan dosiersistemon estis aldonita al OVERLAYFS.
    • Reskribita vojtraversa kodo en VFS, simbola lig-analiza kodo estis reverkita, kaj muntpunkto-trapaso estis unuigita.
    • En la scsi-subsistemo al senprivilegiaj uzantoj permesita plenumo de ZBC-komandoj.
    • En dm_writecache efektivigita la kapablo iom post iom forigi la kaŝmemoron surbaze de la parametro max_age, kiu fiksas la maksimuman vivdaŭron de bloko.
    • En dm_integrity aldonis subteno por la operacio "forĵeti".
    • En null_blk aldonis subteno por erar-anstataŭigo por simuli fiaskojn dum testado.
    • Aldonita kapablo sendi udev-sciojn pri blokaj aparatoj-grandecŝanĝoj.
  • Reta subsistemo
    • Netfilter inkluzivita ŝanĝi, signife plirapidigante la prilaboradon de grandaj matĉolistoj (nftables-aroj), kiuj postulas kontroli kombinaĵon de subretoj, retaj havenoj, protokolo kaj MAC-adresoj.
      Optimumigoj enkondukita en la modulon nft_set_pipapo (PIle PAcket POlicies), kiu solvas la problemon de kongruo de la enhavo de pakaĵeto kun arbitraj kampastaj intervaloj uzataj en filtraj reguloj, kiel IP- kaj retaj havenintervaloj (nft_set_rbtree kaj nft_set_hash manipulas intervalkongruon kaj rektan reflektadon de valoroj). ). La versio de pipapo vektorigita uzante 256-bitajn AVX2-instrukciojn sur sistemo kun AMD Epyc 7402-procesoro montris 420%-pliiĝon de rendimento dum analizado de 30 mil rekordoj inkluzive de port-protokolaj kombinaĵoj. La pliiĝo kiam oni komparas kombinaĵon de subreto kaj havena nombro dum analizado de 1000 rekordoj estis 87% por IPv4 kaj 128% por IPv6.

    • Aldonita bareudp-modulo, kiu permesas vin enkapsuligi diversajn L3-protokolojn, kiel MPLS, IP kaj NSH, en UDP-tunelon.
    • La integriĝo de MPTCP (MultiPath TCP) komponentoj, 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 ligitaj al malsamaj IP-adresoj, daŭris.
    • Aldonita subteno por aparataj akcelmekanismoj por enkapsuligi Eterretajn kadrojn en 802.11 (Wi-Fi).
    • Movante aparaton de unu retnomspaco al alia, la alirrajtoj kaj proprieto de la respondaj dosieroj en sysfs estas alĝustigitaj.
    • Aldonita la eblo uzi la flagon SO_BINDTODEVICE por ne-radikaj uzantoj.
    • La tria parto de flikoj estis akceptita, konvertante la ilaron ethtool de ioctl() al uzado de la netlink-interfaco. La nova interfaco faciligas aldoni etendaĵojn, plibonigas erartraktadon, ebligas sendi sciigojn kiam stato ŝanĝiĝas, simpligas la interagadon inter la kerno kaj uzantspaco kaj reduktas la nombron da nomitaj listoj, kiuj devas esti sinkronigitaj.
    • Aldonita la kapablo uzi specialajn aparatajn akceliloj por plenumi konektajn spurajn operaciojn.
    • En netfiltrilo aldonis hoko por konekti klasigilojn de elirantaj pakaĵetoj (eliro), kiu kompletigis la antaŭe nunan hokon por enirantaj pakaĵetoj (eniro).
  • Virtualigo kaj Sekureco
    • Aldonita aparatara efektivigo de montra aŭtentigo (Montrilo Aŭtentikigo), kiu uzas specialiĝintajn ARM64 CPU-instrukciojn por protekti kontraŭ atakoj uzantaj reven-orientitan programadon (ROP) teknikojn, en kiuj la atakanto ne provas meti sian kodon en memoron, sed funkciigas sur pecoj de maŝininstrukcioj jam haveblaj en ŝarĝitaj bibliotekoj, finiĝante. kun kontrolrevena instrukcio. Sekureco signifas uzi ciferecajn subskribojn por kontroli revenadresojn ĉe la kernnivelo. La subskribo estas konservita en la neuzataj supraj pecoj de la montrilo mem. Male al programaraj efektivigoj, la kreado kaj konfirmo de ciferecaj subskriboj estas efektivigitaj per specialaj CPU-instrukcioj.
    • Aldonita la kapablo protekti memorareon de skribo uzante la userfaultfd() sistemvokon, dizajnitan por pritrakti paĝfaŭltojn (aliro al neasignitaj memorpaĝoj) en uzantspaco. La ideo estas uzi userfaultfd() kaj por detekti alirmalobservojn al paĝoj markitaj kiel skribprotektita kaj voki prizorganton kiu povas respondi al tiaj skribprovoj (ekzemple, por pritrakti ŝanĝojn dum la kreado de vivaj momentfotoj de kurantaj procezoj, stato. kapto kiam forĵetado de memorforĵetoj al disko, efektivigo de komuna memoro, spurado de ŝanĝoj en memoro). Funkcio ekvivalento uzante mprotect() kune kun la SIGSEGV-signaltraktilo, sed ĝi funkcias videble pli rapide.
    • SELinux malrekomendis la parametron "checkreqprot", kiu ebligas al vi malŝalti memorprotektajn kontrolojn dum prilaborado de reguloj (permesante la uzon de efektivigeblaj memorareoj, sendepende de la reguloj specifitaj en la reguloj). Kernfs-simbligiloj rajtas heredi la kuntekston de siaj gepatraj dosierujoj.
    • La konsisto inkluzivita modulo KRSI, kiu permesas vin ligi BPF-programojn al iuj LSM-hokoj en la kerno. La ŝanĝo permesas krei LSM-modulojn (Linuksa Sekureca Modulo) en la formo de BPF-programoj por solvi reviziajn problemojn kaj devigan alirkontrolon.
    • Kondukita Optimumigas la agadon de /dev/random per batado de CRNG-valoroj anstataŭ voki RNG-instrukciojn individue. Plibonigita agado de getrandom kaj /dev/random sur ARM64-sistemoj provizantaj RNG-instrukciojn.
    • Efektivigo de elipsa kurbo Kurbo25519 anstataŭigita por la opcio el la biblioteko HACL, por kiu donita matematika pruvo de formala fidindeco-konfirmo.
    • Aldonita mekanismo por informi pri liberaj memorpaĝoj. Uzante ĉi tiun mekanismon, gastsistemoj povas elsendi informojn pri paĝoj kiuj ne plu estas uzitaj al la gastiga sistemo, kaj la gastiganto povas repreni la paĝdatenojn.
    • En vfio/pci aldonis subteno por SR-IOV (Single-Root I/O Virtualization).
  • Memoraj kaj sistemaj servoj
    • De 80 ĝis 100 signoj pliiĝis limigo de la maksimuma liniolongo en la fonttekstoj. Samtempe, programistoj ankoraŭ rekomendas resti ene de 80 signoj per linio, sed ĉi tio ne plu estas malfacila limo. Krome, superi la limgrandan limon nun rezultigos konstruan averton nur se checkpatch estas rulita kun la '--strict' opcio. La ŝanĝo ebligos ne malatentigi programistojn per manipulado kun spacoj kaj sentiĝu pli libera dum vicigado de kodo, same kiel malhelpos troa linio rompo, maltrankviliganta kodkompreno kaj serĉo.
    • Aldonita subteno por EFI miksita lanĉa reĝimo, kiu ebligas al vi ŝargi 64-bitan kernon de 32-bita firmvaro funkcianta sur 64-bita CPU sen uzi specialigitan ekŝargilon.
    • Inkludita sistemo por identigi kaj sencimigi dividitajn serurojn ("disigita seruro"), kiu okazas dum aliro de nevicigitaj datumoj en memoro pro la fakto ke dum plenumado de atoma instrukcio, la datenoj transiras du CPU-kaŝmemorliniojn. Tia blokado rezultigas signifan agadosukceson (1000 ciklojn pli malrapide ol atomoperacio en datumoj kiuj falas en unu kaŝmemorlinion). Depende de la "split_lock_detect" lanĉa parametro, la kerno povas detekti tiajn serurojn sur la flugo kaj eligi avertojn aŭ sendi SIGBUS-signalon al la aplikaĵo kaŭzanta la seruron.
    • La taskoplanisto disponigas spuradon de temperatursensiloj (Termika Premo) kaj efektivigita konsiderante trovarmiĝon dum metado de taskoj. Uzante la provizitajn statistikojn, la termika guberniestro povas ĝustigi la maksimuman CPU-frekvencon kiam trovarmiĝas, kaj la taskoplanisto nun konsideras la redukton de komputika potenco pro tia redukto de frekvenco kiam planas taskojn por funkcii (antaŭe, la planisto respondis al ŝanĝoj. en ofteco kun certa prokrasto, dum iom da tempo farante decidojn surbaze de ŝveligitaj supozoj pri disponeblaj komputikresursoj).
    • La taskoplanilo inkluzivas senvariaj indikiloj ŝarĝo spurado, permesante al vi ĝuste taksi la ŝarĝon, sendepende de la aktuala CPU-funkcia frekvenco. La ŝanĝo permesas pli precize antaŭdiri la konduton de taskoj sub kondiĉoj de dinamikaj ŝanĝoj en tensio kaj CPU-frekvenco. Ekzemple, tasko kiu konsumis 1/3 el la CPU-resursoj ĉe 1000 MHz konsumos 2/3 el la resursoj kiam la frekvenco falas al 500 MHz, kio antaŭe kreis malveran supozon ke ĝi funkciis plenkapacito (t.e. taskoj aperis. pli granda al la planisto nur reduktante la frekvencon, kiu kondukis al malĝustaj decidoj faritaj en la schedutil cpufreq-guberniestro).
    • La Intel P-ŝtata ŝoforo, kiu respondecas pri elektado de agado-reĝimoj, estis ŝanĝita por uzi scheduleutil.
    • La kapablo uzi la BPF-subsistemon kiam la kerno funkcias en reala tempo (PREEMPT_RT) estis efektivigita. Antaŭe, kiam PREEMPT_RT estis ebligita, BPF estis postulata por esti malŝaltita.
    • Nova speco de BPF-programo estis aldonita - BPF_MODIFY_RETURN, kiu povas esti alfiksita al funkcio en la kerno kaj ŝanĝi la valoron redonitan de ĉi tiu funkcio.
    • Aldonita ŝanco Uzante la sisteman vokon clone3() por krei procezon en cgrupo kiu estas diferenca de la gepatra cgrupo, permesante al la gepatra procezo apliki limigojn kaj ebligi kontadon tuj post generi novan procezon aŭ fadenon. Ekzemple, serva administranto povas rekte asigni novajn servojn al apartaj cgrupoj, kaj novaj procezoj, kiam metitaj en "frostitajn" cgrupojn, tuj estos ĉesigitaj.
    • en Kbuild aldonis subteno por la mediovariablo "LLVM=1" por ŝanĝi al la ilaro Clang/LLVM dum konstruado de la kerno. La postuloj por la versio binutils estis levitaj (2.23).
    • Sekcio /sys/kernel/debug/kunit/ estis aldonita al debugfs kun la rezultoj de kunit-testoj.
    • Aldonita kerna lanĉa parametro pm_debug_messages (analoga al /sys/power/pm_debug_messages), kiu ebligas la eligon de sencimigaj informoj pri la funkciado de la potenca mastruma sistemo (utila dum elpurigado de problemoj pri vintrodormo kaj standby-reĝimo).
    • Al la nesinkrona I/O-interfaco io_uring subteno aldonita spliso () и elekto de atoma bufro.
    • Plibonigita cgroup-profilado uzante la perf-ilaron. Antaŭe, perf nur povis profili taskojn en specifa cgrupo kaj ne povis eltrovi al kiu cgrupo apartenas la nuna specimeno. perf nun ricevas informojn pri cgroup por ĉiu specimeno, permesante al vi profili pli ol unu cgrupon kaj apliki ordigon per
      cgroup en raportoj.

    • cgroupfs, pseŭdo-FS por administri cgroups, aldonis subtenon por etenditaj atributoj (xattrs), per kiuj, ekzemple, vi povas lasi pliajn informojn por pritraktiloj en uzantspaco.
    • En cgroup-memorregilo aldoniskaj subteno por rekursiva protekto de la "memory.low" valoro, kiu reguligas la minimuman kvanton da RAM provizita al grupanoj. Dum muntado de cgroup-hierarkio kun la opcio "memory_recursiveprot", la valoro de "memory.low" kiu estas agordita por la malsuperaj nodoj estos aŭtomate distribuita al ĉiuj infannodoj.
    • Aldonita Uacce (Unified/User-space-access-intended Accelerator Framework) kadro por dividado de virtualaj adresoj (SVA, Shared Virtual Addressing) inter la CPU kaj periferiaj aparatoj, permesante al hardvarakceliloj aliri datumstrukturojn en la ĉefa CPU.
  • Aparataj arkitekturoj
    • Por la ARM-arkitekturo, la kapablo al varmega memoro estas efektivigita.
    • Por la RISC-V-arkitekturo, subteno por varma ŝtopado kaj forigo de CPUoj (CPU-varma ŝtopilo) estis aldonita. Por 32-bita RISC-V, eBPF JIT estas efektivigita.
    • La kapablo uzi 32-bitajn ARM-sistemojn por funkciigi KVM-gastajn mediojn estis forigita.
    • Forigis la "imititan" NUMA-efektivigon por la s390-arkitekturo, por kiu neniuj uzkazoj estis trovitaj atingi spektakloplibonigojn.
    • Por ARM64, aldonis subtenon por la etendaĵo AMU (Activity Monitors Unit), difinita en ARMv8.4 kaj disponiganta rendimentokalkuliloj, kiuj estas uzataj por kalkuli frekvencajn korektajn faktorojn en la taskoplanisto.
  • Ekipaĵo
    • Aldonita subteno por vDPA-aparatoj, kiuj uzas kanalon de interŝanĝo de datumoj, kiu konformas al virtiospecifoj. vDPA-aparatoj povas esti aŭ fizike ligita ekipaĵo aŭ softvaro kopiitaj virtualaj aparatoj.
    • En la GPIO-subsistemo aperis nova ioctl() komando por monitorado de ŝanĝoj, permesante al vi informi la procezon pri ŝanĝoj en la stato de iu GPIO-linio. Kiel ekzemplo de uzado de la nova komando proponita gpio-watch ilo.
    • En la i915 DRM-ŝoforo por Intel-vidkartoj inkluzivita defaŭlta subteno por Tigerlake ("Gen12") blatoj kaj aldonita komenca subteno por OLED-kontraŭluma kontrolo. Plibonigita subteno por Glacia Lago, Elkhart Lago, Baytrail kaj Haswell-fritoj.
    • En la amdgpu-ŝoforo aldonis kapablo ŝargi firmvaron en la USBC-peceton por ASIC. Plibonigita subteno por AMD Ryzen 4000 "Renoir" blatoj. Nun ekzistas subteno por kontroli OLED-panelojn. Provizita montrado de firmware-statuso en debugfs.
    • La kapablo uzi OpenGL 4 en gastsistemoj estis aldonita al la vmwgfx DRM-ŝoforo por VMware virtualigsistemoj (antaŭe OpenGL 3.3 estis apogita).
    • Aldonitaj novaj DRM-ŝoforoj por la ekransistemo de la platformo TI Keystone.
    • Aldonitaj ŝoforoj por LCD-paneloj: Feixin K101 IM2BA02, Samsung s6e88a0-ams452ef01, Novatek NT35510, Elida KD35T133, EDT, NewEast Optoelectronics WJFH116008A, Rocktech RK101II01D350, Frida.
    • Al la sistemo de administrado de potenco aldonis subteno por la platformo Intel Jasper Lake (JSL) bazita en Atom.
    • Aldonita subteno por Pinebook Pro tekkomputilo bazita sur Rockchip RK3399, Pine64 PineTab-tablojdo kaj inteligenta telefono pinofono surbaze de Allwinner A64.
    • Aldonita subteno por novaj sonkodekoj kaj blatoj:
      Amlogic AIU, Amlogic T9015, Texas Instruments TLV320ADCX140, Realtek RT5682, ALC245, Broadcom BCM63XX I2S, Maxim MAX98360A, Presonus Studio 1810c, MOTU MicroBook IIc.

    • Aldonita subteno por ARM-tabuloj kaj platformoj Qualcomm Snapdragon 865 (SM8250), IPQ6018, NXP i.MX8M Plus, Kontron "sl28", 11 i.MX6 TechNexion Pico-tabulo-opcioj, tri novaj Toradex Colibri-opcioj, Samsung S7710 Galaxy Xcover 2 bazitaj sur ST. -Ericsson u8500, DH Electronics DHCOM SoM kaj PDK2, Renesas M3ULCB, Hoperun HiHope, Linutronix Testbox v2, PocketBook Touch Lux 3.

fonto: opennet.ru

Aldoni komenton