Linux 5.3 yadro versiyasi

Ikki oylik rivojlanishdan so'ng, Linus Torvalds tanishtirdi yadro chiqarilishi Linux 5.3. Eng e'tiborli o'zgarishlar orasida: AMD Navi GPU, Zhaoxi protsessorlari va Intel Speed ​​​​Select quvvatni boshqarish texnologiyasini qo'llab-quvvatlash, tsikllardan foydalanmasdan kutish uchun umwait ko'rsatmalaridan foydalanish qobiliyati,
assimetrik protsessorlar uchun interaktivlikni oshiradigan "foydalanishni siqish" rejimi, pidfd_open tizim chaqiruvi, 4/0.0.0.0 quyi tarmog'idan IPv8 manzillaridan foydalanish imkoniyati, nftables apparat tezlashuvi imkoniyati, DRM quyi tizimida HDR qo'llab-quvvatlashi, ACRN integratsiyasi gipervisor.

В e'lon yangi relizda Linus barcha ishlab chiquvchilarga yadro rivojlanishining asosiy qoidasini eslatdi - foydalanuvchi-kosmik komponentlar uchun bir xil xatti-harakatlarni saqlab qolish. Yadrodagi o'zgarishlar hech qanday tarzda allaqachon ishlayotgan ilovalarni buzmasligi yoki foydalanuvchi darajasida regressiyaga olib kelmasligi kerak. Bunday holda, xatti-harakatlarning buzilishi nafaqat ABI-ning o'zgarishiga, eskirgan kodni olib tashlashga yoki xatolar paydo bo'lishiga, balki to'g'ri ishlaydigan foydali yaxshilanishlarning bilvosita ta'siriga ham olib kelishi mumkin. Tasviriy misol sifatida bor edi tashlab yuborilgan foydali optimallashtirish Ext4 kodida, kichik kiritish-chiqarish so'rovlari uchun inode jadvalini oldindan o'qishni o'chirib, haydovchiga kirish sonini kamaytiradi.

Optimallashtirish, disk faolligining pasayishi tufayli, getrandom() tasodifiy sonlar generatori uchun entropiya sekinroq to'plana boshlaganiga olib keldi va ba'zi konfiguratsiyalarda, ma'lum sharoitlarda, entropiya hovuzi tugaguncha yuklash paytida muzlash kuzatilishi mumkin edi. to'ldirilgan. Optimallashtirish haqiqatan ham foydali bo'lganligi sababli, ishlab chiquvchilar o'rtasida munozara paydo bo'ldi, unda muammoni getrandom() chaqiruvining standart blokirovkalash rejimini o'chirib qo'yish va entropiyani kutish uchun ixtiyoriy bayroqni qo'shish orqali hal qilish taklif qilindi, ammo bunday o'zgarish yuklanishning dastlabki bosqichida tasodifiy sonlarning sifati.

Yangi versiyada 15794 ta ishlab chiquvchilar tomonidan 1974 XNUMX tuzatish kiritilgan,
yamoq hajmi - 92 MB (o'zgarishlar 13986 ta faylga ta'sir qildi, 258419 qator kod qo'shildi,
599137 qator olib tashlandi). Hammasidan taxminan 39% 5.3 da keltirilgan
o'zgarishlar qurilma drayverlari bilan bog'liq, o'zgarishlarning taxminan 12%
apparat arxitekturasiga xos kodni yangilashga munosabat, 11%
tarmoq stekiga, 3% fayl tizimlariga va 3% ichki bilan bog'liq
yadro quyi tizimlari.

