Linux 5.14 yadro versiyasi

Ikki oylik rivojlanishdan so'ng, Linus Torvalds Linux yadrosi 5.14 versiyasini taqdim etdi. Eng e'tiborga molik o'zgarishlar orasida: yangi quotactl_fd() va memfd_secret() tizim chaqiruvlari, ide va raw drayverlarini olib tashlash, guruh uchun yangi kiritish/chiqarish ustuvor boshqaruvchisi, SCHED_CORE vazifalarni rejalashtirish rejimi, tasdiqlangan BPF dastur yuklagichlarini yaratish uchun infratuzilma.

Yangi versiya 15883 ta ishlab chiquvchidan 2002 69 ta tuzatishni o'z ichiga oladi, yamoq hajmi 12580 MB (o'zgarishlar 861501 321654 ta faylga ta'sir ko'rsatdi, 47 5.14 qator kod qo'shildi, 14 13 satr o'chirildi). 3-da kiritilgan barcha o'zgarishlarning taxminan 3% qurilma drayverlari bilan bog'liq, o'zgarishlarning taxminan XNUMX% apparat arxitekturasiga xos kodni yangilash bilan bog'liq, XNUMX% tarmoq stekiga, XNUMX% fayl tizimlariga va XNUMX% ichki yadro quyi tizimlari bilan bog'liq.

