Keluaran kernel Linux 6.0

Selepas dua bulan pembangunan, Linus Torvalds membentangkan keluaran kernel Linux 6.0. Perubahan ketara dalam nombor versi adalah atas sebab estetik dan merupakan langkah rasmi untuk melegakan ketidakselesaan mengumpul sejumlah besar isu dalam siri ini (Linus bergurau bahawa sebab untuk menukar nombor cawangan adalah lebih berkemungkinan bahawa dia kehabisan jari. dan jari kaki untuk mengira nombor versi) . Antara perubahan yang paling ketara: sokongan untuk penulisan buffer tak segerak dalam XFS, pemacu blok ublk, pengoptimuman penjadual tugas, mekanisme untuk mengesahkan operasi kernel yang betul, sokongan untuk sifir blok ARIA.

Inovasi utama dalam kernel 6.0:

  • Subsistem cakera, I/O dan sistem fail
    • Sistem fail XFS telah menambah sokongan untuk penulisan buffer tak segerak menggunakan mekanisme io_uring. Ujian prestasi yang dijalankan menggunakan alat fio (1 benang, saiz blok 4kB, 600 saat, tulis berurutan) menunjukkan peningkatan dalam operasi input/output sesaat (IOPS) daripada 77k kepada 209k, kelajuan pemindahan data daripada 314MB/s kepada 854MB/s, dan penurunan kependaman daripada 9600ns kepada 120ns (80 kali).
    • Sistem fail Btrfs melaksanakan versi kedua protokol untuk arahan "hantar", yang melaksanakan sokongan untuk metadata tambahan, menghantar data dalam blok yang lebih besar (lebih daripada 64K) dan menghantar takat dalam bentuk termampat. Prestasi operasi baca langsung telah meningkat dengan ketara (sehingga 3 kali ganda) disebabkan bacaan serentak sehingga 256 sektor. Mengurangkan perbalahan mengunci dan mempercepatkan semakan metadata dengan mengurangkan metadata tersimpan untuk elemen tertunda.
    • Operasi ioctl baharu EXT4_IOC_GETFSUUID dan EXT4_IC_SETFSUUID telah ditambahkan pada sistem fail ext4 untuk mendapatkan semula atau menetapkan UUID yang disimpan dalam superblock.
    • Sistem fail F2FS menawarkan mod penggunaan memori yang rendah, yang mengoptimumkan operasi pada peranti dengan jumlah RAM yang kecil dan membolehkan anda mengurangkan penggunaan memori pada kos prestasi yang dikurangkan.
    • Menambah sokongan untuk pengesahan pemacu NVMe.
    • Pelayan NFSv4 melaksanakan had pada bilangan pelanggan aktif, yang ditetapkan sebagai 1024 pelanggan sah untuk setiap gigabait RAM dalam sistem.
    • Pelaksanaan klien CIFS telah meningkatkan prestasi dalam mod penghantaran berbilang saluran.
    • Bendera baharu FAN_MARK_IGNORE telah ditambahkan pada subsistem penjejakan acara dalam FS fanotify untuk mengabaikan acara tertentu.
    • Dalam FS Overlayfs, apabila dipasang di atas FS dengan pemetaan ID pengguna, sokongan yang betul untuk senarai kawalan akses yang mematuhi POSIX disediakan.
    • Menambahkan pemacu blok ublk, yang menggerakkan logik khusus ke sisi proses latar belakang dalam ruang pengguna dan menggunakan subsistem io_uring.
  • Perkhidmatan memori dan sistem
    • Ciri baharu telah ditambah pada subsistem DAMON (Data Access MONitor), yang membolehkan bukan sahaja memantau akses proses kepada RAM daripada ruang pengguna, tetapi juga mempengaruhi pengurusan memori. Khususnya, modul baharu "LRU_SORT" telah dicadangkan, yang menyediakan pengumpulan semula senarai LRU (Paling Kurang Digunakan) untuk meningkatkan keutamaan halaman ingatan tertentu.
    • Keupayaan untuk mencipta kawasan memori baharu telah dilaksanakan menggunakan keupayaan bas CXL (Compute Express Link), yang digunakan untuk mengatur interaksi berkelajuan tinggi antara CPU dan peranti memori. CXL membolehkan anda menyambungkan kawasan memori baharu yang disediakan oleh peranti memori luaran dan menggunakannya sebagai sumber ruang alamat fizikal tambahan untuk mengembangkan memori akses rawak (DDR) atau memori kekal (PMEM) sistem.
    • Menyelesaikan masalah prestasi dengan pemproses AMD Zen yang disebabkan oleh kod yang ditambahkan 20 tahun yang lalu untuk menyelesaikan isu perkakasan dalam beberapa set cip (arahan TUNGGU tambahan telah ditambahkan untuk memperlahankan pemproses supaya set cip mempunyai masa untuk memasuki keadaan terbiar). Perubahan itu mengakibatkan prestasi berkurangan di bawah beban kerja yang kerap silih berganti antara keadaan terbiar dan sibuk. Contohnya, selepas melumpuhkan penyelesaian, purata skor ujian tbench meningkat daripada 32191 MB/s kepada 33805 MB/s.
    • Kod dengan heuristik telah dialih keluar daripada penjadual tugas, memastikan penghijrahan proses ke CPU yang paling sedikit dimuatkan, dengan mengambil kira keuntungan yang diramalkan dalam penggunaan tenaga. Pembangun menyimpulkan bahawa heuristik tidak cukup berguna dan lebih mudah untuk mengalih keluar dan memindahkan proses tanpa penilaian tambahan apabila migrasi sedemikian berpotensi mengakibatkan penggunaan kuasa yang lebih rendah (contohnya, apabila CPU sasaran berada dalam peringkat kuasa yang lebih rendah). Melumpuhkan heuristik membawa kepada pengurangan penggunaan kuasa apabila melakukan tugas intensif, contohnya, dalam ujian penyahkodan video, penggunaan kuasa berkurangan sebanyak 5.6%.
    • Pengagihan tugas merentas teras CPU pada sistem besar telah dioptimumkan, yang telah meningkatkan prestasi untuk jenis beban kerja tertentu.
    • Antara muka I/O tak segerak io_uring menawarkan bendera baharu, IORING_RECV_MULTISHOT, yang membolehkan anda menggunakan mod berbilang tangkapan dengan panggilan sistem recv() untuk melaksanakan berbilang operasi baca daripada soket rangkaian yang sama sekali gus. io_uring juga menyokong pemindahan rangkaian tanpa penimbalan perantaraan (salinan sifar).
    • Melaksanakan keupayaan untuk meletakkan program BPF yang dilampirkan pada uprobe ke dalam keadaan tidur. BPF juga menambah ksym iterator baharu untuk bekerja dengan jadual simbol kernel.
    • Antara muka "efivars" yang usang dalam sysfs, bertujuan untuk akses kepada pembolehubah but UEFI, telah dialih keluar (FS maya efivarfs kini digunakan secara universal untuk mengakses data EFI).
    • Utiliti perf mempunyai laporan baharu untuk menganalisis konflik kunci dan masa yang dihabiskan oleh pemproses melaksanakan komponen kernel.
    • Tetapan CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE_O3 telah dialih keluar, yang membenarkan kernel dibina dalam mod pengoptimuman "-O3". Adalah diperhatikan bahawa percubaan dengan mod pengoptimuman boleh dijalankan dengan menghantar bendera semasa pemasangan (β€œbuat KCFLAGS=-O3”), dan menambah tetapan pada Kconfig memerlukan pemprofilan prestasi berulang, menunjukkan bahawa pembukaan gelung digunakan dalam mod β€œ-O3” memberikan manfaat berbanding dengan tahap pengoptimuman "-O2".
    • Antara muka debugfs telah ditambahkan untuk mendapatkan maklumat tentang operasi "pengecut memori" individu (pengendali dipanggil apabila tidak mencukupi memori dan struktur data kernel pembungkusan untuk mengurangkan penggunaan memori mereka).
    • Untuk seni bina OpenRISC dan LoongArch, sokongan untuk bas PCI dilaksanakan.
    • Untuk seni bina RISC-V, sambungan "Zicbom" telah dilaksanakan untuk mengurus peranti dengan DMA yang tidak koheren cache.
  • Maya dan Keselamatan
    • Mekanisme pengesahan RV (Runtime Verification) telah ditambahkan untuk mengesahkan operasi yang betul pada sistem yang sangat dipercayai yang menjamin tiada kegagalan. Pengesahan dilakukan pada masa jalan dengan melampirkan pengendali untuk mengesan titik yang menyemak kemajuan sebenar pelaksanaan terhadap model penentu rujukan yang telah ditetapkan bagi mesin yang mentakrifkan kelakuan yang dijangkakan sistem. Pengesahan dengan model pada masa jalan diletakkan sebagai kaedah yang lebih ringan dan mudah dilaksanakan untuk mengesahkan ketepatan pelaksanaan pada sistem kritikal, melengkapkan kaedah pengesahan kebolehpercayaan klasik. Antara kelebihan RV ialah keupayaan untuk menyediakan pengesahan yang ketat tanpa pelaksanaan berasingan bagi keseluruhan sistem dalam bahasa pemodelan, serta tindak balas yang fleksibel terhadap kejadian yang tidak dijangka.
    • Komponen kernel bersepadu untuk mengurus enklaf berdasarkan teknologi Intel SGX2 (Software Guard eXtensions), yang membolehkan aplikasi melaksanakan kod dalam kawasan memori terpencil yang disulitkan, yang mana seluruh sistem mempunyai akses terhad. Teknologi Intel SGX2 disokong dalam cip Intel Ice Lake dan Gemini Lake, dan berbeza daripada Intel SGX1 dalam arahan tambahan untuk pengurusan memori dinamik enklaf.
    • Untuk seni bina x86, keupayaan untuk memindahkan benih untuk penjana nombor pseudorandom melalui tetapan pemuat but telah dilaksanakan.
    • Modul SafeSetID LSM kini mempunyai keupayaan untuk mengurus perubahan yang dibuat melalui panggilan setgroups(). SafeSetID membenarkan perkhidmatan sistem mengurus pengguna dengan selamat tanpa meningkatkan keistimewaan (CAP_SETUID) dan tanpa mendapat keistimewaan root.
    • Menambah sokongan untuk sifir blok ARIA.
    • Modul pengurusan keselamatan berasaskan BPF menyediakan keupayaan untuk melampirkan pengendali kepada proses individu dan kumpulan proses (cgroup).
    • Mekanisme dengan pelaksanaan pengawas telah ditambahkan untuk mengesan gangguan sistem tetamu berdasarkan aktiviti vCPU pemantauan.
  • Subsistem rangkaian
    • Pengendali untuk menjana dan menyemak kuki SYN telah ditambahkan pada subsistem BPF. Turut ditambah ialah satu set fungsi (kfunc) untuk mengakses dan menukar keadaan sambungan.
    • Tindanan wayarles telah menambah sokongan untuk mekanisme MLO (Multi-Link Operation), yang ditakrifkan dalam spesifikasi WiFi 7 dan membenarkan peranti menerima dan menghantar data secara serentak menggunakan jalur frekuensi dan saluran yang berbeza, sebagai contoh, untuk mewujudkan beberapa saluran komunikasi secara serentak antara pusat akses kepada peranti pelanggan.
    • Prestasi protokol TLS yang dibina ke dalam kernel telah dipertingkatkan.
    • Menambahkan pilihan baris arahan kernel "hostname=" untuk membenarkan nama hos ditetapkan pada awal proses but, sebelum komponen ruang pengguna dimulakan.
  • ΠžΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅
    • Pemacu i915 (Intel) menyediakan sokongan untuk kad video diskret Intel Arc (DG2/Alchemist) A750 dan A770. Pelaksanaan awal sokongan untuk GPU Intel Ponte Vecchio (Xe-HPC) dan Tasik Meteor telah dicadangkan. Kerja terus menyokong platform Intel Raptor Lake.
    • Pemacu amdgpu terus menyediakan sokongan untuk platform AMD RDNA3 (RX 7000) dan CDNA (Instinct).
    • Pemacu Nouveau telah mengolah semula kod sokongan untuk enjin paparan GPU NVIDIA nv50.
    • Menambah pemacu DRM logicvc baharu untuk skrin LogiCVC.
    • Pemacu v3d (untuk Broadcom Video Core GPU) menyokong papan Raspberry Pi 4.
    • Menambah sokongan untuk Qualcomm Adreno 619 GPU pada pemacu msm.
    • Menambahkan sokongan untuk GPU ARM Mali Valhall pada pemacu Panfrost.
    • Menambahkan sokongan awal untuk pemproses Qualcomm Snapdragon 8cx Gen3 yang digunakan dalam komputer riba Lenovo ThinkPad X13s.
    • Menambah pemacu bunyi untuk platform AMD Raphael (Ryzen 7000), AMD Jadeite, Intel Meteor Lake dan Mediatek MT8186.
    • Menambah sokongan untuk pemecut pembelajaran mesin Intel Habana Gaudi 2.
    • Sokongan tambahan untuk ARM SoC Allwinner H616, NXP i.MX93, Sunplus SP7021, Nuvoton NPCM8XX, Marvell Prestera 98DX2530, Google Chameleon v3.

Pada masa yang sama, Yayasan Perisian Percuma Amerika Latin membentuk versi kernel percuma sepenuhnya 6.0 - Linux-libre 6.0-gnu, dibersihkan daripada elemen perisian tegar dan pemacu yang mengandungi komponen bukan bebas atau bahagian kod, yang skopnya adalah terhad oleh pengeluar. Keluaran baharu melumpuhkan penggunaan gumpalan dalam pemacu audio HD CS35L41 dan pemacu UCSI untuk mikropengawal STM32G0. Fail DTS untuk cip Qualcomm dan MediaTek telah dibersihkan. Pelumpuhan gumpalan dalam pemacu MediaTek MT76 telah diolah semula. Kod pembersihan gumpalan dikemas kini dalam pemacu dan subsistem AMDGPU, Adreno, Tegra VIC, Netronome NFP dan Habanalabs Gaudi2. Berhenti membersihkan pemacu VXGE, yang telah dialih keluar daripada kernel.

Sumber: opennet.ru

Tambah komen