Kaluaran kernel Linux 5.7

Sanggeus dua bulan pangwangunan, Linus Torvalds ngenalkeun ngaleupaskeun kernel Linux Ubuntu 5.7. Diantara parobahan anu paling penting: palaksanaan anyar sistem file exFAT, modul bareudp pikeun nyiptakeun torowongan UDP, panyalindungan dumasar kana auténtikasi pointer pikeun ARM64, kamampuan pikeun ngagantelkeun program BPF ka pawang LSM, palaksanaan anyar Curve25519, pamisah- detektor konci, kasaluyuan BPF kalawan PREEMPT_RT, nyoplokkeun wates dina ukuran garis 80-karakter dina kode, nyokot kana akun indikator suhu CPU dina scheduler tugas, kamampuhan pikeun ngagunakeun clone () pikeun spawn prosés di cgroup sejen, panyalindungan ngalawan tulisan. ka memori maké userfaultfd.

Versi anyar kalebet 15033 perbaikan tina 1961 pamekar,
ukuran patch - 39 MB (parobahan kapangaruhan 11590 file, ditambahkeun 570560 baris kode,
297401 baris dipiceun). Ngeunaan 41% sadaya dibere dina 5.7
parobahan nu patali jeung drivers alat, kira-kira 16% parobahanana
sikep kana ngamutahirkeun kode khusus pikeun arsitéktur hardware, 13%
patali jeung tumpukan jaringan, 4% mun sistem file na 4% mun internal
subsistem kernel.