Asosiy innovatsiyalar:

  • Disk quyi tizimi, kiritish-chiqarish va fayl tizimlari
    • Har bir guruh aʼzolari tomonidan yaratilgan qurilmalarni blokirovka qilish boʻyicha soʻrovlarni qayta ishlash ustuvorligini boshqarishi mumkin boʻlgan rq-qos guruhlari uchun yangi I/U ustuvorligini nazorat qilish qurilmasi joriy etildi. mq-deadline I/U rejalashtiruvchisiga yangi ustuvor boshqaruvchi qo'llab-quvvatlash qo'shildi.
    • Ext4 fayl tizimi EXT4_IOC_CHECKPOINT yangi ioctl buyrug'ini amalga oshiradi, bu jurnaldan va ular bilan bog'liq buferlardan barcha kutilayotgan tranzaktsiyalarni diskka o'tkazishga majbur qiladi, shuningdek jurnal tomonidan saqlanadigan maydonni qayta yozadi. O'zgartirish fayl tizimlaridan ma'lumotlar sizib chiqishining oldini olish tashabbusi doirasida tayyorlangan.
    • Btrfs-da ishlashni optimallashtirish amalga oshirildi: fsync-ni bajarish paytida kengaytirilgan atributlarni keraksiz jurnalga yozishni bartaraf etish orqali kengaytirilgan atributlar bilan intensiv operatsiyalarni bajarish 17% gacha oshdi. Bundan tashqari, kengaytmalarga ta'sir qilmaydigan trim operatsiyalarini bajarishda to'liq sinxronizatsiya o'chiriladi, bu ish vaqtini 12% ga qisqartiradi. FSni tekshirishda I/U tarmoqli kengligini cheklash uchun sysfs-ga sozlama qo'shildi. Qurilmaning o'lchamini o'zgartirish va o'chirishni bekor qilish uchun ioctl qo'ng'iroqlari qo'shildi.
    • XFS-da bufer keshini amalga oshirish qayta ishlab chiqilgan bo'lib, u ommaviy rejimda xotira sahifalarini ajratishga o'tkazildi. Yaxshilangan kesh samaradorligi.
    • F2FS faqat o'qish rejimida ishlash imkoniyatini qo'shadi va tasodifiy o'qish ish faoliyatini yaxshilash uchun siqilgan blokli kesh rejimini (compress_cache) amalga oshiradi. mmap() operatsiyasi yordamida xotiraga joylashtirilgan fayllarni siqishni qo'llab-quvvatlash amalga oshirildi. Niqobga asoslangan faylni siqishni tanlab o'chirish uchun nocompress yangi o'rnatish opsiyasi taklif qilindi.
    • Ba'zi raqamli kamera xotirasi bilan moslikni yaxshilash uchun exFAT drayverida ish olib borildi.
    • Kvotalarni maxsus qurilma fayli orqali emas, balki kvota qo'llaniladigan fayl tizimi bilan bog'langan fayl deskriptorini ko'rsatish orqali boshqarish imkonini beruvchi quotactl_fd() tizim chaqiruvi qo'shildi.
    • IDE interfeysli blokli qurilmalar uchun eski drayverlar yadrodan olib tashlandi, ular uzoq vaqt davomida libata quyi tizimi bilan almashtirildi.
    • "Xom" drayver yadrodan olib tashlandi, bu /dev/raw interfeysi orqali bloklangan qurilmalarga bufersiz kirish imkonini beradi. Bu funksiya uzoq vaqtdan beri O_DIRECT bayrog'idan foydalangan holda ilovalarda joriy qilingan.
  • Xotira va tizim xizmatlari
    • Vazifalarni rejalashtiruvchi SCHED_CORE yangi rejalashtirish rejimini amalga oshiradi, bu sizga qaysi jarayonlarni bir xil CPU yadrosida birgalikda bajarilishini boshqarish imkonini beradi. Har bir jarayonga jarayonlar o'rtasidagi ishonch doirasini belgilaydigan cookie identifikatori tayinlanishi mumkin (masalan, bitta foydalanuvchi yoki konteynerga tegishli). Kodning bajarilishini tashkil qilishda rejalashtiruvchi bitta protsessor yadrosi faqat bir xil egasi bilan bog'liq jarayonlar o'rtasida taqsimlanishini ta'minlashi mumkin, bu esa ishonchli va ishonchsiz vazifalarning bir xil SMT (Hyper Threading) oqimida ishlashini oldini olish orqali ba'zi Spectre hujumlarini bloklash uchun ishlatilishi mumkin. .
    • Cgroup uchun o'ldirish operatsiyasini qo'llab-quvvatlash amalga oshirildi, bu sizga cgroup.kill virtual fayliga "1" yozish orqali guruh bilan bog'liq barcha jarayonlarni birdaniga o'ldirishga imkon beradi (SIGKILL yuboring).
    • Atom buyrug'ini bajarishda ma'lumotlar protsessorning ikkita kesh chizig'ini kesib o'tishi sababli xotirada tekislanmagan ma'lumotlarga kirishda yuzaga keladigan ajratilgan qulflarni ("split qulflar") aniqlashga javob berish bilan bog'liq kengaytirilgan imkoniyatlar. Bunday blokirovka ishlashning sezilarli pasayishiga olib keladi, shuning uchun avval blokirovkaga sabab bo'lgan dasturni majburan to'xtatish mumkin edi. Yangi versiya yadro buyruq qatori parametrini qo'shadi "split_lock_detect=ratelimit:N" bu sizga soniyada blokirovkalash operatsiyalari tezligi bo'yicha butun tizim chegarasini belgilashga imkon beradi, undan oshib ketgandan so'ng har qanday jarayon bo'linish blokirovkasining manbai bo'lib qoladi. tugatish o'rniga 20 ms to'xtashga majbur bo'ladi.
    • Har bir guruhga qancha protsessor vaqtini ajratish mumkinligini aniqlaydigan CFS (CFS tarmoqli kengligi nazoratchisi) guruhning tarmoqli kengligi nazoratchisi, kechikishga sezgir bo'lgan ish yuklarini yaxshiroq tartibga solish imkonini beruvchi vaqt chegaralarini belgilash qobiliyatini amalga oshiradi. Misol uchun, cpu.cfs_quota_us ni 50000 ga va cpu.cfs_period_us ni 100000 ga o'rnatish jarayonlar guruhiga har 100 ms protsessor vaqtini 50 ms vaqt sarflashga imkon beradi.
    • BPF dastur yuklagichlarini yaratish uchun dastlabki infratuzilma qo'shildi, bu esa faqat ishonchli raqamli kalit bilan imzolangan BPF dasturlarini yuklash imkonini beradi.
    • FUTEX_LOCK_PI2 yangi futeks operatsiyasi qo'shildi, u tizimning uyqu rejimida o'tkazgan vaqtini hisobga olgan holda vaqt tugashini hisoblash uchun monotonik taymerdan foydalanadi.
    • RISC-V arxitekturasi uchun katta xotira sahifalarini (Transparent Huge-Pages) qo'llab-quvvatlash va xotira bilan ishlashda xatolarni aniqlash uchun KFENCE mexanizmidan foydalanish imkoniyati amalga oshiriladi.
    • Jarayon xotirasini boshqarishni optimallashtirish vositasini ta'minlovchi madvise() tizim chaqiruvi haqiqiy o'qish yoki yozishni amalga oshirmasdan o'qish yoki yozish operatsiyalari uchun xaritalangan barcha xotira sahifalarida "sahifa xatosi" ni yaratish uchun MADV_POPULATE_READ va MADV_POPULATE_WRITE bayroqlarini qo'shdi (oldindan ko'rsatilgan). ). Bayroqlardan foydalanish dasturning bajarilishidagi kechikishlarni kamaytirish uchun foydali bo'lishi mumkin, chunki "sahifa xatosi" ishlov beruvchisi barcha ajratilmagan sahifalar uchun bir vaqtning o'zida, ularga haqiqiy kirishni kutmasdan faol bajarilishi.
    • Kunit birlik test tizimi QEMU muhitida sinovlarni o'tkazish uchun qo'shimcha qo'llab-quvvatladi.
    • Yangi izlagichlar qo'shildi: uzilishlar bilan ishlash natijasida kelib chiqqan ilovalar kechikishlarini kuzatish uchun "osnoise" va taymer signalidan uyg'onish vaqtida kechikishlar haqida batafsil ma'lumotni ko'rsatish uchun "timerlat".
  • Virtualizatsiya va xavfsizlik
    • memfd_secret() tizim chaqiruvi izolyatsiyalangan manzil maydonida shaxsiy xotira maydonini yaratish uchun qo'shilgan, faqat egalik qilish jarayoniga ko'rinadi, boshqa jarayonlarda aks ettirilmaydi va yadroga to'g'ridan-to'g'ri kirish mumkin emas.
    • Seccomp tizimi qo'ng'iroqlarini filtrlash tizimida blokirovka qiluvchi ishlov beruvchilarni foydalanuvchi maydoniga ko'chirishda alohida vazifa uchun fayl identifikatorini yaratish va tizim chaqiruvini qayta ishlashda uni qaytarish uchun bitta atom operatsiyasidan foydalanish mumkin. Taklif etilayotgan operatsiya signal kelganda foydalanuvchi maydonida ishlov beruvchini to'xtatish muammosini hal qiladi.
    • Foydalanuvchi identifikatori nom maydonida resurs chegaralarini boshqarishning yangi mexanizmi qo'shildi, u "foydalanuvchi nomlari maydoni"dagi foydalanuvchiga individual rlimit hisoblagichlarini bog'laydi. O'zgartirish bitta foydalanuvchi turli konteynerlarda jarayonlarni ishga tushirganda umumiy resurs hisoblagichlaridan foydalanish bilan bog'liq muammoni hal qiladi.
    • ARM64 tizimlari uchun KVM gipervizori mehmon tizimlarida MTE (MemTag, Memory Tagging Extension) kengaytmasidan foydalanish imkoniyatini qo'shdi, bu sizga har bir xotira ajratish operatsiyasiga teglarni bog'lash va foydalanishni blokirovka qilish uchun ko'rsatgichlardan to'g'ri foydalanishni tekshirishni tashkil qilish imkonini beradi. allaqachon bo'shatilgan xotira bloklariga kirish, buferni to'ldirish, ishga tushirishdan oldin kirishlar va joriy kontekstdan tashqarida foydalanish natijasida yuzaga kelgan zaifliklar.
    • ARM64 platformasining Pointer autentifikatsiya vositalari endi yadro va foydalanuvchi maydoni uchun alohida sozlanishi mumkin. Texnologiya sizga ko'rsatgichning foydalanilmagan yuqori bitlarida saqlanadigan raqamli imzolar yordamida qaytish manzillarini tekshirish uchun maxsus ARM64 ko'rsatmalaridan foydalanish imkonini beradi.
    • Linux foydalanuvchi rejimida PCI-over-virtio drayveri tomonidan amalga oshirilgan virtual PCI avtobusiga ega PCI qurilmalari uchun drayverlardan foydalanish uchun qo'shimcha yordam mavjud.
    • X86 tizimlari uchun virtio-iommu paravirtuallashtirilgan qurilma uchun qo'shimcha qo'llab-quvvatlash, ATTACH, DETACH, MAP va UNMAP kabi IOMMU so'rovlarini xotira sahifalari jadvallarini taqlid qilmasdan virtio transport orqali yuborish imkonini beradi.
    • Skylake oilasidan Coffee Lakegacha bo'lgan Intel protsessorlari uchun sukut bo'yicha keraksiz sinxronizatsiya operatsiyalarini dinamik ravishda yo'q qilish orqali ko'p oqimli ilovalarning ish faoliyatini yaxshilash vositalarini ta'minlovchi Intel TSX (Transactional Synchronization Extensions) dan foydalanish o'chirib qo'yilgan. Kengaytmalar TAA (TSX Asynchronous Abort) mexanizmining ishlashi paytida sodir bo'ladigan uchinchi tomon kanallari orqali ma'lumotlarning oqishini boshqaradigan Zombieload hujumlari ehtimoli tufayli o'chirib qo'yilgan.
  • Tarmoq quyi tizimi
    • Turli IP-manzillar bilan bog'langan turli tarmoq interfeyslari orqali bir vaqtning o'zida bir nechta marshrutlar bo'ylab paketlarni etkazib berish bilan TCP ulanishining ishlashini tashkil qilish uchun TCP protokolining kengaytmasi bo'lgan MPTCP (MultiPath TCP) yadrosiga integratsiya. Yangi nashr IPv4 va IPv6 (ko‘p yo‘lli xesh siyosati) uchun shaxsiy trafik xesh siyosatini o‘rnatish mexanizmini qo‘shib, foydalanuvchi makonidan paketlardagi qaysi maydonlar, shu jumladan inkapsullangan maydonlar xeshni hisoblashda foydalanishini aniqlash imkonini beradi. paket uchun yo'l tanlash.
    • Virtio virtual transportiga SOCK_SEQPACKET rozetkalarini qo'llab-quvvatlash (datagrammalarning tartibli va ishonchli uzatilishi) qo'shildi.
    • SO_REUSEPORT rozetka mexanizmining imkoniyatlari kengaytirildi, bu bir vaqtning o'zida bir nechta tinglash rozetkalarini SO_REUSEPORT orqali ulangan barcha soketlar bo'ylab kirish so'rovlarini taqsimlash bilan ulanishlarni qabul qilish uchun bir vaqtning o'zida bir portga ulanish imkonini beradi, bu ko'p tarmoqli server ilovalarini yaratishni osonlashtiradi. . Yangi versiya dastlab tanlangan rozetka tomonidan so'rovni qayta ishlashda muvaffaqiyatsizlikka uchragan taqdirda boshqaruvni boshqa rozetkaga o'tkazish uchun vositalarni qo'shadi (xizmatlarni qayta ishga tushirishda alohida ulanishlarni yo'qotish muammosini hal qiladi).
  • uskunalar
    • Amdgpu drayveri "Beige Goby" (Navi 6000) va "Yellow Carp" kod nomi bilan atalgan yangi AMD Radeon RX 24 GPU seriyasini qo'llab-quvvatlaydi, shuningdek, Aldebaran GPU (gfx90a) va Van Gogh APU uchun yaxshilangan qo'llab-quvvatlashni ta'minlaydi. Bir vaqtning o'zida bir nechta eDP panellari bilan ishlash imkoniyati qo'shildi. APU Renoir uchun video xotirada (TMZ, Ishonchli xotira zonasi) shifrlangan buferlar bilan ishlashni qo'llab-quvvatlash amalga oshirildi. Grafik kartalarni issiq rejimda o'chirish uchun qo'shimcha qo'llab-quvvatlash. Radeon RX 6000 (Navi 2x) GPU va eski AMD GPU'lari uchun ASPM (Active State Power Management) qo'llab-quvvatlashi sukut bo'yicha yoqilgan bo'lib, u ilgari faqat Navi 1x, Vega va Polaris GPUlari uchun yoqilgan edi.
    • AMD chiplari uchun HMM (Heterojen xotirani boshqarish) quyi tizimi asosida umumiy virtual xotirani (SVM, umumiy virtual xotira) qo'llab-quvvatlash qo'shildi, bu o'zlarining xotira boshqaruv bloklari (MMU, xotira boshqaruv bloki) bilan qurilmalardan foydalanishga imkon beradi, asosiy xotiraga kirishi mumkin. Xususan, HMM-dan foydalanib, siz GPU va CPU o'rtasida umumiy manzil maydonini tashkil qilishingiz mumkin, bunda GPU jarayonning asosiy xotirasiga kirishi mumkin.
    • Oʻyin, video tahrirlash va 3D renderlash uchun unumdorlikni oshirish uchun AMD chipset va grafik kartasi boʻlgan noutbuklarda CPU va GPU quvvat sozlamalarini dinamik ravishda oʻzgartiruvchi AMD Smart Shift texnologiyasi uchun dastlabki yordam qoʻshildi.
    • Intel grafik kartalari uchun i915 drayveri Intel Alderlake P chiplarini qo'llab-quvvatlaydi.
    • Hyper-V virtual grafik adapteri uchun drm/hyperv drayveri qo'shildi.
    • Raspberry Pi 400 all-in-one kompyuter uchun qo'shimcha qo'llab-quvvatlash.
    • Dell noutbuklariga kiritilgan apparat kamerasi va mikrofon kalitlarini qo'llab-quvvatlash uchun dell-wmi-privacy drayveri qo'shildi.
    • Lenovo noutbuklari uchun sysfs /sys/class/firmware-attributes/ orqali BIOS sozlamalarini o'zgartirish uchun WMI interfeysi qo'shildi.
    • USB4 interfeysli qurilmalar uchun kengaytirilgan qo'llab-quvvatlash.
    • AmLogic SM1 TOACODEC, Intel AlderLake-M, NXP i.MX8, NXP TFA1, TDF9897, Rockchip RK817, Qualcomm Quinary MI2 va Texas Instruments TAS2505 ovoz kartalari va kodeklarini qoʻllab-quvvatlash qoʻshildi. HP va ASUS noutbuklarida yaxshilangan audio yordam. USB qurilmalarida audio o‘ynatila boshlashdan oldin kechikishlarni kamaytirish uchun yamoqlar qo‘shildi.

Manba: opennet.ru

a Izoh qo'shish