Rilis kernel Linux 6.3

Setelah dua bulan pengembangan, Linus Torvalds telah merilis kernel Linux 6.3. Di antara perubahan yang paling menonjol: pembersihan platform ARM usang dan driver grafis, integrasi berkelanjutan dukungan bahasa Rust, utilitas hwnoise, dukungan untuk struktur pohon merah-hitam di BPF, mode BIG TCP untuk IPv4, tolok ukur Dhrystone bawaan, kemampuan untuk menonaktifkan eksekusi di memfd, dukungan untuk membuat driver HID menggunakan BPF, perubahan telah dilakukan pada Btrfs untuk mengurangi fragmentasi grup blok.

Versi baru menerima 15637 perbaikan dari 2055 pengembang; ukuran tambalan - 76 MB (perubahan memengaruhi 14296 file, 1023183 baris kode ditambahkan, 883103 baris dihapus). Sebagai perbandingan, pada versi sebelumnya, 16843 perbaikan diusulkan dari 2178 pengembang; ukuran tambalan - 62 MB. Sekitar 39% dari semua perubahan yang diperkenalkan di kernel 6.3 terkait dengan driver perangkat, sekitar 15% perubahan terkait dengan pembaruan kode khusus untuk arsitektur perangkat keras, 10% terkait dengan tumpukan jaringan, 5% dengan sistem file, dan 3 % ke subsistem kernel internal.

