Rilis kernel Linux 5.14

Setelah dua bulan pengembangan, Linus Torvalds meluncurkan rilis kernel Linux 5.14. Di antara perubahan yang paling menonjol: panggilan sistem kuotactl_fd() dan memfd_secret() baru, penghapusan driver ide dan mentah, pengontrol prioritas I/O baru untuk cgroup, mode penjadwalan tugas SCHED_CORE, infrastruktur untuk membuat pemuat program BPF yang terverifikasi.

Versi baru mencakup 15883 perbaikan dari 2002 pengembang, ukuran patch 69 MB (perubahan mempengaruhi 12580 file, 861501 baris kode ditambahkan, 321654 baris dihapus). Sekitar 47% dari semua perubahan yang diperkenalkan di 5.14 terkait dengan driver perangkat, sekitar 14% perubahan terkait dengan pembaruan kode khusus untuk arsitektur perangkat keras, 13% terkait dengan tumpukan jaringan, 3% terkait dengan sistem file, dan 3% terkait dengan subsistem kernel internal.

Inovasi utama:

  • Subsistem Disk, I/O dan Sistem File
    • Pengontrol prioritas I/O baru telah diterapkan untuk cgroup, rq-qos, yang dapat mengontrol prioritas pemrosesan permintaan untuk memblokir perangkat yang dihasilkan oleh anggota setiap cgroup. Dukungan pengontrol prioritas baru telah ditambahkan ke penjadwal I/O tenggat waktu mq.
    • Sistem file ext4 mengimplementasikan perintah ioctl baru, EXT4_IOC_CHECKPOINT, yang memaksa semua transaksi yang tertunda dari jurnal dan buffer terkait untuk dipindahkan ke disk, dan juga menimpa area yang digunakan oleh jurnal dalam penyimpanan. Perubahan ini disiapkan sebagai bagian dari inisiatif untuk mencegah kebocoran informasi dari sistem file.
    • Pengoptimalan kinerja telah dilakukan pada Btrfs: dengan menghilangkan logging atribut yang diperluas yang tidak perlu selama eksekusi fsync, kinerja operasi intensif dengan atribut yang diperluas telah meningkat hingga 17%. Selain itu, saat melakukan operasi pemangkasan yang tidak memengaruhi luasan, sinkronisasi penuh dinonaktifkan, sehingga mengurangi waktu pengoperasian sebesar 12%. Pengaturan telah ditambahkan ke sysfs untuk membatasi bandwidth I/O saat memeriksa FS. Menambahkan panggilan ioctl untuk membatalkan pengubahan ukuran dan penghapusan operasi perangkat.
    • Di XFS, implementasi cache buffer telah didesain ulang, yang telah dialihkan ke alokasi halaman memori dalam mode batch. Peningkatan efisiensi cache.
    • F2FS menambahkan opsi untuk beroperasi dalam mode baca-saja dan mengimplementasikan mode cache blok terkompresi (compress_cache) untuk meningkatkan kinerja pembacaan acak. Dukungan telah diterapkan untuk mengompresi file yang dipetakan ke memori menggunakan operasi mmap(). Untuk menonaktifkan kompresi file secara selektif berdasarkan mask, opsi mount baru nocompress telah diusulkan.
    • Pekerjaan telah dilakukan pada driver exFAT untuk meningkatkan kompatibilitas dengan beberapa penyimpanan kamera digital.
    • Menambahkan panggilan sistem kuotactl_fd(), yang memungkinkan Anda mengelola kuota tidak melalui file perangkat khusus, namun dengan menentukan deskriptor file yang terkait dengan sistem file yang kuotanya diterapkan.
    • Driver lama untuk perangkat blok dengan antarmuka IDE telah dihapus dari kernel, mereka telah lama digantikan oleh subsistem libata.
    • Driver "mentah" telah dihapus dari kernel, menyediakan akses tanpa buffer untuk memblokir perangkat melalui antarmuka /dev/raw. Fungsionalitas ini telah lama diterapkan dalam aplikasi yang menggunakan flag O_DIRECT.
  • Layanan memori dan sistem
    • Penjadwal tugas menerapkan mode penjadwalan baru, SCHED_CORE, yang memungkinkan Anda mengontrol proses mana yang dapat dijalankan bersama pada inti CPU yang sama. Setiap proses dapat diberi pengidentifikasi cookie yang menentukan cakupan kepercayaan antar proses (misalnya, milik pengguna atau wadah yang sama). Saat mengatur eksekusi kode, penjadwal dapat memastikan bahwa satu inti CPU hanya dibagikan di antara proses yang terkait dengan pemilik yang sama, yang dapat digunakan untuk memblokir beberapa serangan Spectre dengan mencegah tugas tepercaya dan tidak tepercaya berjalan di thread SMT (Hyper Threading) yang sama .
    • Untuk cgroup, dukungan untuk operasi kill telah diterapkan, yang memungkinkan Anda untuk mematikan semua proses yang terkait dengan grup sekaligus (kirim SIGKILL) dengan menulis “1” ke file virtual cgroup.kill.
    • Kemampuan yang diperluas terkait dengan respons terhadap deteksi kunci terpisah (“kunci terpisah”) yang terjadi saat mengakses data yang tidak selaras di memori karena fakta bahwa saat menjalankan instruksi atom, data melintasi dua baris cache CPU. Pemblokiran seperti itu menyebabkan penurunan kinerja yang signifikan, sehingga sebelumnya aplikasi yang menyebabkan pemblokiran dapat dihentikan secara paksa. Rilis baru ini menambahkan parameter baris perintah kernel “split_lock_detect=ratelimit:N”, yang memungkinkan Anda menentukan batas seluruh sistem pada laju operasi penguncian per detik, setelah melebihi proses apa pun yang menjadi sumber kunci terpisah akan dipaksa berhenti selama 20 ms alih-alih berhenti.
    • Pengontrol bandwidth cgroup CFS (CFS bandwidth controller), yang menentukan berapa banyak waktu prosesor yang dapat dialokasikan ke setiap cgroup, mengimplementasikan kemampuan untuk menentukan batas waktu terbatas, yang memungkinkan pengaturan beban kerja sensitif latensi yang lebih baik. Misalnya, menyetel cpu.cfs_quota_us ke 50000 dan cpu.cfs_period_us ke 100000 akan memungkinkan sekelompok proses membuang 100 md waktu CPU setiap 50 md.
    • Menambahkan infrastruktur awal untuk membuat pemuat program BPF, yang selanjutnya akan memungkinkan pemuatan program BPF saja yang ditandatangani dengan kunci digital tepercaya.
    • Menambahkan operasi futex baru FUTEX_LOCK_PI2, yang menggunakan pengatur waktu monotonik untuk menghitung batas waktu yang memperhitungkan waktu yang dihabiskan oleh sistem dalam mode tidur.
    • Untuk arsitektur RISC-V, dukungan untuk halaman memori besar (Transparent Huge-Pages) dan kemampuan untuk menggunakan mekanisme KFENCE untuk mendeteksi kesalahan saat bekerja dengan memori diimplementasikan.
    • Panggilan sistem madvise(), yang menyediakan sarana untuk mengoptimalkan manajemen memori suatu proses, telah menambahkan flag MADV_POPULATE_READ dan MADV_POPULATE_WRITE untuk menghasilkan "kesalahan halaman" pada semua halaman memori yang dipetakan ke operasi baca atau tulis, tanpa melakukan operasi baca atau tulis yang sebenarnya (standar). Penggunaan flag dapat berguna untuk mengurangi penundaan dalam eksekusi program, karena eksekusi proaktif dari pengendali “kesalahan halaman” untuk semua halaman yang tidak terisi sekaligus, tanpa menunggu akses sebenarnya ke halaman tersebut.
    • Sistem pengujian unit kunit telah menambahkan dukungan untuk menjalankan pengujian di lingkungan QEMU.
    • Pelacak baru telah ditambahkan: "osnoise" untuk melacak penundaan aplikasi yang disebabkan oleh penanganan interupsi, dan "timerlat" untuk menampilkan informasi rinci tentang penundaan saat bangun dari sinyal pengatur waktu.
  • Virtualisasi dan Keamanan
    • Panggilan sistem memfd_secret() telah ditambahkan untuk membuat area memori pribadi di ruang alamat terisolasi, hanya terlihat oleh proses pemilik, tidak tercermin pada proses lain, dan tidak dapat diakses langsung oleh kernel.
    • Dalam sistem pemfilteran panggilan sistem seccomp, saat memindahkan penangan pemblokiran ke ruang pengguna, dimungkinkan untuk menggunakan operasi atom tunggal untuk membuat deskriptor file untuk tugas yang terisolasi dan mengembalikannya saat memproses panggilan sistem. Operasi yang diusulkan memecahkan masalah interupsi pengendali di ruang pengguna ketika sinyal tiba.
    • Menambahkan mekanisme baru untuk mengelola batas sumber daya di namespace ID pengguna, yang mengikat penghitung rlimit individual ke pengguna di "namespace pengguna". Perubahan tersebut memecahkan masalah dengan penggunaan penghitung sumber daya umum ketika satu pengguna menjalankan proses dalam wadah yang berbeda.
    • Hypervisor KVM untuk sistem ARM64 telah menambahkan kemampuan untuk menggunakan ekstensi MTE (MemTag, Memory Tagging Extension) di sistem tamu, yang memungkinkan Anda mengikat tag ke setiap operasi alokasi memori dan mengatur pemeriksaan penggunaan pointer yang benar untuk memblokir eksploitasi kerentanan yang disebabkan oleh akses ke blok memori yang sudah dibebaskan, buffer berlebih, akses sebelum inisialisasi, dan penggunaan di luar konteks saat ini.
    • Fasilitas Otentikasi Pointer platform ARM64 sekarang dapat dikonfigurasi secara terpisah untuk kernel dan ruang pengguna. Teknologi ini memungkinkan Anda menggunakan instruksi ARM64 khusus untuk memverifikasi alamat pengirim menggunakan tanda tangan digital yang disimpan di bit atas penunjuk itu sendiri yang tidak digunakan.
    • Linux mode pengguna telah menambahkan dukungan untuk menggunakan driver untuk perangkat PCI dengan bus PCI virtual, yang diimplementasikan oleh driver PCI-over-virtio.
    • Untuk sistem x86, menambahkan dukungan untuk perangkat paravirtualized virtio-iommu, memungkinkan permintaan IOMMU seperti ATTACH, DETACH, MAP dan UNMAP dikirim melalui transport virtio tanpa meniru tabel halaman memori.
    • Untuk CPU Intel, dari keluarga Skylake hingga Coffee Lake, penggunaan Intel TSX (Transactional Synchronization Extensions), yang menyediakan alat untuk meningkatkan kinerja aplikasi multi-thread dengan secara dinamis menghilangkan operasi sinkronisasi yang tidak diperlukan, dinonaktifkan secara default. Ekstensi dinonaktifkan karena kemungkinan serangan Zombieload yang memanipulasi kebocoran informasi melalui saluran pihak ketiga yang terjadi selama pengoperasian mekanisme TAA (TSX Asynchronous Abort).
  • Subsistem jaringan
    • Integrasi ke dalam inti MPTCP (MultiPath TCP), perpanjangan dari protokol TCP untuk mengatur pengoperasian koneksi TCP dengan pengiriman paket secara bersamaan sepanjang beberapa rute melalui antarmuka jaringan berbeda yang terkait dengan alamat IP berbeda. Rilis baru ini menambahkan mekanisme untuk mengatur kebijakan hashing lalu lintas Anda sendiri untuk IPv4 dan IPv6 (kebijakan hash multipath), sehingga memungkinkan untuk menentukan dari ruang pengguna bidang mana dalam paket, termasuk yang dienkapsulasi, yang akan digunakan saat menghitung hash yang menentukan pilihan jalur untuk paket tersebut.
    • Dukungan untuk soket SOCK_SEQPACKET (transmisi datagram yang teratur dan andal) telah ditambahkan ke transportasi virtual virtio.
    • Kemampuan mekanisme soket SO_REUSEPORT telah diperluas, yang memungkinkan beberapa soket pendengar terhubung ke satu port sekaligus untuk menerima koneksi dengan distribusi permintaan masuk secara bersamaan ke semua soket yang terhubung melalui SO_REUSEPORT, yang menyederhanakan pembuatan aplikasi server multi-thread . Versi baru menambahkan alat untuk mentransfer kontrol ke soket lain jika terjadi kegagalan saat memproses permintaan oleh soket yang dipilih pertama kali (memecahkan masalah hilangnya koneksi individual saat memulai ulang layanan).
  • Оборудование
    • Driver amdgpu memberikan dukungan untuk GPU seri AMD Radeon RX 6000 baru, dengan nama kode “Beige Goby” (Navi 24) dan “Yellow Carp”, serta peningkatan dukungan untuk GPU Aldebaran (gfx90a) dan APU Van Gogh. Menambahkan kemampuan untuk bekerja secara bersamaan dengan beberapa panel eDP. Untuk APU Renoir, dukungan untuk bekerja dengan buffer terenkripsi di memori video (TMZ, Trusted Memory Zone) telah diterapkan. Menambahkan dukungan untuk kartu grafis hot-unplug. Untuk GPU Radeon RX 6000 (Navi 2x) dan GPU AMD lama, dukungan ASPM (Active State Power Management) diaktifkan secara default, yang sebelumnya hanya diaktifkan untuk GPU Navi 1x, Vega, dan Polaris.
    • Untuk chip AMD, dukungan untuk memori virtual bersama (SVM, memori virtual bersama) telah ditambahkan berdasarkan subsistem HMM (Manajemen memori heterogen), yang memungkinkan penggunaan perangkat dengan unit manajemen memorinya sendiri (MMU, unit manajemen memori), yang dapat mengakses memori utama. Secara khusus, dengan menggunakan HMM, Anda dapat mengatur ruang alamat bersama antara GPU dan CPU, di mana GPU dapat mengakses memori utama dari proses tersebut.
    • Menambahkan dukungan awal untuk teknologi AMD Smart Shift, yang secara dinamis mengubah pengaturan daya CPU dan GPU pada laptop dengan chipset AMD dan kartu grafis untuk meningkatkan kinerja saat bermain game, pengeditan video, dan rendering 3D.
    • Driver i915 untuk kartu grafis Intel mencakup dukungan untuk chip Intel Alderlake P.
    • Menambahkan driver drm/hyperv untuk adaptor grafis virtual Hyper-V.
    • Menambahkan dukungan untuk komputer all-in-one Raspberry Pi 400.
    • Menambahkan driver privasi Dell-wmi untuk mendukung kamera perangkat keras dan sakelar mikrofon yang disertakan dalam laptop Dell.
    • Untuk laptop Lenovo, antarmuka WMI telah ditambahkan untuk mengubah pengaturan BIOS melalui sysfs /sys/class/firmware-attributes/.
    • Dukungan yang diperluas untuk perangkat dengan antarmuka USB4.
    • Menambahkan dukungan untuk kartu suara dan codec AmLogic SM1 TOACODEC, Intel AlderLake-M, NXP i.MX8, NXP TFA1, TDF9897, Rockchip RK817, Qualcomm Quinary MI2 dan Texas Instruments TAS2505. Peningkatan dukungan audio pada laptop HP dan ASUS. Menambahkan patch untuk mengurangi penundaan sebelum audio mulai diputar di perangkat USB.

Sumber: opennet.ru

Tambah komentar