Linux 5.14 çekirdek sürümü

İki aylık geliştirme sürecinin ardından Linus Torvalds, Linux çekirdeği 5.14'ün sürümünü sundu. En dikkate değer değişiklikler arasında: yeni quotactl_fd() ve memfd_secret() sistem çağrıları, ide ve ham sürücülerin kaldırılması, cgroup için yeni I/O öncelik denetleyicisi, SCHED_CORE görev planlama modu, doğrulanmış BPF program yükleyicileri oluşturmaya yönelik altyapı.

Yeni sürüm, 15883 geliştiriciden gelen 2002 düzeltmeyi içeriyor, yama boyutu 69 MB (değişiklikler 12580 dosyayı etkiledi, 861501 satır kod eklendi, 321654 satır silindi). 47'te yapılan değişikliklerin yaklaşık %5.14'si aygıt sürücüleriyle, değişikliklerin yaklaşık %14'ü donanım mimarilerine özgü kodların güncellenmesiyle, %13'ü ağ yığınıyla, %3'ü dosya sistemleriyle ve %3'ü dahili çekirdek alt sistemleriyle ilgilidir.

Ana yenilikler:

  • Disk Alt Sistemi, G/Ç ve Dosya Sistemleri
    • Her bir grubun üyeleri tarafından oluşturulan cihazları engellemek için isteklerin işlem önceliğini kontrol edebilen, gruplar için yeni bir G/Ç önceliklendirme denetleyicisi rq-qos uygulandı. mq-deadline I/O planlayıcısına yeni öncelik denetleyicisi desteği eklendi.
    • Ext4 dosya sistemi yeni bir ioctl komutu olan EXT4_IOC_CHECKPOINT'i uygular; bu komut, günlükteki tüm bekleyen işlemlerin ve ilgili arabelleklerin diske aktarılmasını zorlar ve ayrıca depolamada günlük tarafından kullanılan alanın üzerine yazar. Değişiklik, dosya sistemlerinden bilgi sızıntısını önlemeye yönelik bir girişimin parçası olarak hazırlandı.
    • Btrfs'de performans optimizasyonları yapıldı: fsync yürütme sırasında genişletilmiş özniteliklerin gereksiz şekilde günlüğe kaydedilmesinin ortadan kaldırılmasıyla, genişletilmiş özniteliklere sahip yoğun işlemlerin performansı %17'ye kadar arttı. Ayrıca kapsamları etkilemeyen trim işlemleri yapılırken tam senkronizasyon devre dışı bırakılarak çalışma süresi %12 oranında azaltıldı. FS'yi kontrol ederken G/Ç bant genişliğini sınırlamak için sysfs'e bir ayar eklendi. Yeniden boyutlandırmayı ve cihaz işlemlerini silmeyi iptal etmek için ioctl çağrıları eklendi.
    • XFS'de, arabellek önbelleğinin uygulaması yeniden tasarlandı ve bellek sayfalarının toplu modda tahsis edilmesine geçildi. Geliştirilmiş önbellek verimliliği.
    • F2FS, salt okunur modda çalışma seçeneği ekler ve rastgele okuma performansını artırmak için sıkıştırılmış blok önbellek modunu (compress_cache) uygular. Mmap() işlemi kullanılarak belleğe eşlenen dosyaların sıkıştırılması için destek uygulanmıştır. Bir maskeye dayalı olarak dosya sıkıştırmasını seçici olarak devre dışı bırakmak için, yeni bir sıkıştırmasız bağlama seçeneği önerilmiştir.
    • ExFAT sürücüsünde bazı dijital kamera depolama birimleriyle uyumluluğu geliştirmek için çalışmalar yapıldı.
    • Kotaları özel bir aygıt dosyası aracılığıyla değil, kotanın uygulandığı dosya sistemiyle ilişkili bir dosya tanımlayıcı belirterek yönetmenize olanak tanıyan quotactl_fd() sistem çağrısı eklendi.
    • IDE arayüzlü blok aygıtların eski sürücüleri çekirdekten kaldırıldı, bunların yerini uzun süredir libata alt sistemi aldı.
    • "Raw" sürücüsü çekirdekten kaldırılarak, /dev/raw arayüzü aracılığıyla blok aygıtlara tamponsuz erişim sağlandı. Bu işlevsellik uzun süredir O_DIRECT bayrağını kullanan uygulamalarda uygulanmaktadır.
  • Bellek ve sistem hizmetleri
    • Görev zamanlayıcı, aynı CPU çekirdeğinde hangi işlemlerin birlikte yürütülebileceğini kontrol etmenize olanak tanıyan yeni bir zamanlama modu olan SCHED_CORE'u uygular. Her işleme, işlemler arasındaki güvenin kapsamını tanımlayan (örneğin, aynı kullanıcıya veya konteynere ait) bir çerez tanımlayıcı atanabilir. Kod yürütmeyi düzenlerken zamanlayıcı, bir CPU çekirdeğinin yalnızca aynı sahiple ilişkili işlemler arasında paylaşılmasını sağlayabilir; bu, güvenilir ve güvenilmeyen görevlerin aynı SMT (Hyper Threading) iş parçacığı üzerinde çalışmasını önleyerek bazı Spectre saldırılarını engellemek için kullanılabilir. .
    • Cgroup için, cgroup.kill sanal dosyasına "1" yazarak grupla ilişkili tüm işlemleri bir kerede öldürmenize (SIGKILL gönder) olanak tanıyan kill işlemi desteği uygulandı.
    • Atomik bir talimat yürütülürken verilerin iki CPU önbellek hattını geçmesi nedeniyle bellekteki hizalanmamış verilere erişirken ortaya çıkan bölünmüş kilitlerin ("bölünmüş kilitler") tespitine yanıt vermeyle ilgili genişletilmiş yetenekler. Bu tür bir engelleme, performansta önemli bir düşüşe yol açar; bu nedenle, önceden engellemeye neden olan uygulamayı zorla sonlandırmak mümkündü. Yeni sürüm, bölünmüş kilidin kaynağı haline gelen herhangi bir işlemin aşılmasından sonra saniye başına kilitleme işlemlerinin hızına ilişkin sistem çapında bir sınır tanımlamanıza olanak tanıyan "split_lock_detect=ratelimit:N" çekirdek komut satırı parametresini ekler. sonlandırmak yerine 20 ms süreyle durmaya zorlanacaktır.
    • Her bir gruba ne kadar işlemci süresinin tahsis edilebileceğini belirleyen cgroup bant genişliği denetleyicisi CFS (CFS bant genişliği denetleyicisi), gecikmeye duyarlı iş yüklerinin daha iyi düzenlenmesine olanak tanıyan, zaman sınırlı sınırları tanımlama yeteneğini uygular. Örneğin, cpu.cfs_quota_us'u 50000'e ve cpu.cfs_period_us'u 100000'e ayarlamak, bir grup işlemin her 100 ms'de 50 ms CPU zamanını boşa harcamasına olanak tanır.
    • BPF program yükleyicilerinin oluşturulmasına yönelik başlangıç ​​altyapısı eklendi; bu, yalnızca güvenilir bir dijital anahtarla imzalanmış BPF programlarının yüklenmesine de olanak tanıyacak.
    • Sistemin uyku modunda geçirdiği süreyi hesaba katan zaman aşımını hesaplamak için monoton bir zamanlayıcı kullanan yeni bir futex işlemi olan FUTEX_LOCK_PI2 eklendi.
    • RISC-V mimarisi için, büyük bellek sayfaları (Şeffaf Büyük Sayfalar) desteği ve bellekle çalışırken hataları tespit etmek için KFENCE mekanizmasını kullanma yeteneği uygulanır.
    • Bir işlemin bellek yönetimini optimize etmek için bir araç sağlayan madvise() sistem çağrısı, gerçek bir okuma veya yazma işlemi gerçekleştirmeden, okuma veya yazma işlemleriyle eşlenen tüm bellek sayfalarında bir "sayfa hatası" oluşturmak için MADV_POPULATE_READ ve MADV_POPULATE_WRITE bayraklarını ekledi. (ön varsayılan). Bayrakların kullanımı, ayrılmamış tüm sayfalar için "sayfa hatası" işleyicisinin onlara gerçek erişimi beklemeden aynı anda proaktif olarak yürütülmesi nedeniyle programın yürütülmesindeki gecikmeleri azaltmak için yararlı olabilir.
    • Kunit birim test sistemi, QEMU ortamında testlerin çalıştırılması için destek ekledi.
    • Yeni izleyiciler eklendi: kesinti işlemenin neden olduğu uygulama gecikmelerini izlemek için "osnoise" ve bir zamanlayıcı sinyalinden uyanırken gecikmeler hakkında ayrıntılı bilgi görüntülemek için "timerlat".
  • Sanallaştırma ve Güvenlik
    • Memfd_secret() sistem çağrısı, yalıtılmış bir adres alanında, yalnızca sahip olan süreç tarafından görülebilen, diğer süreçlere yansıtılmayan ve çekirdeğe doğrudan erişilemeyen özel bir bellek alanı oluşturmak için eklenmiştir.
    • Seccomp sistem çağrısı filtreleme sisteminde, engelleme işleyicilerini kullanıcı alanına taşırken, yalıtılmış bir görev için bir dosya tanımlayıcı oluşturmak ve bir sistem çağrısını işlerken onu geri döndürmek için tek bir atomik işlemi kullanmak mümkündür. Önerilen işlem, bir sinyal geldiğinde kullanıcı alanındaki işleyicinin kesintiye uğraması sorununu çözmektedir.
    • Bireysel rlimit sayaçlarını "kullanıcı ad alanındaki" bir kullanıcıya bağlayan, kullanıcı kimliği ad alanındaki kaynak sınırlarını yönetmek için yeni bir mekanizma eklendi. Değişiklik, bir kullanıcı işlemleri farklı kapsayıcılarda çalıştırdığında ortak kaynak sayaçlarının kullanılmasıyla ilgili sorunu çözer.
    • ARM64 sistemleri için KVM hipervizörü, konuk sistemlerde MTE (MemTag, Bellek Etiketleme Uzantısı) uzantısını kullanma yeteneğini ekledi; bu, etiketleri her bellek ayırma işlemine bağlamanıza ve işaretçilerin doğru kullanımının kontrolünü organize etmenize olanak tanır. Halihazırda serbest bırakılmış bellek bloklarına erişim, arabelleğin taşması, başlatmadan önceki erişimler ve geçerli bağlam dışında kullanımdan kaynaklanan güvenlik açıkları.
    • ARM64 platformunun İşaretçi Kimlik Doğrulama olanakları artık çekirdek ve kullanıcı alanı için ayrı ayrı yapılandırılabilir. Teknoloji, işaretçinin kullanılmayan üst bitlerinde saklanan dijital imzaları kullanarak dönüş adreslerini doğrulamak için özel ARM64 talimatlarını kullanmanıza olanak tanır.
    • Kullanıcı modu Linux, PCI-over-virtio sürücüsü tarafından uygulanan, sanal PCI veriyoluna sahip PCI aygıtları için sürücülerin kullanılmasına yönelik destek ekledi.
    • X86 sistemleri için, ATTACH, DETACH, MAP ve UNMAP gibi IOMMU isteklerinin bellek sayfası tablolarını taklit etmeden virtio aktarımı üzerinden gönderilmesine olanak tanıyan virtio-iommu paravirtualized aygıtı için destek eklendi.
    • Skylake ailesinden Coffee Lake'e kadar Intel CPU'lar için, gereksiz senkronizasyon işlemlerini dinamik olarak ortadan kaldırarak çok iş parçacıklı uygulamaların performansını artırmaya yönelik araçlar sağlayan Intel TSX'in (İşlemsel Senkronizasyon Uzantıları) kullanımı varsayılan olarak devre dışıdır. TAA (TSX Asenkron Abort) mekanizmasının çalışması sırasında meydana gelen, üçüncü taraf kanallar üzerinden bilgi sızıntısını manipüle eden Zombieload saldırıları olasılığı nedeniyle uzantılar devre dışı bırakılır.
  • Ağ alt sistemi
    • MPTCP'nin (MultiPath TCP) çekirdeğine entegrasyon; TCP protokolünün, farklı IP adresleriyle ilişkili farklı ağ arayüzleri aracılığıyla paketlerin birkaç rota boyunca aynı anda teslim edilmesiyle TCP bağlantısının çalışmasını organize etmeye yönelik bir uzantısıdır. Yeni sürüm, IPv4 ve IPv6 (çok yollu karma politikası) için kendi trafik karma politikalarınızı ayarlamanıza yönelik bir mekanizma ekleyerek, kullanıcı alanından, kapsüllenmiş olanlar da dahil olmak üzere paketlerdeki hangi alanların, karma değerini belirleyen karma hesaplanırken kullanılacağını belirlemeyi mümkün kılar. paket için yol seçimi.
    • Virtio sanal aktarımına SOCK_SEQPACKET soketleri desteği (veri birimlerinin sıralı ve güvenilir iletimi) eklendi.
    • SO_REUSEPORT yuva mekanizmasının yetenekleri genişletildi; bu, birden fazla dinleme yuvasının aynı anda bir bağlantı noktasına bağlanmasına ve gelen isteklerin SO_REUSEPORT aracılığıyla bağlanan tüm yuvalara aynı anda dağıtılmasıyla bağlantı almasına olanak tanıyor ve bu da çok iş parçacıklı sunucu uygulamalarının oluşturulmasını kolaylaştırıyor. . Yeni sürüm, başlangıçta seçilen soket tarafından bir istek işlenirken başarısızlık durumunda kontrolü başka bir sokete aktarmak için araçlar ekler (hizmetleri yeniden başlatırken bireysel bağlantıların kaybıyla ilgili sorunu çözer).
  • Оборудование
    • Amdgpu sürücüsü, kod adı "Beige Goby" (Navi 6000) ve "Yellow Carp" olan yeni AMD Radeon RX 24 serisi GPU'lar için desteğin yanı sıra Aldebaran GPU (gfx90a) ve Van Gogh APU için geliştirilmiş destek sağlıyor. Birkaç eDP paneliyle aynı anda çalışma yeteneği eklendi. APU Renoir için video belleğindeki (TMZ, Güvenilir Bellek Bölgesi) şifrelenmiş arabelleklerle çalışma desteği uygulandı. Çalışırken çıkarılabilen grafik kartları için destek eklendi. Radeon RX 6000 (Navi 2x) GPU'lar ve daha eski AMD GPU'lar için, daha önce yalnızca Navi 1x, Vega ve Polaris GPU'lar için etkinleştirilen ASPM (Aktif Durum Güç Yönetimi) desteği varsayılan olarak etkindir.
    • AMD yongaları için, cihazların kendi bellek yönetim birimleri (MMU, bellek yönetim birimi) ile kullanılmasına olanak tanıyan HMM (Heterojen bellek yönetimi) alt sistemine dayalı olarak paylaşılan sanal bellek (SVM, paylaşılan sanal bellek) desteği eklendi, ana belleğe erişebilir. Özellikle HMM'yi kullanarak GPU ile CPU arasında, GPU'nun işlemin ana belleğine erişebileceği paylaşılan bir adres alanı düzenleyebilirsiniz.
    • Oyun, video düzenleme ve 3D oluşturma performansını artırmak için AMD yonga seti ve grafik kartına sahip dizüstü bilgisayarlardaki CPU ve GPU güç ayarlarını dinamik olarak değiştiren AMD Smart Shift teknolojisi için başlangıç ​​desteği eklendi.
    • Intel grafik kartlarına yönelik i915 sürücüsü, Intel Alderlake P yongaları için destek içerir.
    • Hyper-V sanal grafik bağdaştırıcısı için drm/hyperv sürücüsü eklendi.
    • Raspberry Pi 400 hepsi bir arada bilgisayar için destek eklendi.
    • Dell dizüstü bilgisayarlarda bulunan donanım kamera ve mikrofon anahtarlarını desteklemek için dell-wmi-privacy sürücüsü eklendi.
    • Lenovo dizüstü bilgisayarlar için, BIOS ayarlarını sysfs /sys/class/firmware-attributes/ aracılığıyla değiştirmek için bir WMI arayüzü eklendi.
    • USB4 arayüzlü cihazlar için genişletilmiş destek.
    • AmLogic SM1 TOACODEC, Intel AlderLake-M, NXP i.MX8, NXP TFA1, TDF9897, Rockchip RK817, Qualcomm Quinary MI2 ve Texas Instruments TAS2505 ses kartları ve codec bileşenleri için destek eklendi. HP ve ASUS dizüstü bilgisayarlarda iyileştirilmiş ses desteği. USB aygıtlarında ses oynatılmaya başlamadan önceki gecikmeleri azaltmak için yamalar eklendi.

Kaynak: opennet.ru

Yorum ekle