Inovasi utama dalam kernel 6.3:

  • Layanan memori dan sistem
    • Pembersihan kode yang signifikan terkait dengan papan ARM lama dan tidak terpakai telah dilakukan, yang telah mengurangi ukuran sumber kernel sebanyak 150 ribu baris. Menghapus lebih dari 40 platform ARM lama.
    • Mengimplementasikan kemampuan membuat driver untuk perangkat input dengan antarmuka HID (Human Interface Device) yang diimplementasikan dalam bentuk program BPF.
    • Melanjutkan porting dari cabang Rust-for-Linux dari fungsionalitas tambahan yang terkait dengan penggunaan Rust sebagai bahasa kedua untuk mengembangkan driver dan modul kernel. Dukungan karat tidak diaktifkan secara default, dan tidak mengakibatkan Rust dimasukkan sebagai ketergantungan build kernel wajib. Fungsionalitas yang ditawarkan dalam rilis sebelumnya telah diperluas dengan dukungan untuk tipe Arc (implementasi penunjuk yang dihitung referensi), ScopeGuard (membersihkan saat berada di luar cakupan), dan ForeignOwnable (menyediakan pergerakan penunjuk antara kode C dan Rust). Menghapus modul 'pinjam' dari paket 'alloc' (ketik 'Cow' dan sifat 'ToOwned'). Perlu dicatat bahwa status dukungan untuk Rust di kernel sudah hampir mulai menerima modul pertama yang ditulis dalam Rust ke dalam kernel.
    • Mode pengguna Linux (menjalankan kernel sebagai proses pengguna) pada sistem x86-64 mendukung kode yang ditulis dalam Rust. Menambahkan dukungan untuk membangun User-mode Linux menggunakan dentang dengan pengoptimalan link-time diaktifkan (LTO).
    • Menambahkan utilitas hwnoise untuk melacak penundaan yang disebabkan oleh perilaku perangkat keras. Penyimpangan dalam waktu eksekusi operasi (jitter) ditentukan saat pemrosesan interupsi dinonaktifkan, melebihi satu mikrodetik dalam 10 menit perhitungan.
    • Modul kernel telah ditambahkan dengan implementasi benchmark Dhrystone yang dapat digunakan untuk mengevaluasi performa CPU dalam konfigurasi tanpa komponen ruang pengguna (misalnya, pada tahap porting untuk SoC baru yang hanya mengimplementasikan pemuatan kernel).
    • Menambahkan opsi baris perintah kernel "cgroup.memory=nobpf" untuk menonaktifkan penghitungan konsumsi memori untuk program BPF, yang dapat berguna untuk sistem dengan wadah terisolasi.
    • Untuk program BPF, diusulkan penerapan struktur data pohon merah-hitam, yang menggunakan kfunc + kptr (bpf_rbtree_add, bpf_rbtree_remove, bpf_rbtree_first) alih-alih menambahkan tipe pemetaan baru.
    • Dalam mekanisme urutan yang dapat dimulai ulang (rseq, urutan yang dapat dimulai ulang) menambahkan kemampuan untuk meneruskan pengidentifikasi eksekusi paralel (ID konkurensi peta-memori) yang diidentifikasi dengan nomor CPU ke proses. Rseq menyediakan sarana untuk menjalankan operasi secara atomik dengan cepat, jika terganggu oleh utas lain, dibersihkan dan dicoba lagi.
    • Prosesor ARM mendukung instruksi SME 2 (Scalable Matrix Extension).
    • Untuk arsitektur s390x dan RISC-V RV64, dukungan untuk mekanisme "trampolin BPF" diterapkan, yang memungkinkan meminimalkan overhead saat mentransfer panggilan antara program kernel dan BPF.
    • Pada sistem dengan prosesor berbasis arsitektur RISC-V, penggunaan instruksi "ZBB" telah diimplementasikan untuk mempercepat operasi string.
    • Untuk sistem berdasarkan arsitektur kumpulan instruksi LoongArch (digunakan dalam prosesor Loongson 3 5000 dan menerapkan RISC ISA baru yang mirip dengan MIPS dan RISC-V), dukungan untuk pengacakan ruang alamat kernel (KASLR), relokasi kernel di memori (relokasi ), poin perangkat keras berhenti dan mekanisme kprobe.
    • Mekanisme DAMOS (Skema Operasi Berbasis Pemantauan Akses Data), yang memungkinkan Anda mengosongkan memori berdasarkan frekuensi akses memori, mendukung filter untuk mengecualikan area memori tertentu dari pemrosesan di DAMOS.
    • Pustaka C standar minimal Nolibc mengimplementasikan dukungan untuk arsitektur s390 dan set instruksi Arm Thumb1 (selain dukungan untuk ARM, AArch64, i386, x86_64, RISC-V dan MIPS).
    • Objtool telah dioptimalkan untuk mempercepat pembuatan kernel dan mengurangi konsumsi memori puncak selama pembuatan (ketika membangun kernel dalam mode "allyesconfig", tidak ada masalah dengan penghentian paksa proses pada sistem dengan RAM 32 GB).
    • Dukungan untuk perakitan kernel oleh kompiler Intel ICC telah dihentikan, yang sudah lama tidak berfungsi dan tidak ada yang menyatakan keinginan untuk memperbaikinya.
  • Subsistem Disk, I/O dan Sistem File
    • tmpfs mendukung pemetaan ID pengguna sistem berkas terpasang, yang digunakan untuk memetakan berkas pengguna tertentu pada partisi asing terpasang ke pengguna lain pada sistem saat ini.
    • Di Btrfs, untuk mengurangi fragmentasi kelompok blok, luasan dibagi berdasarkan ukuran saat mengalokasikan blok, mis. grup blok apa pun sekarang terbatas pada ukuran kecil (hingga 128KB), sedang (hingga 8MB), dan luasan besar. Implementasi raid56 telah difaktorkan ulang. Kode yang didesain ulang untuk memeriksa checksum. Pengoptimalan kinerja telah dilakukan untuk mempercepat operasi pengiriman hingga 10 kali lipat dengan menyimpan utime untuk direktori dan menjalankan perintah hanya bila diperlukan. Operasi fiemap 10x lebih cepat dengan melewatkan pemeriksaan backlink untuk data bersama (snapshot). Operasi dengan metadata dipercepat sebesar XNUMX% dengan mengoptimalkan pencarian kunci dalam struktur b-tree.
    • Peningkatan kinerja ext4 FS dengan mengizinkan beberapa proses untuk secara bersamaan melakukan operasi I/O langsung ke blok yang dialokasikan sebelumnya menggunakan kunci inode bersama, bukan kunci eksklusif.
    • Di f2fs, pekerjaan telah dilakukan untuk meningkatkan keterbacaan kode. Memperbaiki masalah penting yang terkait dengan penulisan atom dan cache tingkat baru.
    • EROFS (Enhanced Read-Only File System), dirancang untuk digunakan pada partisi read-only, mengimplementasikan kemampuan untuk mengikat operasi dekompresi file terkompresi ke CPU untuk mengurangi penundaan akses data.
    • Penjadwal I/O BFQ telah menambahkan dukungan untuk drive disk pemintalan lanjutan, seperti yang menggunakan beberapa drive yang dikontrol secara terpisah (Multi Actuator).
    • Dukungan untuk enkripsi data menggunakan algoritma AES-SHA2 telah ditambahkan ke implementasi klien dan server NFS.
    • Subsistem FUSE (Filesystems In User Space) telah menambahkan dukungan untuk mekanisme ekstensi kueri, yang memungkinkan Anda memasukkan informasi tambahan ke dalam kueri. Berdasarkan fitur ini, penambahan pengidentifikasi grup ke permintaan FS diimplementasikan, yang diperlukan untuk memperhitungkan hak akses saat membuat objek di FS (buat, mkdir, symlink, mknod).
  • Virtualisasi dan Keamanan
    • Hypervisor KVM untuk sistem x86 menambahkan dukungan untuk hypercall Hyper-V yang diperluas dan menyediakan penerusan ke handler yang berjalan di lingkungan host ruang pengguna. Perubahan tersebut memungkinkan penerapan dukungan untuk peluncuran bersarang hypervisor Hyper-V.
    • KVM memudahkan untuk membatasi akses sistem tamu ke acara PMU (Performance Monitor Unit) yang terkait dengan pengukuran kinerja.
    • Mekanisme memfd, yang memungkinkan Anda untuk mengidentifikasi area memori melalui deskriptor file yang melewati proses, telah ditambahkan kemampuan untuk membuat area di mana eksekusi kode dilarang (memfd yang tidak dapat dieksekusi) dan tidak mungkin untuk mengatur hak eksekusi di masa depan.
    • Operasi prctl PR_SET_MDWE baru telah ditambahkan untuk memblokir upaya untuk menyertakan hak akses memori yang memungkinkan penulisan dan eksekusi pada waktu yang sama.
    • Ditambahkan dan diaktifkan secara default perlindungan terhadap serangan kelas Spectre, diimplementasikan berdasarkan mode otomatis IBRS (Enhanced Indirect Branch Restricted Speculation) yang diusulkan dalam prosesor AMD Zen 4, yang memungkinkan Anda untuk secara adaptif mengaktifkan dan menonaktifkan eksekusi spekulatif instruksi selama interupsi pemrosesan, panggilan sistem, dan sakelar konteks. Perlindungan yang diusulkan menghasilkan overhead yang lebih rendah dibandingkan dengan perlindungan Retpoline.
    • Mengatasi kerentanan yang dapat melewati perlindungan serangan Spectre v2 saat menggunakan teknologi multithreading simultan (SMT atau Hyper-Threading) dan disebabkan oleh penonaktifan STIBP (Single Thread Indirect Branch Predictors) saat memilih mode perlindungan IBRS.
    • Untuk sistem berbasis ARM64, target build "virtconfig" baru telah ditambahkan, yang, jika dipilih, hanya mengaktifkan set minimum komponen kernel yang diperlukan untuk melakukan booting dalam sistem virtualisasi.
    • Menambahkan dukungan untuk memfilter panggilan sistem menggunakan mekanisme seccomp untuk arsitektur m68k.
    • Menambahkan dukungan untuk perangkat CRB TPM2 (Command Response Buffer) bawaan prosesor AMD Ryzen berbasis teknologi Microsoft Pluton.
  • Subsistem jaringan
    • Antarmuka netlink telah ditambahkan untuk mengonfigurasi sublapisan PLCA (Physical Layer Collision Avoidance), yang ditentukan dalam spesifikasi IEEE 802.3cg-2019 dan digunakan dalam jaringan Ethernet 802.3cg (10Base-T1S) yang dioptimalkan untuk menghubungkan perangkat IoT dan sistem industri. Penggunaan PLCA meningkatkan kinerja pada jaringan Ethernet media bersama.
    • Dukungan untuk API "ekstensi nirkabel" untuk mengelola antarmuka nirkabel WiFi 7 (802.11be) telah dihentikan, karena API ini tidak mencakup semua pengaturan yang diperlukan. Saat mencoba menggunakan API "ekstensi nirkabel", yang terus didukung sebagai lapisan yang ditiru, peringatan sekarang akan ditampilkan untuk sebagian besar perangkat saat ini.
    • Dokumentasi terperinci tentang netlink API telah disiapkan (untuk pengembang kernel dan untuk pengembang aplikasi ruang pengguna). Utilitas ynl-gen-c telah diimplementasikan untuk menghasilkan kode-C berdasarkan spesifikasi YAML dari protokol Netlink.
    • Dukungan untuk opsi IP_LOCAL_PORT_RANGE telah ditambahkan ke soket jaringan untuk menyederhanakan konfigurasi koneksi keluar melalui penerjemah alamat tanpa menggunakan SNAT. Saat menggunakan alamat IP yang sama pada banyak host, IP_LOCAL_PORT_RANGE memungkinkan setiap host menggunakan jangkauan port jaringan keluarnya sendiri, dan pada gateway untuk meneruskan paket berdasarkan nomor port.
    • Untuk MPTCP (MultiPath TCP), kemampuan untuk memproses aliran campuran yang menggunakan protokol IPv4 dan IPv6 diimplementasikan. MPTCP adalah perpanjangan dari protokol TCP untuk mengatur operasi koneksi TCP dengan pengiriman paket secara bersamaan di sepanjang beberapa rute melalui antarmuka jaringan yang berbeda yang terikat pada alamat IP yang berbeda.
    • Untuk IPv4, kemungkinan menggunakan ekstensi BIG TCP diimplementasikan, yang memungkinkan peningkatan ukuran paket TCP maksimum hingga 4 GB untuk mengoptimalkan pengoperasian jaringan internal pusat data berkecepatan tinggi. Peningkatan ukuran paket dengan bidang header 16-bit ini dicapai dengan mengimplementasikan paket "jumbo" yang memiliki ukuran header IP disetel ke 0 dan ukuran sebenarnya ditransmisikan dalam bidang 32-bit terpisah di header terlampir terpisah.
    • Parameter sysctl baru default_rps_mask telah ditambahkan, di mana Anda dapat mengatur konfigurasi RPS (Receive Packet Steering) default, yang bertanggung jawab untuk mendistribusikan pemrosesan lalu lintas masuk ke seluruh inti CPU pada tingkat penangan interupsi.
    • Dukungan yang dihentikan untuk disiplin antrian untuk membatasi CBQ (antrian berbasis kelas), ATM (sirkuit virtual ATM), dsmark (penanda layanan yang dibedakan), tcindex (indeks kontrol lalu lintas), dan lalu lintas RSVP (protokol reservasi sumber daya). Disiplin ini telah lama ditinggalkan dan tidak ada yang mau melanjutkan dukungannya.
  • ΠžΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅
    • Menghapus semua driver grafis berbasis DRI1: i810 (kartu grafis terintegrasi Intel 8xx lama), mga (Matrox GPU), r128 (GPU ATI Rage 128 termasuk kartu Rage Fury, XPERT 99 dan XPERT 128), savage (S3 Savage GPU), sis ( Crusty SiS GPU), tdfx (3dfx Voodoo) dan via (VIA IGP), yang tidak digunakan lagi pada tahun 2016 dan tidak didukung di Mesa sejak 2012.
    • Menghapus driver framebuffer (fbdev) yang sudah usang omap1, s3c2410, tmiofb dan w100fb.
    • Driver DRM telah ditambahkan untuk VPU (Unit Pemrosesan Serba Guna) yang diintegrasikan ke dalam CPU Intel Meteor Lake (generasi ke-14), yang dirancang untuk mempercepat visi komputer dan operasi pembelajaran mesin. Pengemudi diimplementasikan menggunakan subsistem "accel", yang ditujukan untuk memberikan dukungan bagi akselerator komputasi, yang dapat disediakan baik dalam bentuk ASIC terpisah maupun sebagai blok IP di dalam SoC dan GPU.
    • Driver i915 (Intel) memperluas dukungan untuk kartu grafis Intel Arc (DG2/Alchemist) diskret, memberikan dukungan awal untuk GPU Meteor Lake, dan menyertakan dukungan untuk GPU Intel Xe HP 4tile.
    • Driver amdgpu menambahkan dukungan untuk teknologi AdaptiveSync dan kemampuan untuk menggunakan Tampilan Aman dengan banyak tampilan. Dukungan yang diperbarui untuk DCN 3.2 (Display Core Next), SR-IOV RAS, VCN RAS, SMU 13.x, dan DP 2.1.
    • Menambahkan dukungan untuk platform SM8350, SM8450 SM8550, SDM845 dan SC8280XP ke driver msm (GPU Qualcomm Adreno).
    • Driver Nouveau telah menghentikan dukungan untuk panggilan ioctl lama.
    • Dukungan eksperimental untuk NPU VerSilicon (VeriSilicon Neural Network Processor) telah ditambahkan ke driver etnaviv.
    • Driver pata_parport untuk drive IDE yang terhubung melalui port paralel telah diterapkan. Driver yang ditambahkan memungkinkan untuk menghapus driver PARIDE lama dari kernel dan memutakhirkan subsistem ATA. Keterbatasan driver baru adalah ketidakmampuan untuk secara bersamaan menghubungkan printer dan disk melalui port paralel.
    • Menambahkan driver ath12k untuk kartu nirkabel berdasarkan chip Qualcomm dengan dukungan Wi-Fi 7. Menambahkan dukungan untuk kartu nirkabel berdasarkan chip RealTek RTL8188EU.
    • Menambahkan dukungan untuk 46 papan berdasarkan arsitektur ARM64, termasuk Samsung Galaxy tab A (2015), Samsung Galaxy S5, BananaPi R3, Debix Model A, EmbedFire LubanCat 1/2, Facebook Greatlakes, Orange Pi R1 Plus, Tesla FSD, dan juga perangkat berdasarkan SoC Qualcomm MSM8953 (Snapdragon 610), SM8550 (Snapdragon 8 Gen 2), SDM450 dan SDM632, Rockchips RK3128 TV box, RV1126 Vision, RK3588, RK3568, RK3566, RK3588 dan RK3328, TI K3 (AM642/AM 654/AM68 / AM69).

Pada saat yang sama, Yayasan Perangkat Lunak Bebas Amerika Latin membentuk varian dari kernel 6.3 yang sepenuhnya gratis - Linux-libre 6.3-gnu, dibersihkan dari firmware dan elemen driver yang berisi komponen atau bagian kode yang tidak bebas, yang ruang lingkupnya dibatasi oleh pabrikan. Dalam rilis 6.3, gumpalan dibersihkan di driver baru ath12k, aw88395, dan peb2466, serta di file devicetree baru untuk perangkat qcom berbasis AArch64. Kode pembersihan blob yang diperbarui dalam driver dan subsistem amdgpu, xhci-rcar, qcom-q6v5-pas, sp8870, av7110, serta driver untuk kartu DVB dengan decoding perangkat lunak dan dalam file BPF yang telah dikompilasi. Menghentikan pembersihan driver mga, r128, tm6000, cpia2 dan r8188eu saat dihapus dari kernel. Peningkatan pembersihan gumpalan driver i915.

Sumber: opennet.ru

Tambah komentar