Rilis kernel Linux 6.0

Setelah dua bulan pengembangan, Linus Torvalds meluncurkan rilis kernel Linux 6.0. Perubahan signifikan pada nomor versi adalah untuk alasan estetika dan merupakan langkah formal untuk menghilangkan ketidaknyamanan karena mengumpulkan sejumlah besar masalah dalam seri (Linus bercanda bahwa alasan mengubah nomor cabang lebih mungkin karena dia kehabisan jari. dan jari kaki untuk menghitung nomor versi). Di antara perubahan yang paling menonjol: dukungan untuk penulisan buffer asinkron di XFS, driver blok ublk, optimalisasi penjadwal tugas, mekanisme untuk memverifikasi pengoperasian kernel yang benar, dukungan untuk cipher blok ARIA.

Inovasi utama dalam kernel 6.0:

  • Subsistem Disk, I/O dan Sistem File
    • Sistem file XFS telah menambahkan dukungan untuk penulisan buffered asinkron menggunakan mekanisme io_uring. Uji kinerja yang dilakukan menggunakan alat fio (1 thread, ukuran blok 4kB, 600 detik, penulisan berurutan) menunjukkan peningkatan operasi input/output per detik (IOPS) dari 77k menjadi 209k, kecepatan transfer data dari 314MB/s menjadi 854MB/s, dan penurunan latensi dari 9600ns menjadi 120ns (80 kali).
    • Sistem file Btrfs mengimplementasikan versi kedua dari protokol untuk perintah "kirim", yang mengimplementasikan dukungan untuk metadata tambahan, mengirim data dalam blok yang lebih besar (lebih dari 64K) dan mentransmisikan luasan dalam bentuk terkompresi. Kinerja operasi pembacaan langsung telah meningkat secara signifikan (hingga 3 kali lipat) karena pembacaan simultan hingga 256 sektor. Mengurangi pertentangan penguncian dan mempercepat pemeriksaan metadata dengan mengurangi metadata yang dicadangkan untuk elemen yang ditangguhkan.
    • Operasi ioctl baru EXT4_IOC_GETFSUUID dan EXT4_IC_SETFSUUID telah ditambahkan ke sistem file ext4 untuk mengambil atau mengatur UUID yang disimpan di superblock.
    • Sistem file F2FS menawarkan mode konsumsi memori rendah, yang mengoptimalkan pengoperasian pada perangkat dengan jumlah RAM kecil dan memungkinkan Anda mengurangi konsumsi memori dengan mengorbankan penurunan kinerja.
    • Menambahkan dukungan untuk autentikasi drive NVMe.
    • Server NFSv4 menerapkan batasan jumlah klien aktif, yaitu ditetapkan 1024 klien valid untuk setiap gigabyte RAM dalam sistem.
    • Implementasi klien CIFS telah meningkatkan kinerja dalam mode transmisi multi-saluran.
    • Bendera baru FAN_MARK_IGNORE telah ditambahkan ke subsistem pelacakan peristiwa di fanotify FS untuk mengabaikan peristiwa tertentu.
    • Di Overlayfs FS, ketika dipasang di atas FS dengan pemetaan ID pengguna, dukungan yang benar untuk daftar kontrol akses yang sesuai dengan POSIX disediakan.
    • Menambahkan driver blok ublk, yang memindahkan logika tertentu ke sisi proses latar belakang di ruang pengguna dan menggunakan subsistem io_uring.
  • Layanan memori dan sistem
    • Fitur-fitur baru telah ditambahkan ke subsistem DAMON (Data Access MONitor), yang memungkinkan tidak hanya memantau akses proses ke RAM dari ruang pengguna, tetapi juga mempengaruhi manajemen memori. Secara khusus, modul baru “LRU_SORT” telah diusulkan, yang menyediakan pengelompokan ulang daftar LRU (Paling Sedikit Digunakan) untuk meningkatkan prioritas halaman memori tertentu.
    • Kemampuan untuk membuat wilayah memori baru diimplementasikan menggunakan kemampuan bus CXL (Compute Express Link), yang digunakan untuk mengatur interaksi berkecepatan tinggi antara CPU dan perangkat memori. CXL memungkinkan Anda menghubungkan wilayah memori baru yang disediakan oleh perangkat memori eksternal dan menggunakannya sebagai sumber daya ruang alamat fisik tambahan untuk memperluas memori akses acak (DDR) atau memori permanen (PMEM) sistem.
    • Menyelesaikan masalah kinerja dengan prosesor AMD Zen yang disebabkan oleh kode yang ditambahkan 20 tahun lalu untuk mengatasi masalah perangkat keras di beberapa chipset (instruksi WAIT tambahan ditambahkan untuk memperlambat prosesor sehingga chipset punya waktu untuk masuk ke kondisi idle). Perubahan ini mengakibatkan penurunan performa pada beban kerja yang sering berganti-ganti antara kondisi menganggur dan sibuk. Misalnya, setelah menonaktifkan solusi tersebut, rata-rata skor tes tbench meningkat dari 32191 MB/s menjadi 33805 MB/s.
    • Kode dengan heuristik telah dihapus dari penjadwal tugas, memastikan migrasi proses ke CPU dengan beban paling sedikit, dengan mempertimbangkan perkiraan peningkatan konsumsi energi. Pengembang menyimpulkan bahwa heuristik tidak cukup berguna dan lebih mudah untuk menghapusnya dan memigrasikan proses tanpa evaluasi tambahan setiap kali migrasi tersebut berpotensi menghasilkan konsumsi daya yang lebih rendah (misalnya, ketika CPU target berada pada tingkat daya yang lebih rendah). Menonaktifkan heuristik menyebabkan pengurangan konsumsi daya saat melakukan tugas intensif, misalnya pada pengujian decoding video, konsumsi daya menurun sebesar 5.6%.
    • Distribusi tugas di seluruh inti CPU pada sistem besar telah dioptimalkan, sehingga meningkatkan kinerja untuk jenis beban kerja tertentu.
    • Antarmuka I/O asinkron io_uring menawarkan flag baru, IORING_RECV_MULTISHOT, yang memungkinkan Anda menggunakan mode multi-shot dengan panggilan sistem recv() untuk melakukan beberapa operasi baca dari soket jaringan yang sama sekaligus. io_uring juga mendukung transfer jaringan tanpa buffering perantara (zero-copy).
    • Menerapkan kemampuan untuk menempatkan program BPF yang terpasang pada uprobe ke dalam kondisi tidur. BPF juga menambahkan ksym iterator baru untuk bekerja dengan tabel simbol kernel.
    • Antarmuka “efivars” yang usang di sysfs, yang dimaksudkan untuk akses ke variabel boot UEFI, telah dihapus (FS virtual efivarfs sekarang digunakan secara universal untuk mengakses data EFI).
    • Utilitas perf memiliki laporan baru untuk menganalisis konflik kunci dan waktu yang dihabiskan oleh prosesor untuk mengeksekusi komponen kernel.
    • Pengaturan CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3 telah dihapus, yang memungkinkan kernel dibangun dalam mode optimasi "-O3". Perlu dicatat bahwa percobaan dengan mode pengoptimalan dapat dilakukan dengan meneruskan flag selama perakitan (“make KCFLAGS=-O3”), dan menambahkan pengaturan ke Kconfig memerlukan profil kinerja yang dapat diulang, menunjukkan bahwa pembukaan gulungan loop yang digunakan dalam mode “-O3” memberikan keuntungan dibandingkan dengan tingkat optimasi “-O2”.
    • Antarmuka debugfs telah ditambahkan untuk memperoleh informasi tentang pengoperasian masing-masing “penyusut memori” (penangan dipanggil ketika memori tidak mencukupi dan mengemas struktur data kernel untuk mengurangi konsumsi memorinya).
    • Untuk arsitektur OpenRISC dan LoongArch, dukungan untuk bus PCI diterapkan.
    • Untuk arsitektur RISC-V, ekstensi “Zicbom” telah diterapkan untuk mengelola perangkat dengan DMA yang tidak koheren dengan cache.
  • Virtualisasi dan Keamanan
    • Mekanisme verifikasi RV (Verifikasi Runtime) telah ditambahkan untuk memverifikasi pengoperasian yang benar pada sistem yang sangat andal yang menjamin tidak ada kegagalan. Verifikasi dilakukan saat runtime dengan melampirkan penangan ke titik penelusuran yang memeriksa kemajuan aktual eksekusi terhadap model mesin deterministik referensi yang telah ditentukan sebelumnya yang menentukan perilaku sistem yang diharapkan. Verifikasi dengan model saat runtime diposisikan sebagai metode yang lebih ringan dan mudah diterapkan untuk mengonfirmasi kebenaran eksekusi pada sistem kritis, melengkapi metode verifikasi keandalan klasik. Di antara kelebihan RV adalah kemampuannya untuk memberikan verifikasi yang ketat tanpa implementasi terpisah dari seluruh sistem dalam bahasa pemodelan, serta respons yang fleksibel terhadap kejadian yang tidak terduga.
    • Komponen kernel terintegrasi untuk mengelola enklave berdasarkan teknologi Intel SGX2 (Software Guard eXtensions), yang memungkinkan aplikasi mengeksekusi kode di area memori terenkripsi yang terisolasi, yang aksesnya terbatas pada seluruh sistem. Teknologi Intel SGX2 didukung dalam chip Intel Ice Lake dan Gemini Lake, dan berbeda dari Intel SGX1 dalam instruksi tambahan untuk manajemen memori dinamis enklave.
    • Untuk arsitektur x86, kemampuan untuk mentransfer seed untuk generator nomor pseudorandom melalui pengaturan bootloader telah diterapkan.
    • Modul LSM SafeSetID sekarang memiliki kemampuan untuk mengelola perubahan yang dilakukan melalui panggilan setgroups(). SafeSetID memungkinkan layanan sistem mengelola pengguna dengan aman tanpa meningkatkan hak istimewa (CAP_SETUID) dan tanpa mendapatkan hak akses root.
    • Menambahkan dukungan untuk cipher blok ARIA.
    • Modul manajemen keamanan berbasis BPF menyediakan kemampuan untuk melampirkan penangan ke proses individu dan kelompok proses (cgroups).
    • Mekanisme dengan implementasi pengawas telah ditambahkan untuk mendeteksi hang pada sistem tamu berdasarkan pemantauan aktivitas vCPU.
  • Subsistem jaringan
    • Penangan untuk menghasilkan dan memeriksa cookie SYN telah ditambahkan ke subsistem BPF. Juga ditambahkan serangkaian fungsi (kfunc) untuk mengakses dan mengubah status koneksi.
    • Tumpukan nirkabel telah menambahkan dukungan untuk mekanisme MLO (Operasi Multi-Link), yang ditentukan dalam spesifikasi WiFi 7 dan memungkinkan perangkat untuk menerima dan mengirim data secara bersamaan menggunakan pita frekuensi dan saluran yang berbeda, misalnya, untuk secara bersamaan membuat beberapa saluran komunikasi antara sebuah titik akses ke perangkat klien.
    • Kinerja protokol TLS yang dibangun di dalam kernel telah ditingkatkan.
    • Menambahkan opsi baris perintah kernel "hostname=" untuk memungkinkan nama host disetel di awal proses booting, sebelum komponen ruang pengguna dimulai.
  • Оборудование
    • Driver i915 (Intel) menyediakan dukungan untuk kartu video diskrit Intel Arc (DG2/Alchemist) A750 dan A770. Implementasi awal dukungan untuk Intel Ponte Vecchio (Xe-HPC) dan GPU Meteor Lake telah diusulkan. Pekerjaan terus dilakukan untuk mendukung platform Intel Raptor Lake.
    • Driver amdgpu terus memberikan dukungan untuk platform AMD RDNA3 (RX 7000) dan CDNA (Instinct).
    • Driver Nouveau telah mengerjakan ulang kode dukungan untuk mesin tampilan GPU NVIDIA nv50.
    • Menambahkan driver DRM logicvc baru untuk layar LogiCVC.
    • Driver v3d (untuk Broadcom Video Core GPU) mendukung papan Raspberry Pi 4.
    • Menambahkan dukungan untuk GPU Qualcomm Adreno 619 ke driver msm.
    • Menambahkan dukungan untuk GPU ARM Mali Valhall ke driver Panfrost.
    • Menambahkan dukungan awal untuk prosesor Qualcomm Snapdragon 8cx Gen3 yang digunakan di laptop Lenovo ThinkPad X13s.
    • Menambahkan driver suara untuk platform AMD Raphael (Ryzen 7000), AMD Jadeite, Intel Meteor Lake dan Mediatek MT8186.
    • Menambahkan dukungan untuk akselerator pembelajaran mesin Intel Habana Gaudi 2.
    • Menambahkan dukungan untuk ARM SoC Allwinner H616, NXP i.MX93, Sunplus SP7021, Nuvoton NPCM8XX, Marvell Prestera 98DX2530, Google Chameleon v3.

Pada saat yang sama, Yayasan Perangkat Lunak Bebas Amerika Latin membentuk versi kernel 6.0 yang sepenuhnya gratis - Linux-libre 6.0-gnu, dibersihkan dari elemen firmware dan driver yang berisi komponen atau bagian kode tidak bebas, yang ruang lingkupnya adalah dibatasi oleh pabrikan. Rilis baru ini menonaktifkan penggunaan blob di driver audio HD CS35L41 dan driver UCSI untuk mikrokontroler STM32G0. File DTS untuk chip Qualcomm dan MediaTek telah dibersihkan. Penonaktifan blob pada driver MediaTek MT76 telah dikerjakan ulang. Kode pembersihan gumpalan diperbarui di driver dan subsistem AMDGPU, Adreno, Tegra VIC, Netronome NFP, dan Habanalabs Gaudi2. Berhenti membersihkan driver VXGE, yang telah dihapus dari kernel.

Sumber: opennet.ru

Tambah komentar