utama inovasi:

  • Subsistem Disk, I/O sareng Sistem File
    • Ditambahkeun palaksanaan supir exFAT anyar, diadegkeun dumasar kana dasar kode "sdfat" (2.x) ayeuna dikembangkeun ku Samsung pikeun smartphone Android na. Supir saméméhna ditambahkeun kana kernel dumasar kana kode Samsung warisan (versi 1.2.9) jeung éta ngeunaan 10% balik supir anyar dina kinerja. Hayu urang émut yén nambihan dukungan exFAT kana kernel janten mungkin saatos Microsoft diterbitkeun spésifikasi umum sareng ngajantenkeun patén-patén exFAT sayogi pikeun panggunaan bébas royalti dina Linux.
    • Btrfs implements a ioctl anyar () paréntah - BTRFS_IOC_SNAP_DESTROY_V2, nu ngidinan Anjeun pikeun mupus subsection ku identifier na. Rojongan pinuh pikeun kloning extents inline disadiakeun. Jumlah titik pembatalan pikeun operasi redistribution geus dimekarkeun, nu geus ngurangan antosan lila nalika executing paréntah 'kasaimbangan ngabolaykeun'. Tekad backlinks ka extents geus gancangan (contona, waktu palaksanaan naskah test geus turun ti sajam nepi ka sababaraha menit). Ditambahkeun kamampuhan pikeun ngagantelkeun extents file ka unggal inode tangkal. Skéma meungpeuk anu dianggo nalika nyerat ka subpartisi sareng nalika henteu kalebet NOCOW parantos didesain ulang. Ningkatkeun efisiensi palaksanaan fsync pikeun rentang.
    • XFS parantos ningkatkeun pamariksaan metadata sareng fsck pikeun partisi aktip. A perpustakaan geus diusulkeun pikeun rebuilding struktur btree, nu di mangsa nu bakal datang bakal dipaké pikeun rework xfs_repair sarta nerapkeun kamungkinan recovery tanpa unmounting partisi.
    • Pangrojong ékspérimén pikeun nempatkeun partisi swap dina panyimpenan SMB3 parantos ditambahkeun kana CIFS. Dilaksanakeun ekstensi POSIX ka readdir, didefinisikeun dina spésifikasi SMB3.1.1. Ningkatkeun kinerja nulis pikeun kaca 64KB lamun cache = mode ketat diaktipkeun jeung versi protokol 2.1+ dipaké.
    • FS EXT4 geus ditransfer ti bmap na iopoll mun ngagunakeun iomap.
    • F2FS nyadiakeun rojongan pilihan pikeun komprési data ngagunakeun algoritma zstd. Sacara standar, algoritma LZ4 dianggo pikeun komprési. Ditambahkeun dukungan pikeun paréntah "chattr -c commit". Pamasangan waktos tampilan disadiakeun. Ditambahkeun ioctl F2FS_IOC_GET_COMPRESS_BLOCKS pikeun meunangkeun inpormasi ngeunaan jumlah blok anu dikomprés. Ditambahkeun kaluaran data komprési via statx.
    • Sistim file Ceph geus ditambahkeun kamampuhan pikeun lokal nedunan kreasi file sarta operasi ngahapus (unlink) tanpa ngantosan respon ti server (garap dina modeu Asynchronous). Parobihan, contona, tiasa sacara signifikan ningkatkeun kinerja nalika ngajalankeun utilitas rsync.
    • Kamampuhan ngagunakeun virtiofs salaku sistem file tingkat luhur geus ditambahkeun kana OVERLAYFS.
    • Ditulis deui kode traversal jalur di VFS, kode parsing link simbolis geus reworked, sarta titik Gunung traversal geus ngahiji.
    • Dina subsistem scsi ka pamaké unprivileged diidinan palaksanaan paréntah ZBC.
    • Dina dm_writecache dilaksanakeun kamampuhan pikeun laun mupus cache dumasar kana parameter max_age, nu nangtukeun umur maksimum blok a.
    • Dina dm_integrity ditambahkeun rojongan pikeun "miceun" operasi.
    • Dina null_blk ditambahkeun rojongan pikeun substitusi kasalahan pikeun simulate gagal salila nguji.
    • Ditambahkeun kamampuhan pikeun ngirim bewara udev ngeunaan parobahan ukuran alat block.
  • Subsistem jaringan
    • Netfilter kaasup parobahan, nyata nyepetkeun ngolah daptar pertandingan badag (nftables susunan), nu merlukeun mariksa kombinasi subnets, palabuhan jaringan, protokol jeung alamat MAC.
      Optimasi ngenalkeun kana modul nft_set_pipapo (PIle PAcket POlicies), anu ngarengsekeun masalah anu cocog sareng eusi pakét kalayan kisaran kaayaan lapangan sawenang-wenang anu dianggo dina aturan nyaring, sapertos IP sareng rentang port jaringan (nft_set_rbtree sareng nft_set_hash ngamanipulasi pencocokan interval sareng refleksi langsung tina nilai. ). Versi pipapo vectorized ngagunakeun 256-bit AVX2 parentah dina sistem kalawan AMD Epyc 7402 processor némbongkeun kanaékan kinerja 420% nalika parsing 30 sarébu rékaman kaasup kombinasi port-protokol. Paningkatan nalika ngabandingkeun kombinasi subnet sareng nomer port nalika nga-parsing 1000 rékaman éta 87% pikeun IPv4 sareng 128% pikeun IPv6.

    • Ditambahkeun modul bareudp, nu ngidinan Anjeun pikeun encapsulate rupa protokol L3, kayaning MPLS, IP na NSH, kana torowongan UDP.
    • Integrasi komponén MPTCP (MultiPath TCP), penyuluhan protokol TCP pikeun ngatur operasi sambungan TCP jeung pangiriman pakét sakaligus sapanjang sababaraha ruteu ngaliwatan interfaces jaringan béda dihijikeun ka alamat IP béda, terus.
    • Ditambahkeun rojongan pikeun mékanisme akselerasi hardware pikeun encapsulating pigura Ethernet dina 802.11 (Wi-Fi).
    • Nalika mindahkeun alat tina hiji rohangan ngaran jaringan ka anu sanés, hak aksés sareng kapamilikan file anu aya dina sysfs disaluyukeun.
    • Ditambahkeun kamampuhan pikeun ngagunakeun bandéra SO_BINDTODEVICE pikeun pamaké non-root.
    • Bagian katilu tina patches geus katampa, ngarobah ethtool toolkit ti ioctl () pikeun ngagunakeun panganteur netlink. Antarbeungeut anyar ngagampangkeun pikeun nambihan ekstensi, ningkatkeun penanganan kasalahan, ngamungkinkeun béwara dikirim nalika parobahan kaayaan, nyederhanakeun interaksi antara kernel sareng rohangan pangguna, sareng ngirangan jumlah daptar anu namina anu kedah disingkronkeun.
    • Ditambahkeun kamampuhan pikeun ngagunakeun akselerator hardware husus pikeun ngalakukeun operasi tracking sambungan.
    • Dina netfilter ditambihan hook pikeun nyambungkeun classifiers pakét kaluar (egress), nu complemented hook saméméhna hadir pikeun pakét asup (ingress).
  • Virtualisasi sareng Kaamanan
    • Ditambahkeun palaksanaan hardware pikeun auténtikasi pointer (Pointer auténtikasi), anu ngagunakeun instruksi CPU ARM64 khusus pikeun ngajagaan tina serangan anu ngagunakeun téknik pemrograman berorientasi balik (ROP), dimana panyerang henteu nyobian nempatkeun kode na dina mémori, tapi ngoperasikeun potongan instruksi mesin anu tos aya di perpustakaan anu dimuat, mungkas. kalawan instruksi mulang kontrol. Kaamanan turun pikeun ngagunakeun tanda tangan digital pikeun pariksa alamat mulang dina tingkat kernel. Signature disimpen dina bit luhur henteu kapake tina pointer sorangan. Beda sareng palaksanaan parangkat lunak, kreasi sareng verifikasi tanda tangan digital dilaksanakeun nganggo paréntah CPU khusus.
    • Ditambahkeun kamampuhan pikeun nangtayungan wewengkon memori ti nulis ngagunakeun userfaultfd () Sistim panggero, dirancang pikeun cecekelan faults kaca (aksés ka kaca memori unallocated) dina spasi pamaké. Ide nya ngagunakeun userfaultfd() duanana pikeun ngadeteksi palanggaran aksés ka kaca ditandaan salaku ditangtayungan nulis jeung nelepon pawang nu bisa ngabales usaha nulis misalna (contona, pikeun nanganan parobahan salila kreasi snapshots hirup tina prosés ngajalankeun, kaayaan. newak nalika dumping memori dumps ka disk, ngalaksanakeun memori dibagikeun, tracking parobahan dina mémori). Fungsionalitas sarua ngagunakeun mprotect () ditéang jeung sinyal Handler SIGSEGV, tapi gawéna noticeably gancang.
    • SELinux geus deprecated parameter "checkreqprot", nu ngidinan Anjeun pikeun nganonaktipkeun cék panyalindungan memori nalika ngolah aturan (ngamungkinkeun pamakéan wewengkon memori laksana, paduli aturan dieusian dina aturan). Symlinks Kernfs diwenangkeun inherit kontéks diréktori indungna.
    • Susunanana kaasup modul KRSI, nu ngidinan Anjeun pikeun ngagantelkeun program BPF kana sagala kait LSM dina kernel. Parobihan éta ngamungkinkeun anjeun nyiptakeun modul LSM (Modul Kaamanan Linux) dina bentuk program BPF pikeun ngarengsekeun masalah Inok sareng kontrol aksés wajib.
    • Dilaksanakan Optimalkeun kinerja / dev / acak ku batching nilai CRNG tinimbang nelepon parentah RNG individual. Ningkatkeun kinerja getrandom sareng / dev / acak dina sistem ARM64 anu nyayogikeun petunjuk RNG.
    • Palaksanaan kurva elliptic Curve25519 digantikeun pikeun pilihan ti perpustakaan HACL, keur nu dibikeun bukti matematis verifikasi reliabilitas formal.
    • Ditambahkeun mékanisme pikeun informing ngeunaan bebas kaca memori. Nganggo mékanisme ieu, sistem tamu tiasa ngirimkeun inpormasi ngeunaan halaman anu henteu dianggo deui kana sistem host, sareng host tiasa nyandak deui data halaman.
    • Dina vfio/pci ditambahkeun rojongan pikeun SR-IOV (Single-Root I / O Virtualization).
  • Mémori sareng jasa sistem
    • Ti 80 nepi ka 100 karakter ngaronjat watesan dina panjang garis maksimum dina téks sumber. Dina waktos anu sami, pamekar masih disarankeun pikeun tetep dina 80 karakter per baris, tapi ieu henteu deui wates anu sesah. Salaku tambahan, ngaleuwihan wates ukuran garis ayeuna bakal ngahasilkeun peringatan ngawangun ngan upami utilitas checkpatch dijalankeun sareng pilihan '--strict'. Parobahan bakal ngamungkinkeun teu ngaganggu pamekar ku manipulasi kalawan spasi tur ngarasa leuwih bébas lamun aligning kode, kitu ogé bakal nyegah garis putus kaleuleuwihan, ngaganggu pamahaman kode jeung pilarian.
    • Ditambahkeun rojongan pikeun EFI mode boot campuran, nu ngidinan Anjeun pikeun muka hiji kernel 64-bit ti firmware 32-bit ngajalankeun on CPU 64-bit tanpa ngagunakeun bootloader husus.
    • Diaktipkeun sistem pikeun ngaidentipikasi sareng debugging konci pamisah ("konci pamisah"), nu lumangsung nalika ngakses data unaligned dina mémori alatan kanyataan yén nalika executing instruksi atom, data crosses dua garis cache CPU. Pameungpeuk sapertos kitu nyababkeun prestasi anu signifikan (1000 siklus langkung laun tibatan operasi atom dina data anu aya dina hiji garis cache). Gumantung kana parameter boot "split_lock_detect", kernel tiasa ngadeteksi konci sapertos dina laleur sareng ngaluarkeun peringatan atanapi ngirim sinyal SIGBUS ka aplikasi anu nyababkeun konci.
    • Penjadwal tugas nyadiakeun tracking sensor suhu (Tekanan Thermal) jeung dilaksanakeun nyokot kana akun overheating nalika nempatkeun tugas. Nganggo statistik anu disayogikeun, gubernur termal tiasa nyaluyukeun frékuénsi CPU maksimum nalika dipanaskeun, sareng penjadwal tugas ayeuna ngémutan pangurangan kakuatan komputasi kusabab pangurangan frékuénsi sapertos kitu nalika ngajadwalkeun tugas pikeun ngajalankeun (saméméhna, penjadwal ngaréspon kana parobahan. dina frékuénsi jeung reureuh tangtu, pikeun sawatara waktu nyieun kaputusan dumasar kana asumsi inflated ngeunaan sumberdaya komputasi sadia).
    • Tugas scheduler ngawengku indikator invarian tracking beban, ngamungkinkeun anjeun leres ngitung beban, henteu paduli frékuénsi operasi CPU ayeuna. Parobihan éta ngamungkinkeun anjeun langkung akurat ngaduga paripolah tugas dina kaayaan parobahan dinamis dina tegangan sareng frékuénsi CPU. Salaku conto, tugas anu ngonsumsi 1/3 sumberdaya CPU dina 1000 MHz bakal meakeun 2/3 sumberdaya nalika frékuénsi turun ka 500 MHz, anu saacanna nyiptakeun anggapan palsu yén éta jalan dina kapasitas pinuh (nyaéta tugas muncul. leuwih badag pikeun scheduler ukur ku ngurangan frékuénsi, nu ngarah ka kaputusan salah keur dilakukeun dina gubernur cpufreq schedutil).
    • Supir Intel P-nagara, anu tanggung jawab pikeun milih modeu kinerja, parantos dialihkeun pikeun dianggo scheduleutil.
    • Kamampuhan ngagunakeun subsistem BPF nalika kernel dijalankeun sacara real waktos (PREEMPT_RT) parantos dilaksanakeun. Saméméhna, nalika PREEMPT_RT diaktipkeun, BPF kedah ditumpurkeun.
    • A tipe anyar program BPF geus ditambahkeun - BPF_MODIFY_RETURN, nu bisa napel hiji fungsi dina kernel jeung ngarobah nilai balik ku fungsi ieu.
    • Ditambahkeun kasempetan Ngagunakeun clone3 () panggero sistem pikeun nyieun hiji prosés dina cgroup anu béda ti cgroup indungna, sahingga prosés indungna pikeun nerapkeun larangan sarta Aktipkeun akuntansi langsung saatos spawning prosés anyar atawa thread. Contona, hiji manajer jasa bisa langsung allocate jasa anyar pikeun misahkeun cgroups, sarta prosés anyar, lamun disimpen dina "beku" cgroups, bakal geuwat dieureunkeun.
    • di Kbuild ditambahkeun rojongan pikeun variabel lingkungan "LLVM = 1" pikeun pindah ka Clang / LLVM toolkit nalika ngawangun kernel. Sarat pikeun versi binutils geus diangkat (2.23).
    • A bagian /sys/kernel/debug/kunit/ geus ditambahkeun kana debugfs kalawan hasil tés kunit.
    • Nambahkeun parameter kernel boot pm_debug_messages (analog kana /sys/power/pm_debug_messages), anu ngamungkinkeun kaluaran inpormasi debug ngeunaan operasi sistem manajemen kakuatan (mangpaat nalika debugging masalah sareng hibernasi sareng mode sayaga).
    • Pikeun panganteur I/O Asynchronous io_uring rojongan ditambahkeun sambung () и pilihan panyangga atom.
    • Ningkatkeun profil cgroup nganggo toolkit perf. Saméméhna, perf ngan bisa profil tugas dina cgroup husus tur teu bisa manggihan nu cgroup sampel ayeuna milik. perf ayeuna retrieves informasi cgroup pikeun tiap sampel, ngamungkinkeun Anjeun pikeun profil leuwih ti hiji cgroup jeung nerapkeun asihan dumasar
      cgroup dina laporan.

    • cgroupfs, pseudo-FS pikeun ngatur cgroups, geus ditambahkeun rojongan pikeun atribut nambahan (xattrs), kalawan nu, contona, Anjeun bisa ninggalkeun informasi tambahan pikeun pawang dina spasi pamaké.
    • Dina cgroup memori controller ditambihanjeung rojongan pikeun panangtayungan recursive tina nilai "memory.low", nu ngatur jumlah minimum RAM disadiakeun pikeun anggota grup. Nalika masang hirarki cgroup kalayan pilihan "memory_recursiveprot", nilai "memory.low" anu disetél pikeun titik handap bakal otomatis disebarkeun ka sadaya titik anak.
    • Ditambahkeun kerangka Uacce (Unified / User-space-access-intended Accelerator Framework) pikeun ngabagi alamat virtual (SVA, Shared Virtual Addressing) antara CPU sareng alat periferal, ngamungkinkeun akselerator hardware pikeun ngakses struktur data dina CPU utama.
  • Arsitéktur hardware
    • Pikeun arsitéktur ARM, kamampuan pikeun nyandak mémori panas dilaksanakeun.
    • Pikeun arsitéktur RISC-V, dukungan pikeun nyolok panas sareng ngahapus CPU (CPU hotplug) parantos ditambahkeun. Pikeun RISC-V 32-bit, eBPF JIT dilaksanakeun.
    • Kamampuhan pikeun ngagunakeun sistem ARM 32-bit pikeun ngajalankeun lingkungan tamu KVM parantos dihapus.
    • Ngahapus palaksanaan NUMA "dummy" pikeun arsitéktur s390, anu henteu aya kasus pamakean anu kapanggih pikeun ngahontal perbaikan kinerja.
    • Pikeun ARM64, ditambahkeun rojongan pikeun extension AMU (Aktivitas Monitor Unit), didefinisikeun dina ARMv8.4 sarta nyadiakeun counters kinerja anu dipaké pikeun ngitung faktor koreksi skala frékuénsi dina scheduler tugas.
  • pakakas
    • Ditambahkeun rojongan pikeun alat vDPA nu make saluran bursa data nu luyu jeung spésifikasi virtio. Alat vDPA tiasa janten alat anu disambungkeun sacara fisik atanapi parangkat lunak anu ditiru parangkat virtual.
    • Dina subsistem GPIO mucunghul a ioctl anyar () paréntah pikeun ngawas parobahan, ngidinan Anjeun pikeun nginpokeun prosés ngeunaan parobahan dina kaayaan sagala garis GPIO. Salaku conto ngagunakeun paréntah anyar diusulkeun gpio-watch utiliti.
    • Dina supir i915 DRM pikeun kartu vidéo Intel kalebet dukungan standar pikeun chip Tigerlake ("Gen12") sareng nambihan dukungan awal pikeun kontrol lampu tukang OLED. Ningkatkeun dukungan pikeun Ice Lake, Elkhart Lake, Baytrail sareng chip Haswell.
    • Dina supir amdgpu ditambahkeun kamampuhan pikeun muka firmware kana chip USBC pikeun ASIC. Ningkatkeun dukungan pikeun chip AMD Ryzen 4000 "Renoir". Ayeuna aya dukungan pikeun ngadalikeun panél OLED. Disadiakeun tampilan status firmware di debugfs.
    • Kamampuh ngagunakeun OpenGL 4 dina sistem tamu geus ditambahkeun kana vmwgfx panggerak DRM pikeun sistem virtualisasi VMware (saméméhna OpenGL 3.3 dirojong).
    • Ditambahkeun tidss supir DRM anyar pikeun sistem tampilan platform TI Keystone.
    • Supir tambahan pikeun panel LCD: Feixin K101 IM2BA02, Samsung s6e88a0-ams452ef01, Novatek NT35510, Elida KD35T133, EDT, NewEast Optoelectronics WJFH116008A, Rocktech RK101II01D350CT, Rocktech RK54004IIXNUMXD-XNUMXCT.
    • Pikeun sistem manajemén kakuatan ditambahkeun rojongan pikeun platform Intel Jasper Lake (JSL) basis Atom.
    • Ditambahkeun dukungan pikeun laptop Pinebook Pro dumasar kana Rockchip RK3399, tablet sareng smartphone Pine64 PineTab PinePhone dumasar kana Allwinner A64.
    • Ditambahkeun dukungan pikeun codec audio sareng chip énggal:
      Amlogic AIU, Amlogic T9015, Texas Instrumén TLV320ADCX140, Realtek RT5682, ALC245, Broadcom BCM63XX I2S, Maxim MAX98360A, Presonus Studio 1810c, MOTU MicroBook IIc.

    • Ditambahkeun dukungan pikeun papan ARM sareng platform Qualcomm Snapdragon 865 (SM8250), IPQ6018, NXP i.MX8M Plus, Kontron "sl28", 11 pilihan dewan TechNexion Pico i.MX6, tilu pilihan Toradex Colibri anyar, Samsung S7710 Galaxy Xcover 2 dumasar kana ST -Ericsson u8500, DH Electronics DHCOM SoM sareng PDK2, Renesas M3ULCB, Hoperun HiHope, Linutronix Testbox v2, PocketBook Touch Lux 3.

sumber: opennet.ru

Tambahkeun komentar