asosiy yangiliklar:

  • Xotira va tizim xizmatlari
    • PIDni qayta ishlatish holatlarini hal qilishga yordam berish uchun “pidfd” funksiyasining davom ettirilishi (pidfd ma'lum bir jarayon bilan bog'lanadi va o'zgarmaydi, PID esa PID bilan bog'liq joriy jarayon tugaganidan keyin boshqa jarayon bilan bog'lanishi mumkin). U avval yadroga qo'shilgan edi
      idfd_send_signal() da foydalanish uchun pidfd olish uchun pidfd_send_signal() tizimi chaqiruvi va clone() chaqiruvidagi CLONE_PIDFD bayrog‘i. Clone() dan CLONE_PIDFD bayrog‘i bilan foydalanish xizmat menejerlari yoki Android platformasining xotirada bo‘lmagan kuchini to‘xtatish tizimi bilan bog‘liq muammolarga olib kelishi mumkin. Bunday holda, boshlash uchun CLONE_PIDFDsiz fork() yoki clone() qo'ng'iroqlari ishlatiladi.

      Yadro 5.3 tizim chaqiruvini taqdim etdi pidfd_open(), bu sizga CLONE_PIDFD bayrog'i bilan clone() ni chaqirish orqali yaratilmagan ixtiyoriy mavjud jarayon uchun tekshiriladigan pidfd olish imkonini beradi. Shuningdek, poll() va epoll() yordamida pidfd so'rovini qo'llab-quvvatlash qo'shildi, bu jarayon menejerlariga yangi jarayonga PID tayinlangan bo'lsa, poyga holatidan qo'rqmasdan o'zboshimchalik jarayonlarining tugatilishini kuzatish imkonini beradi. Pidfd bilan bog'liq jarayon tugashi haqida xabar berish mexanizmi uning asosiy jarayoni tugashi haqida xabar berishga o'xshaydi;

    • Vazifa rejalashtiruvchisiga yukni mahkamlash mexanizmini qo'llab-quvvatlash qo'shildi (Foydalanish siqish), protsessorda faol vazifalarga qarab minimal yoki maksimal chastota diapazonlariga rioya qilish imkonini beradi. Taqdim etilgan mexanizm ushbu vazifalarni hech bo'lmaganda "so'ralgan" chastotaning pastki qismida bajarish orqali foydalanuvchi tajribasi sifatiga bevosita ta'sir ko'rsatadigan vazifalarni tezlashtiradi. Foydalanuvchi ishiga ta'sir qilmaydigan past ustuvor vazifalar "ruxsat etilgan" chastotaning yuqori chegarasidan foydalangan holda ishga tushiriladi. Limitlar sched_uclamp_util_min va sched_uclamp_util_max atributlari orqali sched_setattr() tizimi chaqiruvida o'rnatiladi.
    • Energiyani boshqarish texnologiyasi uchun qo'shimcha yordam Intel tezligini tanlash, Intel Xeon protsessorlari bilan tanlangan serverlarda mavjud. Ushbu texnologiya turli xil protsessor yadrolari uchun ishlash va bo'lim o'tkazuvchanlik parametrlarini o'rnatish imkonini beradi, bu esa boshqa yadrolarda ishlashni qurbon qilgan holda, ma'lum yadrolarda bajarilgan vazifalar uchun ishlashni birinchi o'ringa qo'yish imkonini beradi;
    • Foydalanuvchi maydonidagi jarayonlar tomonidan taqdim etilgan umwait ko'rsatmasi yordamida pastadirlarni ishlatmasdan qisqa vaqt kutish qobiliyati. Ushbu ko'rsatma, umonitor va tpause ko'rsatmalari bilan birga, Intelning yaqinlashib kelayotgan "Tremont" chiplarida taqdim etiladi va Hyper Threadingdan foydalanganda energiyani tejaydigan va boshqa oqimlarning ishlashiga ta'sir qilmaydigan kechikishlarni amalga oshirish imkonini beradi;
    • RISC-V arxitekturasi uchun katta xotira sahifalarini qo'llab-quvvatlash qo'shildi;
    • Kprobes kuzatuv mexanizmi yadro ko'rsatkichlarini foydalanuvchi maydoniga yo'naltirish qobiliyatini qo'shdi, ulardan, masalan, tizim chaqiruvlariga o'tgan tuzilmalar tarkibini baholash uchun foydalanish mumkin. Yuklash bosqichida tekshiruvlarni o'rnatish imkoniyati ham qo'shildi.
    • Haqiqiy vaqtda ishlash uchun konfiguratsiya fayliga PREEMPT_RT opsiyasi qo'shildi. Haqiqiy vaqt rejimini qo'llab-quvvatlash uchun kodning o'zi hali yadroga qo'shilmagan, ammo variantning ko'rinishi uzoq muddatli epikning yaxshi belgisidir. integratsiya Realtime-Preempt yamoqlari nihoyasiga yetmoqda;
    • Ko'proq bayroqlar sonini belgilash imkonini beruvchi clone() interfeysining kengaytirilgan versiyasini amalga oshirish bilan clone3() tizim chaqiruvi qo'shildi;
    • BPF dasturlariga ixtiyoriy jarayonlarga signal yuborish imkonini beruvchi bpf_send_signal() ishlov beruvchisi qo'shildi;
    • KVM gipervisor muhitidagi ajoyib hodisalar uchun yangi hodisalarni filtrlash mexanizmi qo'shildi, bu administratorga mehmon tizimi tomonida kuzatish uchun ruxsat etilgan yoki ruxsat etilmagan hodisalar turlarini aniqlash imkonini beradi;
    • Agar tsiklning bajarilishi cheklangan bo'lsa va ko'rsatmalarning maksimal soni bo'yicha chegaradan oshib ketishi mumkin bo'lmasa, eBPF ilovasini tekshirish mexanizmiga dasturlarni halqalar bilan qayta ishlash qobiliyati qo'shildi;
  • Disk quyi tizimi, kiritish-chiqarish va fayl tizimlari
    • XFS fayl tizimi endi ko'p tarmoqli inode aylanib o'tishni qo'llab-quvvatlaydi (masalan, kvotalarni tekshirishda). Yangi ioctls BULKSTAT va INUMBERS qo'shildi, ular FS formatining beshinchi nashrida paydo bo'lgan funksiyalarga kirishni ta'minladi, masalan, inode tug'ilish vaqti va har bir AG guruhi uchun BULKSTAT va INUMBERS parametrlarini o'rnatish imkoniyati (Alocation Groups);
    • Ext4 ichida qo'llab-quvvatlash qo'shildi kataloglardagi bo'shliqlar (ajralmagan bloklar).
      Qayta ishlash taqdim etilgan ochiq fayllar uchun "i" belgisi (o'zgarmas) (agar bayroq fayl allaqachon ochiq bo'lgan vaqtda o'rnatilgan bo'lsa, yozish taqiqlanadi);

    • Btrfs barcha arxitekturalarda crc32c ning tezkor amalga oshirilishining ta'rifini beradi;
    • CIFSda smbdirect qo'llab-quvvatlash kodi eksperimental ishlab chiqish sifatida olib tashlandi. SMB3 GCM rejimida kriptografik algoritmlardan foydalanish imkoniyatini qo'shdi. ACE (Access Control Entry) yozuvlaridan rejim parametrlarini chiqarish uchun yangi oʻrnatish opsiyasi qoʻshildi. Open() chaqiruvining ishlashi optimallashtirildi;
    • Tekshirish punkti=o'chirish rejimida ishlayotganda axlat yig'uvchini cheklash uchun F2FS opsiyasi qo'shildi. F2FS dan blok diapazonlarini olib tashlash uchun ioctl qo'shildi, bu esa bo'lim hajmini tezda sozlash imkonini beradi. To'g'ridan-to'g'ri kiritish-chiqarishni ta'minlash uchun F2FS-ga almashtirish faylini joylashtirish imkoniyati qo'shildi. Barcha foydalanuvchilar uchun faylni mahkamlash va shunga o'xshash fayllar uchun bloklarni ajratish uchun qo'shimcha yordam;
    • Asinxron kiritish/chiqish io_uring interfeysiga sendmsg() va recvmsg() asinxron operatsiyalarini qo'llab-quvvatlash qo'shildi;
    • UBIFS fayl tizimiga zstd algoritmi yordamida siqishni qo'llab-quvvatlash va imzolangan FS tasvirlarini tekshirish imkoniyati qo'shildi;
    • Ceph FS endi fayllar uchun SELinux xavfsizlik belgilarini qo'llab-quvvatlaydi;
    • NFSv4 uchun server bilan o'rnatilgan ulanishlar sonini aniqlaydigan "nconnect =" yangi o'rnatish opsiyasi amalga oshirildi. Ushbu ulanishlar orasidagi trafik yuk balansi yordamida taqsimlanadi. Bundan tashqari, NFSv4 serveri hozirda joriy mijozlar, shu jumladan ular ochgan fayllar haqidagi ma'lumotlarga ega /proc/fs/nfsd/clients katalogini yaratadi;
  • Virtualizatsiya va xavfsizlik
    • Yadro o'rnatilgan qurilmalar uchun gipervisorni o'z ichiga oladi ACRN, bu real vaqt rejimidagi vazifalarga tayyorlik va muhim tizimlarda foydalanish uchun yaroqlilik bilan yozilgan. ACRN minimal qo'shimcha xarajatlarni ta'minlaydi, uskuna bilan o'zaro aloqada bo'lganda past kechikish va etarli darajada javob berishni kafolatlaydi. Protsessor resurslari, kiritish-chiqarish, tarmoq quyi tizimi, grafik va ovoz operatsiyalarini virtualizatsiya qilishni qo'llab-quvvatlaydi. ACRN elektron boshqaruv bloklari, asboblar paneli, avtomobil axborot tizimlari, iste'molchi IoT qurilmalari va boshqa o'rnatilgan texnologiyalarda bir nechta izolyatsiya qilingan virtual mashinalarni ishlatish uchun ishlatilishi mumkin;
    • Linux foydalanuvchi rejimida qo'shildi Vaqt bilan bog'liq kodni disk raskadrovka qilishni osonlashtirish uchun virtual UML muhitida vaqtni sekinlashtirish yoki tezlashtirish imkonini beruvchi vaqt sayohati rejimi. Bundan tashqari, parametr qo'shildi
      vaqt-sayohat-start, bu tizim soatini epoch formatida belgilangan momentdan boshlash imkonini beradi;

    • Yangi yadro buyruq qatori “init_on_alloc” va “init_on_free” opsiyalari qo‘shildi, agar belgilangan bo‘lsa, ajratilgan va bo‘shatilgan xotira maydonlarini nolga tenglashtirish yoqilgan (malloc va bepul uchun nollar bilan to‘ldirish), bu esa qo‘shimcha ishga tushirish xarajatlari hisobiga xavfsizlikni oshirish imkonini beradi;
    • Yangi haydovchi qo'shildi virtio-iommu ATTACH, DETACH, MAP va UNMAP kabi IOMMU so'rovlarini xotira sahifalari jadvallariga taqlid qilmasdan virtio transport orqali yuborish imkonini beruvchi paravirtuallashtirilgan qurilmani amalga oshirish bilan;
    • Yangi haydovchi qo'shildi virtio-pmem, NVDIMM kabi jismoniy manzil maydoniga moslashtirilgan saqlash qurilmalariga kirishni ifodalovchi;
    • Foydalanuvchiga yoki tarmoq nom maydoniga kriptografik kalitlarni biriktirish (kalitlar tanlangan nom maydonidan tashqarida kirish imkoni bo'lmaydi), shuningdek, kalitlarni ACL yordamida himoya qilish imkoniyati amalga oshirildi;
    • Kripto quyi tizimiga qo'shildi juda tez kriptografik bo'lmagan xesh algoritmini qo'llab-quvvatlash xxhash, tezligi xotira ishlashiga bog'liq;
  • Tarmoq quyi tizimi
    • Ilgari foydalanish uchun mavjud bo'lmagan 4/0.0.0.0 oralig'ida IPv8 manzillarini qayta ishlash yoqilgan. Ushbu pastki tarmoqning taqdimoti imkon beradi yana 16 million IPv4 manzilini tarqatish;
    • Nftables uchun Netfilterda qo'shildi qo'shilgan drayverlardan foydalanish orqali paketlarni filtrlash uchun apparat tezlashtirish mexanizmlarini qo'llab-quvvatlash Flow Block API. Barcha zanjirlar bilan qoidalarning butun jadvallari tarmoq adapterlari tomoniga joylashtirilishi mumkin. Yoqish NFT_TABLE_F_HW bayrog'ini jadvalga ulash orqali amalga oshiriladi. Oddiy Layer 3 va Layer 4 protokoli metama'lumotlarini, qabul qilish/rad qilish harakatlarini, IP va jo'natuvchi/qabul qiluvchi tarmoq portlari va protokol turi bo'yicha xaritalashni qo'llab-quvvatlaydi;
    • Qo'shilgan br_netfilter emulyatsiya qatlamidan foydalanishni talab qilmaydigan tarmoq ko'priklari uchun o'rnatilgan ulanishni kuzatishni qo'llab-quvvatlash;
    • nf_tables ichida qo'shildi iptables-dan shunga o'xshash funksiyalarni takrorlaydigan SYNPROXY modulini qo'llab-quvvatlash va IPv4 sarlavhasidagi individual variantlar uchun qoidalarni tekshirish imkoniyati ham amalga oshiriladi;
    • BPF dasturlarini setsockopt() va getsockopt() tizim qo'ng'iroqlariga biriktirish imkoniyati qo'shildi, bu esa, masalan, ushbu qo'ng'iroqlarga o'z kirish ishlovchilaringizni biriktirish imkonini beradi. Bundan tashqari, yangi qo'ng'iroq nuqtasi (kanca) qo'shildi, uning yordamida siz BPF dasturiga har bir RTT oralig'i uchun bir marta qo'ng'iroqni tashkil qilishingiz mumkin (qaytish vaqti, ping vaqti);
    • IPv4 va IPv6 uchun qo'shildi marshrutlash jadvallarining kengaytirilishini oshirishga qaratilgan yangi nexthop marshrutlash ma'lumotlarini saqlash mexanizmi. Sinovlar shuni ko'rsatdiki, yangi tizimdan foydalanganda yadroga atigi 743 soniyada 4.3 ming marshrut to'plami yuklangan;
    • Bluetooth uchun amalga oshirildi LE pingni qo'llab-quvvatlash uchun zarur bo'lgan funksionallik;
  • uskunalar
    • Qo'shilgan kompaniyaning x86-mos keladigan protsessorlarini qo'llab-quvvatlash Zhaoksin, VIA Technologies va Shanxay munitsipaliteti o'rtasidagi qo'shma loyiha natijasida ishlab chiqilgan. ZX CPU oilasi x86-64 Isaiah arxitekturasida qurilgan bo'lib, texnologiya rivojlanishini davom ettirmoqda. VIA Kentavr;
    • DRM (Direct Rendering Manager) quyi tizimi, shuningdek, amdgpu va i915 grafik drayverlari HDMI porti orqali HDR (yuqori dinamik diapazon) metama’lumotlarini tahlil qilish, qayta ishlash va jo‘natish uchun qo‘shimcha qo‘llab-quvvatladi, bu esa HDR panellari va ekranlaridan foydalanish imkonini beradi. qo'shimcha yorqinlik diapazonlarini ko'rsatish;
    • Amdgpu drayveri AMD NAVI GPU (RX5700) uchun dastlabki yordamni qo'shdi, u asosiy drayverni, ekran o'zaro ta'sir kodi (DCN2), GFX va hisoblashni qo'llab-quvvatlashni (GFX10),
      SDMA 5 (DMA0 tizimi), quvvatni boshqarish va multimedia kodlovchilari/dekoderlari (VCN2). amdgpu shuningdek, Vega12 va Vega20 GPUlariga asoslangan kartalarni qo'llab-quvvatlashni yaxshilaydi, ular uchun qo'shimcha xotira va quvvatni boshqarish imkoniyatlari qo'shilgan;

    • Amdkfd drayveriga VegaM GPUlariga asoslangan kartalar uchun qo'shimcha qo'llab-quvvatlash (Fiji, Tonga, Polaris kabi diskret GPUlar uchun);
    • Icelake chiplari uchun Intel video kartalari uchun DRM drayverida amalga oshirildi yangi ko'p segmentli gamma tuzatish rejimi. YCbCr4:2:0 formatida DisplayPort orqali chiqish imkoniyati qo‘shildi. Yangi proshivka qo'shildi GuC SKL, BXT, KBL, GLK va ICL uchun. Asinxron rejimda ekran quvvatini o'chirish imkoniyati amalga oshirildi. Qo'shilgan Ironlake (gen5) va gen4 (Broadwater - Cantiga) chiplari uchun renderlash kontekstini saqlash va tiklashni qo'llab-quvvatlash, bu sizga bir paketli operatsiyadan ikkinchisiga o'tishda foydalanuvchi maydonidan GPU holatini tiklash imkonini beradi;
    • Nouveau drayveri NVIDIA Turing TU116 chipsetini aniqlashni ta'minlaydi;
    • ARM Komeda ekran tezlatgichlari (Mali D71) uchun DRM/KMS drayverining imkoniyatlari kengaytirildi, masshtablash, qatlamlarni ajratish/birlashtirish, aylantirish, kechiktirilgan yozish, AFBC, SMMU va Y0L2, P010, YUV420_8/10BIT rang kodlash formatlarini qo'llab-quvvatlash mavjud. qo'shilgan;
    • MSM drayveri Qualcomm protsessorlarida ishlatiladigan A540 GPU Adreno seriyasini, shuningdek Snapdragon 8998 uchun MSM835 DSI kontrollerini qo'llab-quvvatlaydi;
    • Samsung S6E63M0, Armadeus ST0700, EDT ETM0430G0DH6, OSD101T2045-53TS LCD panellari uchun qo'shilgan drayverlar,
      Evervision VGG804821, FriendlyELEC HD702E, KOE tx14d24vm1bpa, TFC S9700RTWV43TR-01B, EDT ET035012DM6 va VXT VL050-8048NT-C01;

    • Qo'shilgan dekodlashni tezlashtirish vositalarini yoqish uchun haydovchi
      Amlogic Meson SoC da mavjud videolar;

    • V3d drayverida (Raspberry Pi-da ishlatiladigan Broadcom Video Core V GPU uchun) paydo bo'ldi. qo'llab-quvvatlash hisoblash shaderlarini jo'natish;
    • Qo'shilgan Apple MacBook va MacBookPro noutbuklarining zamonaviy modellarida qo'llaniladigan SPI klaviaturalari va trek panellari uchun haydovchi;
    • Qo'shilgan floppi drayveri bilan bog'langan ioctl qo'ng'iroqlari uchun qo'shimcha himoya va drayverning o'zi xizmat ko'rsatilmagan deb belgilangan
      ("etim"), bu uning sinovini to'xtatishni nazarda tutadi. Drayv hali ham yadroda saqlanadi, ammo uning to'g'ri ishlashi kafolatlanmaydi. Drayv eskirgan deb hisoblanadi, chunki uni sinab ko'rish uchun ishlaydigan uskunani topish qiyin - barcha joriy tashqi drayvlar, qoida tariqasida, USB interfeysidan foydalanadi.

    • Qo'shilgan Raspberry Pi platalari uchun cpufreq drayveri, bu protsessor chastotasidagi o'zgarishlarni dinamik ravishda boshqarish imkonini beradi;
    • Yangi ARM SoC Mediatek mt8183 (4x Cortex-A73 + 4x Cortex-A53), TI J721E (2x Cortex-A72 + 3x Cortex-R5F + 3 DSP + MMA) va Amlogic G12B (4x Cortex-A73 +) uchun qo'shimcha qo'llab-quvvatlash A2 ), shuningdek taxtalar:
      • Purizm Librem5,
      • Aspeed BMC,
      • Microsoft Olympus BMC,
      • Kontron SMARC,
      • Novtech Meerkat96 (i.MX7),
      • ST Micro Avenger96,
      • Google Cheza (Qualcomm SDM845),
      • Qualcomm Dragonboard 845c (Qualcomm SDM845),
      • Hugsun X99 televizor qutisi (Rockchip RK3399),
      • Khadas Edge/Edge-V/Kapitan (Rockchip RK3399),
      • HiHope RZ/G2M,
      • NXP LS1021A-TSN.

Shu bilan birga, Lotin Amerikasi erkin dasturiy ta'minot fondi shakllangan
variantni tanlang butunlay bepul yadro 5.3 - Linux-libre 5.3-gnu, ishlab chiqaruvchi tomonidan cheklangan, erkin bo'lmagan komponentlar yoki kod bo'limlarini o'z ichiga olgan proshivka va drayver elementlaridan tozalangan. Yangi versiyada blob yuklash qcom, hdcp drm, allegro-dvt va meson-vdec drayverlarida o'chirib qo'yilgan.
Amdgpu, i915, netx, r8169, brcmfmac, rtl8188eu, adreno, si2157, pvrusb2, sensorli ekran_dmi, skylake uchun ovoz drayveri, shuningdek, mikrokod hujjatlaridagi drayverlar va quyi tizimlarda yangilangan blob tozalash kodi.

Manba: opennet.ru

a Izoh qo'shish