Linux yadrosi 5.14

Linux yadrosi 5.14

Ikki oylik rivojlanishdan so'ng, Linus Torvalds tanishtirdi yadro chiqarilishi Linux 5.14. 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 yangiliklar:

  • disk quyi tizimi, kiritish/chiqarish va fayl tizimlari:
    • guruh uchun amalga oshirildi yangi I/U ustuvor boshqaruvchisi - rq-qos, u har bir guruh a'zolari tomonidan yaratilgan qurilmalarni blokirovka qilish so'rovlarini qayta ishlash ustuvorligini boshqarishi mumkin. mq-deadline I/U rejalashtiruvchisiga yangi ustuvor boshqaruvchi qo'llab-quvvatlash qo'shildi;
    • ext4 fayl tizimida amalga oshirildi yangi ioctl buyrug'i EXT4_IOC_CHECKPOINT, u barcha kutilayotgan tranzaktsiyalarni jurnaldan va bog'langan buferlardan diskka majburlaydi, shuningdek, jurnal xotirasi tomonidan ishlatiladigan maydonni qayta yozadi. O'zgartirish fayl tizimlaridan ma'lumotlar sizib chiqishining oldini olish tashabbusi doirasida tayyorlangan;
    • Btrfs ichida tanishtirdi Ishlashni optimallashtirish: 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 qayta ishlangan ommaviy rejimda xotira sahifalarini ajratishga o'tkaziladigan bufer keshini amalga oshirish. Yaxshilangan kesh samaradorligi;
    • F2FS faqat o'qish rejimida ishlash imkoniyatini qo'shdi va tasodifiy o'qish samaradorligini oshirish uchun siqilgan blokli keshlash rejimini (compress_cache) amalga oshirdi. mmap() operatsiyasi yordamida xotiraga joylashtirilgan fayllarni siqishni qo'llab-quvvatlash amalga oshirildi. Niqob yordamida fayllarni siqishni tanlab o'chirish uchun nocompress yangi o'rnatish opsiyasi taklif qilindi;
    • ba'zi raqamli kameralarni saqlash bilan moslikni yaxshilash uchun exFAT drayverida ish olib borildi;
    • qo'shilgan tizim chaqiruvi quotactl_fd(), bu sizga kvotalarni maxsus qurilma fayli orqali emas, balki kvota qo'llaniladigan fayl tizimi bilan bog'langan fayl identifikatorini ko'rsatish orqali boshqarish imkonini beradi;
    • IDE interfeysli blokli qurilmalar uchun eski drayverlar yadrodan olib tashlandi, ular uzoq vaqtdan beri libata quyi tizimi bilan almashtirildi. Eski qurilmalarni qo'llab-quvvatlash to'liq saqlanib qoldi, o'zgarishlar faqat eski drayverlardan foydalanish qobiliyatiga taalluqlidir, ulardan foydalanish paytida drayverlar /dev/sd* emas, balki /dev/hd* deb nomlangan;
    • "Xom" drayver yadrodan olib tashlandi, bu /dev/raw interfeysi orqali blokirovka qilingan qurilmalarga bufersiz kirishni ta'minlaydi. Bu funksiya uzoq vaqtdan beri O_DIRECT bayrog'idan foydalanadigan ilovalarda joriy qilingan;
  • xotira va tizim xizmatlari:
    • vazifa rejalashtiruvchisida yangi rejalashtirish rejimi joriy etildi SCHED_CORE, bu bir xil protsessor yadrosida qaysi jarayonlar birgalikda ishlashini 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 bitta 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 mexanizmi 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);
    • atomik buyruqni bajarishda ma'lumotlar ikkita CPU kesh chizig'ini kesib o'tishi sababli xotiradagi tekislanmagan ma'lumotlarga kirishda yuzaga keladigan bo'linish bloklarini ("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 tezligiga butun tizim chegarasini belgilash imkonini beradi, undan oshib ketgandan so'ng bo'linish blokirovkasi manbai bo'lgan har qanday jarayon. tugatish o'rniga 20 ms to'xtashga majbur bo'lish;
    • Har bir guruhga qancha protsessor vaqtini ajratish mumkinligini aniqlaydigan CFS (CFS tarmoqli kengligi nazoratchisi) guruhning tarmoqli kengligi tekshirgichi ma'lum bir harakat davomiyligi bilan cheklangan chegaralarni belgilash qobiliyatiga ega, bu esa kechikishga sezgir yuklarni yaxshiroq tartibga solish imkonini beradi. Masalan, cpu.cfs_quota_us ni 50000 ga va cpu.cfs_period_us ni 100000 ga o'rnatish jarayonlar guruhiga har 100 msda 50 ms CPU vaqtini behuda sarflash imkonini beradi;
    • qo'shildi faqat ishonchli raqamli kalit bilan imzolangan BPF dasturlarini yuklab olish imkonini beradigan BPF dasturlarini yuklovchilarni yaratish uchun dastlabki infratuzilma;
    • FUTEX_LOCK_PI2 yangi futeks operatsiyasi qo'shildi, bu vaqt tugashini hisoblash uchun monotonik taymerdan foydalanadi, bu tizimning uyqu rejimida o'tkazgan vaqtini hisobga oladi;
    • RISC-V arxitekturasi uchun katta xotira sahifalarini (Transparent Huge-Pages) qo'llab-quvvatlash va undan foydalanish qobiliyati KFENCE xotira bilan ishlashda xatolarni aniqlash;
    • madvise() tizim chaqiruviga, bu jarayon xotirasini boshqarishni optimallashtirish vositasini taqdim etadi, qo'shildi MADV_POPULATE_READ va MADV_POPULATE_WRITE bayroqlari o'qish yoki yozish operatsiyalari uchun moslashtirilgan barcha xotira sahifalarida "sahifa xatosi" ni yaratish uchun, haqiqiy o'qish yoki yozishni amalga oshirmasdan (oldindan). Bayroqlardan foydalanish barcha ajratilmagan sahifalar uchun bir vaqtning o'zida, ularga haqiqiy kirishni kutmasdan, "sahifa xatosi" ishlov beruvchisining faol bajarilishi tufayli dasturni bajarishdagi kechikishlarni kamaytirish uchun foydali bo'lishi mumkin;
    • birlik sinov tizimida kunit qo'shildi QEMU muhitida ishlaydigan testlarni qo'llab-quvvatlash;
    • yangi kuzatuvchilar qo'shildi: "osnoise" uzilishlar bilan ishlov berishdan kelib chiqadigan dastur kechikishlarini kuzatish uchun va "taymerlat" taymer signalidan uyg'onganda kechikishlar haqida batafsil ma'lumotni ko'rsatish uchun;
  • virtualizatsiya va xavfsizlik:
    • qo'shildi tizim chaqiruvi memfd_secret(), bu izolyatsiyalangan manzil maydonida faqat egasi jarayoniga ko'rinadigan, boshqa jarayonlarda aks ettirilmaydigan va yadroga to'g'ridan-to'g'ri kirish mumkin bo'lmagan shaxsiy xotira maydonini yaratishga imkon beradi;
    • seccomp tizimi qo'ng'iroqlarini filtrlash tizimida blokirovka ishlov beruvchilarini foydalanuvchi maydoniga ko'chirishda alohida vazifa uchun fayl deskriptorini yaratish va tizim chaqiruvini qayta ishlashda uni qaytarish uchun bitta atom operatsiyasidan foydalanish mumkin. Taklif etilayotgan operatsiya hal qiladi muammo signal kelganda foydalanuvchi maydonida ishlov beruvchining uzilishi bilan;
    • qo'shildi yangi mexanizm "foydalanuvchi nomlari maydoni"dagi foydalanuvchiga individual rlimit hisoblagichlarini bog'laydigan foydalanuvchi identifikatori nom maydonida resurs cheklashni boshqarish. 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 ekspluatatsiyani blokirovka qilish uchun ko'rsatgichlardan to'g'ri foydalanishni tekshirishni tashkil qilish imkonini beradi. allaqachon bo'shatilgan xotira bloklariga kirish, to'lib toshgan buferlar, ishga tushirishdan oldin kirishlar va joriy kontekstdan tashqarida foydalanish natijasida yuzaga kelgan zaifliklar;
    • ARM64 platformasi tomonidan taqdim etilgan Pointer autentifikatsiyasi 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 qo'shildi PCI-over-virtio drayveri tomonidan amalga oshirilgan virtual PCI avtobusiga ega PCI qurilmalari uchun drayverlardan foydalanishni qo'llab-quvvatlash;
    • x86 tizimlari uchun virtio-iommu paravirtuallashtirilgan qurilmani qo'shimcha qo'llab-quvvatlash, bu sizga 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. Hujumlar ehtimoli tufayli kengaytmalar o'chirilgan Zombieload, operatsiyalarni asinxron uzilish mexanizmi (TAA, TSX Asynchronous Abort) ishlashi paytida yuzaga keladigan uchinchi tomon kanallari orqali ma'lumotlarning sizib chiqishini manipulyatsiya qilish;
  • 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 integratsiyani davom ettirish. Yangi sonda qo'shildi IPv4 va IPv6 uchun shaxsiy trafik xesh siyosatlarini o'rnatish mexanizmi (ko'p yo'lli xesh siyosati), bu foydalanuvchi maydonidan yo'lni tanlashni belgilaydigan xeshni hisoblashda paketlardagi qaysi maydonlar, shu jumladan inkapsullangan maydonlar ishlatilishini aniqlash imkonini beradi. paket uchun;
    • soket qo'llab-quvvatlash virtual transport virtio qo'shildi SOCK_SEQPACKET (datagrammalarning tartibli va ishonchli uzatilishi);
    • 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 versiyada qo'shildi dastlab tanlangan rozetka tomonidan so'rovni qayta ishlashda muvaffaqiyatsizlikka uchragan taqdirda boshqaruvni boshqa rozetkaga o'tkazish uchun vositalar (xizmatlarni qayta ishga tushirishda alohida ulanishlarni yo'qotish muammosini hal qiladi);
  • uskunalar:
    • amdgpu drayverida amalga oshirildi “Beige Goby” (Navi 6000) va “Yellow Carp” kod nomli yangi AMD Radeon RX 24 GPU seriyasini qo‘llab-quvvatlash, shuningdek, Aldebaran GPU (gfx90a) va Van Gogh APU uchun yaxshilangan qo‘llab-quvvatlash. 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) quvvat tejash mexanizmini qo'llab-quvvatlash sukut bo'yicha yoqilgan bo'lib, u avval faqat Navi 1x, Vega va Polaris GPUlar 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 kirish mumkin. HMM-dan foydalangan holda, siz GPU va CPU o'rtasida umumiy manzil maydonini tashkil qilishingiz mumkin, bunda GPU jarayonning asosiy xotirasiga kirishi mumkin;
    • qo'shilgan dastlabki texnologik yordam AMD Smart Shift, bu o'yin o'ynash, video tahrirlash va 3D renderlashda unumdorlikni oshirish uchun chipset va AMD grafik kartasi bo'lgan noutbuklarda CPU va GPU ning quvvat sarfi parametrlarini dinamik ravishda o'zgartiradi;
    • Intel video kartalari uchun i915 drayverida kiritilgan Intel Alderlake P chiplarini qo'llab-quvvatlash;
    • Hyper-V virtual grafik adapteri uchun drm/hyperv drayveri qo'shildi;
    • qo'shildi chiqish uchun UEFI proshivka yoki BIOS tomonidan taqdim etilgan EFI-GOP yoki VESA ramka buferidan foydalanadigan simpledrm grafik drayveri. Drayvning asosiy maqsadi yuklashning dastlabki bosqichlarida to'liq DRM drayverini ishlatishdan oldin grafik chiqish imkoniyatlarini ta'minlashdir. Drayvdan hali mahalliy DRM drayverlari mavjud bo'lmagan uskunalar uchun vaqtinchalik yechim sifatida ham foydalanish mumkin;
    • qo'shildi yaxlit kompyuterni qo'llab-quvvatlash Raspberry Pi 400;
    • Dell noutbuklariga kiritilgan kamera va mikrofon apparat kalitlarini qo'llab-quvvatlash uchun dell-wmi-privacy drayveri qo'shildi;
    • Lenovo noutbuklari uchun qo'shildi sysfs /sys/class/firmware-attributes/ orqali BIOS parametrlarini o'zgartirish uchun WMI interfeysi;
    • kengaytirilgan USB4 interfeysli qurilmalarni qo'llab-quvvatlash;
    • qo'shildi ovoz kartalari va AmLogic SM1 TOACODEC, Intel AlderLake-M, NXP i.MX8, NXP TFA1, TDF9897, Rockchip RK817, Qualcomm Quinary MI2 va Texas Instruments TAS2505 kodeklarini qo'llab-quvvatlash. HP va ASUS noutbuklarida yaxshilangan audio yordam. Qo'shilgan USB interfeysi bo'lgan qurilmalarda audio o'ynashni boshlashdan oldin kechikishlarni kamaytirish uchun yamoqlar.

Manba – opennet.ru.

Manba: linux.org.ru