Linux 5.3 nüvə buraxılışı

İki aylıq inkişafdan sonra Linus Torvalds təqdim etdi kernel buraxılışı Linux 5.3. Ən diqqətəlayiq dəyişikliklər arasında: AMD Navi GPU, Zhaoxi prosessorları və Intel Speed ​​​​Select güc idarəetmə texnologiyasına dəstək, dövrlərdən istifadə etmədən gözləmək üçün umwait təlimatlarından istifadə etmək imkanı,
asimmetrik CPU-lar üçün interaktivliyi artıran 'istifadə sıxma' rejimi, pidfd_open sistem çağırışı, 4/0.0.0.0 alt şəbəkəsindən IPv8 ünvanlarından istifadə etmək imkanı, nftables hardware sürətləndirilməsi imkanı, DRM altsistemində HDR dəstəyi, ACRNN-in inteqrasiyası hipervizor.

В elan yeni buraxılışda, Linus bütün tərtibatçılara nüvənin inkişafının əsas qaydasını xatırlatdı - istifadəçi məkanı komponentləri üçün eyni davranışın saxlanması. Kernelə edilən dəyişikliklər heç bir şəkildə artıq işləyən proqramları pozmamalı və ya istifadəçi səviyyəsində reqressiyaya səbəb olmamalıdır. Bu halda, davranışın pozulması yalnız ABI-nin dəyişməsinə, köhnəlmiş kodun silinməsinə və ya səhvlərin görünüşünə deyil, həm də düzgün işləyən faydalı təkmilləşdirmələrin dolayı təsirinə səbəb ola bilər. Nümunəvi misal olaraq var idi atılır faydalıdır optimallaşdırma Ext4 kodunda, kiçik I/O sorğuları üçün inode cədvəlinin əvvəlcədən oxunmasını söndürməklə sürücüyə girişlərin sayını azaldır.

Optimallaşdırma ona gətirib çıxardı ki, disk aktivliyinin azalması səbəbindən getrandom() təsadüfi ədədlər generatoru üçün entropiya daha yavaş yığılmağa başladı və bəzi konfiqurasiyalarda, müəyyən şərtlərdə entropiya hovuzu yaranana qədər yükləmə zamanı donmalar müşahidə oluna bilər. dolu. Optimallaşdırma həqiqətən faydalı olduğundan, tərtibatçılar arasında getrandom() çağırışının standart bloklama rejimini söndürməklə və entropiyanı gözləmək üçün isteğe bağlı bayraq əlavə etməklə problemi həll etmək təklif edilən bir müzakirə yarandı, lakin belə bir dəyişiklik yükləmənin ilkin mərhələsində təsadüfi ədədlərin keyfiyyəti.

Yeni versiyaya 15794 tərtibatçıdan 1974 düzəliş daxildir,
yamaq ölçüsü - 92 MB (dəyişikliklər 13986 fayla təsir etdi, 258419 sətir kod əlavə edildi,
599137 sıra silindi). 39-də təqdim olunanların təxminən 5.3% -i
Dəyişikliklərin təxminən 12%-i cihaz sürücüləri ilə bağlıdır
hardware arxitekturasına xas kodun yenilənməsinə münasibət, 11%
şəbəkə yığını, 3% fayl sistemləri və 3% daxili ilə bağlıdır
nüvə alt sistemləri.

Əsas yeniliklər:

  • Yaddaş və sistem xidmətləri
    • PID-in təkrar istifadəsi vəziyyətlərini idarə etməyə kömək etmək üçün "pidfd" funksionallığının davamlı inkişafı (pidfd xüsusi proseslə əlaqələndirilir və dəyişmir, halbuki PID həmin PID ilə əlaqəli cari proses başa çatdıqdan sonra başqa bir proseslə əlaqələndirilə bilər). Əvvəllər nüvəyə əlavə edilmişdi
      pidfd_send_signal() sistem çağırışı və clone() çağırışında CLONE_PIDFD bayrağı idfd_send_signal()-da istifadə üçün pidfd əldə etmək üçün. CLONE_PIDFD bayrağı ilə clone() funksiyasından istifadə xidmət menecerləri və ya Android platformasının yaddaşdankənar qüvvəyə son qoyma sistemi ilə problemlər yarada bilər. Bu halda, başlamaq üçün CLONE_PIDFD olmadan fork() və ya clone() çağırışından istifadə edilir.

      Kernel 5.3 sistem çağırışını təqdim etdi pidfd_open(), bu, CLONE_PIDFD bayrağı ilə clone() çağırmaqla yaradılmayan ixtiyari mövcud proses üçün yoxlanıla bilən pidfd əldə etməyə imkan verir. Həmçinin, yeni prosesə PID təyin edilərsə, proses menecerlərinə yarış vəziyyətindən qorxmadan ixtiyari proseslərin dayandırılmasını izləməyə imkan verən poll() və epoll() funksiyalarından istifadə edərək pidfd sorğusu üçün dəstək əlavə edildi. pidfd ilə əlaqəli prosesin dayandırıldığı zaman bildiriş mexanizmi onun uşaq prosesinin dayandırıldığı zaman bildirişlə eynidir;

    • Tapşırıq planlayıcısına yükləmə mexanizmi üçün dəstək əlavə edildi (İstifadə sıxma), CPU-da aktiv olan tapşırıqlardan asılı olaraq minimum və ya maksimum tezlik diapazonlarına riayət etməyə imkan verir. Təqdim olunan mexanizm, bu tapşırıqları ən azı “tələb olunan” tezliyin aşağı hissəsində yerinə yetirməklə istifadəçi təcrübəsinin keyfiyyətinə birbaşa təsir edən tapşırıqları sürətləndirir. İstifadəçinin işinə təsir etməyən aşağı prioritetli vəzifələr "icazə verilən" tezliyin yuxarı həddi ilə işə salınır. Limitlər sched_setattr() sistem çağırışında sched_uclamp_util_min və sched_uclamp_util_max atributları vasitəsilə təyin edilir.
    • Enerji idarəetmə texnologiyası üçün əlavə dəstək Intel Sürət Seçimi, Intel Xeon prosessorları olan seçilmiş serverlərdə mövcuddur. Bu texnologiya müxtəlif CPU nüvələri üçün performans və bölmə ötürmə qabiliyyəti parametrlərini təyin etməyə imkan verir ki, bu da müəyyən nüvələrdə yerinə yetirilən tapşırıqlar üçün performansı prioritetləşdirməyə imkan verir, digər nüvələrdə performansı qurban verir;
    • İstifadəçi məkanında proseslər tərəfindən verilmişdir umwait təlimatından istifadə edərək ilmələrdən istifadə etmədən qısa müddət gözləmək imkanı. Bu təlimat, umonitor və tpause təlimatları ilə birlikdə, Intel-in qarşıdan gələn "Tremont" çiplərində təklif olunacaq və Hyper Threading istifadə edərkən enerjiyə qənaət edən və digər iplərin işinə təsir göstərməyən gecikmələrin həyata keçirilməsinə imkan verəcək;
    • RISC-V arxitekturası üçün böyük yaddaş səhifələri üçün dəstək əlavə edildi;
    • Kprobes izləmə mexanizmi, məsələn, sistem çağırışlarına ötürülən strukturların məzmununu qiymətləndirmək üçün istifadə oluna bilən kernel göstəricilərinə istifadəçi sahəsinə istinad etmək qabiliyyətini əlavə etdi. Yükləmə mərhələsində çekləri quraşdırmaq imkanı da əlavə edildi.
    • Real vaxt rejimində işləmək üçün konfiqurasiya faylına PREEMPT_RT seçimi əlavə edildi. Real vaxt rejimini dəstəkləmək üçün kodun özü hələ nüvəyə əlavə edilməyib, lakin seçimin görünüşü uzunmüddətli epikliyin yaxşı bir əlamətidir. inteqrasiya Realtime-Preempt yamaqları tamamlanmaq üzrədir;
    • Daha çox sayda bayraqları təyin etməyə imkan verən clone() interfeysinin daha genişlənmiş versiyasının tətbiqi ilə clone3() sistem çağırışı əlavə edildi;
    • BPF proqramlarına ixtiyari proseslərə siqnal göndərməyə imkan verən bpf_send_signal() işləyicisi əlavə edildi;
    • KVM hipervizor mühitində mükəmməl hadisələr üçün administratora qonaq sistem tərəfində monitorinq üçün icazə verilən və ya icazə verilməyən hadisələrin növlərini müəyyən etməyə imkan verən yeni hadisə filtrləmə mexanizmi əlavə edilmişdir;
    • Döngənin icrası məhduddursa və təlimatların maksimum sayı üzrə limiti aşmağa gətirib çıxara bilmirsə, eBPF tətbiqinin yoxlanılması mexanizminə looplarla proqramları emal etmək imkanı əlavə edilmişdir;
  • Disk alt sistemi, giriş/çıxış və fayl sistemləri
    • XFS fayl sistemi indi çox yivli inode bypassını dəstəkləyir (məsələn, kvotaları yoxlayarkən). Yeni ioctls BULKSTAT və INUMBERS əlavə edildi və bu, FS formatının beşinci nəşrində görünən funksiyalara girişi təmin etdi, məsələn, inode doğum vaxtı və hər bir AG qrupu üçün BULKSTAT və INUMBERS parametrlərini təyin etmək imkanı (Bölmə Qrupları);
    • Ext4-də dəstək əlavə edildi qovluqlarda boşluqlar (əlaqəsiz bloklar).
      Emal təmin edilmişdir açıq fayllar üçün "i" (dəyişməz) bayrağı (fayl artıq açıq olan vaxtda bayraq qoyulubsa, yazmaq qadağandır);

    • Btrfs crc32c-nin bütün arxitekturalarda sürətli tətbiqinin tərifini təqdim edir;
    • CIFS-də smbdirect dəstəyi üçün kod eksperimental inkişaf kimi silindi. SMB3, GCM rejimində kriptoqrafik alqoritmlərdən istifadə etmək imkanı əlavə etdi. ACE (Access Control Entry) girişlərindən rejim parametrlərini çıxarmaq üçün yeni quraşdırma seçimi əlavə edildi. open() çağırışının performansı optimallaşdırıldı;
    • F2FS-ə yoxlama nöqtəsi=söndürmə rejimində işləyərkən zibil kollektorunu məhdudlaşdırmaq üçün seçim əlavə edildi. F2FS-dən blok diapazonlarını silmək üçün ioctl əlavə edildi, bu, hissənin ölçüsünü tənzimləməyə imkan verir. Birbaşa I/O təmin etmək üçün F2FS-də dəyişdirmə faylı yerləşdirmək imkanı əlavə edildi. Bütün istifadəçilər üçün faylın bərkidilməsi və oxşar fayllar üçün blokların ayrılması üçün əlavə dəstək;
    • Asinxron giriş/çıxış io_uring interfeysinə asinxron əməliyyatlar üçün sendmsg() və recvmsg() dəstəyi əlavə edildi;
    • Zstd alqoritmindən istifadə edərək sıxılma dəstəyi və imzalanmış FS şəkillərini yoxlamaq imkanı UBIFS fayl sisteminə əlavə edilmişdir;
    • Ceph FS indi fayllar üçün SELinux təhlükəsizlik etiketlərini dəstəkləyir;
    • NFSv4 üçün serverlə qurulan əlaqələrin sayını təyin edən “nconnect=” yeni quraşdırma seçimi tətbiq edilmişdir. Bu birləşmələr arasında trafik yük balansından istifadə etməklə paylanacaq. Bundan əlavə, NFSv4 server indi cari müştərilər haqqında məlumat, o cümlədən açdıqları fayllar haqqında məlumat olan /proc/fs/nfsd/clients kataloqu yaradır;
  • Virtuallaşdırma və Təhlükəsizlik
    • Nüvəyə quraşdırılmış qurğular üçün hipervizor daxildir ACRN, real vaxt tapşırıqlarına hazır olmaq və kritik missiya sistemlərində istifadə üçün uyğunluq nəzərə alınmaqla yazılmışdır. ACRN minimal yerüstü xərcləri təmin edir, avadanlıqla qarşılıqlı əlaqə zamanı aşağı gecikmə və adekvat reaksiyaya zəmanət verir. CPU resurslarının, I/O, şəbəkə alt sistemi, qrafika və səs əməliyyatlarının virtuallaşdırılmasını dəstəkləyir. ACRN elektron idarəetmə bloklarında, tablosunda, avtomobil informasiya sistemlərində, istehlakçıların IoT cihazlarında və digər quraşdırılmış texnologiyada çoxsaylı təcrid olunmuş virtual maşınları idarə etmək üçün istifadə edilə bilər;
    • İstifadəçi rejimində Linux əlavə etdi Vaxtla əlaqəli kodun sazlanmasını asanlaşdırmaq üçün virtual UML mühitində vaxtı yavaşlatmağa və ya sürətləndirməyə imkan verən vaxt səyahəti rejimi. Bundan əlavə, bir parametr əlavə edildi
      zaman-səyahət-start, sistem saatının epoch formatında müəyyən bir andan başlamasına imkan verir;

    • “init_on_alloc” və “init_on_free” yeni nüvə əmr satırı seçimləri əlavə edildi, müəyyən edildikdə, ayrılmış və boşaldılmış yaddaş sahələrinin sıfırlanması aktivləşdirilir (malloc və pulsuz üçün sıfırlarla doldurulur), bu da əlavə başlatma sayəsində təhlükəsizliyi gücləndirməyə imkan verir. yerüstü;
    • Yeni sürücü əlavə edildi virtio-iommu yaddaş səhifə cədvəllərini təqlid etmədən virtio nəqliyyat üzərində ATTACH, DETACH, MAP və UNMAP kimi IOMMU sorğularını göndərməyə imkan verən paravirtuallaşdırılmış cihazın tətbiqi ilə;
    • Yeni sürücü əlavə edildi virtio-pmem, NVDIMM-lər kimi fiziki ünvan məkanına uyğunlaşdırılmış saxlama cihazlarına girişi təmsil edir;
    • İstifadəçiyə və ya şəbəkə ad sahəsinə kriptoqrafik açarları əlavə etmək (açarlar seçilmiş ad məkanından kənarda əlçatmaz olur), həmçinin ACL-lərdən istifadə edərək açarları qorumaq imkanı həyata keçirilib;
    • Kripto altsisteminə əlavə etdi çox sürətli kriptoqrafik olmayan hashing alqoritmi üçün dəstək xxhash, sürəti yaddaş performansından asılıdır;
  • Şəbəkə alt sistemi
    • Əvvəllər istifadə üçün əlçatmaz olan 4/0.0.0.0 diapazonunda IPv8 ünvanlarının işlənməsi aktivləşdirildi. Bu alt şəbəkənin təqdimatı iradə daha 16 milyon IPv4 ünvanını yaymaq;
    • Nftables üçün Netfilterdə əlavə etdi əlavə sürücülərin istifadəsi ilə paket filtrasiyası üçün aparat sürətləndirilməsi mexanizmlərinə dəstək Flow Block API. Bütün zəncirləri olan bütün qaydalar cədvəli şəbəkə adapterlərinin yan tərəfində yerləşdirilə bilər. Aktivləşdirmə NFT_TABLE_F_HW bayrağını cədvələ bağlamaq yolu ilə həyata keçirilir. Sadə Layer 3 və Layer 4 protokol metaməlumatlarını, qəbul/rədd hərəkətlərini, IP və göndərici/qəbuledici şəbəkə portları və protokol növü üzrə xəritələri dəstəkləyir;
    • Əlavə edilib br_netfilter emulyasiya qatının istifadəsini tələb etməyən şəbəkə körpüləri üçün quraşdırılmış əlaqə izləmə dəstəyi;
    • nf_tables-də əlavə etdi oxşar funksionallığı iptables-dən təkrarlayan SYNPROXY moduluna dəstək və IPv4 başlığında fərdi seçimlər üçün qaydaları yoxlamaq imkanı da həyata keçirilir;
    • BPF proqramlarını setsockopt() və getsockopt() sistem zənglərinə əlavə etmək imkanı əlavə edildi, bu, məsələn, bu zənglərə öz giriş idarəçilərini əlavə etməyə imkan verir. Bundan əlavə, yeni zəng nöqtəsi (qarmaq) əlavə edildi, onun köməyi ilə hər RTT intervalı üçün bir dəfə BPF proqramına zəng təşkil edə bilərsiniz (gediş-gəliş vaxtı, ping vaxtı);
    • IPv4 və IPv6 üçün əlavə etdi marşrutlaşdırma cədvəllərinin miqyasını artırmağa yönəlmiş yeni nexthop marşrutlaşdırma məlumatlarının saxlanması mexanizmi. Testlər göstərdi ki, yeni sistemdən istifadə edərkən nüvəyə cəmi 743 saniyə ərzində 4.3 min marşrut dəsti yüklənib;
    • Bluetooth üçün həyata keçirilən LE ping-i dəstəkləmək üçün tələb olunan funksionallıq;
  • Оборудование
    • Əlavə edilib şirkətin x86 uyğun prosessorlarına dəstək Zhaoksin, VIA Technologies və Şanxay Bələdiyyəsi arasında birgə layihə nəticəsində hazırlanmışdır. ZX CPU ailəsi texnologiyanın inkişafını davam etdirərək x86-64 Isaiah arxitekturasında qurulmuşdur. VIA Kentavr;
    • DRM (Direct Rendering Manager) alt sistemi, həmçinin amdgpu və i915 qrafika drayverləri HDR (yüksək dinamik diapazon) metaməlumatlarının təhlili, işlənməsi və HDMI portu vasitəsilə göndərilməsi üçün dəstək əlavə edib, bu da HDR panelləri və ekranların istifadəsinə imkan verir. əlavə parlaqlıq diapazonlarının göstərilməsi;
    • Amdgpu drayveri AMD NAVI GPU (RX5700) üçün ilkin dəstəyi əlavə etdi, buraya əsas sürücü, ekran qarşılıqlı kodu (DCN2), GFX və hesablama dəstəyi (GFX10),
      SDMA 5 (Sistem DMA0), enerjinin idarə edilməsi və multimedia kodlayıcıları/dekoderləri (VCN2). amdgpu həmçinin Vega12 və Vega20 GPU-lara əsaslanan kartların dəstəyini təkmilləşdirir, onlar üçün əlavə yaddaş və güc idarəetmə imkanları əlavə olunur;

    • Amdkfd sürücüsünə VegaM GPU-larına əsaslanan kartlar üçün dəstək əlavə edildi (Fiji, Tonqa, Polaris kimi diskret GPU-lar üçün);
    • Icelake çipləri üçün Intel video kartları üçün DRM sürücüsündə həyata keçirilən yeni çox seqmentli qamma korreksiyası rejimi. YCbCr4:2:0 formatında DisplayPort vasitəsilə çıxış imkanı əlavə edildi. Yeni proqram təminatı əlavə edildi GuC SKL, BXT, KBL, GLK və ICL üçün. Asinxron rejimdə ekran gücünü söndürmək imkanı həyata keçirilib. Əlavə edilib bir toplu əməliyyatdan digərinə keçərkən istifadəçi məkanından GPU vəziyyətini bərpa etməyə imkan verən Ironlake (gen5) və gen4 (Broadwater - Cantiga) çipləri üçün render kontekstinin saxlanması və bərpası dəstəyi;
    • Nouveau sürücüsü NVIDIA Turing TU116 çipsetinin aşkarlanmasını təmin edir;
    • ARM Komeda ekran sürətləndiriciləri (Mali D71) üçün DRM/KMS drayverinin imkanları genişləndirilmişdir, miqyaslaşdırma, qatları bölmək/birləşdirmək, fırlanma, təxirə salınmış yazma, AFBC, SMMU və Y0L2, P010, YUV420_8/10BIT rəng kodlaşdırma formatlarına dəstək genişlənmişdir. əlavə edildi;
    • MSM sürücüsü Qualcomm prosessorlarında istifadə olunan A540 GPU Adreno seriyası üçün dəstək, həmçinin Snapdragon 8998 üçün MSM835 DSI nəzarətçi dəstəyi əlavə edir;
    • Samsung S6E63M0, Armadeus ST0700, EDT ETM0430G0DH6, OSD101T2045-53TS LCD panelləri üçün əlavə edilmiş drayverlər,
      Evervision VGG804821, FriendlyELEC HD702E, KOE tx14d24vm1bpa, TFC S9700RTWV43TR-01B, EDT ET035012DM6 və VXT VL050-8048NT-C01;

    • Əlavə edilib dekodlaşdırma sürətləndirmə vasitələrini aktivləşdirmək üçün sürücü
      Amlogic Meson SoC-də mövcud olan videolar;

    • v3d sürücüsündə (Raspberry Pi-də istifadə olunan Broadcom Video Core V GPU üçün) göründü. dəstək hesablama şeyderlərinin göndərilməsi;
    • Əlavə edilib Apple MacBook və MacBookPro noutbuklarının müasir modellərində istifadə olunan SPI klaviaturaları və trekpadlar üçün sürücü;
    • Əlavə edilib disket sürücüsü ilə əlaqəli ioctl zəngləri üçün əlavə qorunma və sürücünün özü baxımsız olaraq qeyd olunur
      (“yetim”), bu da onun sınağının dayandırılmasını nəzərdə tutur. Sürücü hələ də nüvədə saxlanılır, lakin onun düzgün işləməsinə zəmanət verilmir. Sürücü köhnəlmiş hesab olunur, çünki onu yoxlamaq üçün işləyən avadanlıq tapmaq çətindir - bütün mövcud xarici disklər, bir qayda olaraq, USB interfeysindən istifadə edirlər.

    • Əlavə edilib prosessor tezliyində dəyişiklikləri dinamik şəkildə idarə etməyə imkan verən Raspberry Pi lövhələri üçün cpufreq sürücüsü;
    • Yeni ARM SoC Mediatek mt8183 (4x Cortex-A73 + 4x Cortex-A53), TI J721E (2x Cortex-A72 + 3x Cortex-R5F + 3 DSP + MMA) və Amlogic G12B (4x Cortex-A73 +) üçün əlavə dəstək A2 ), həmçinin lövhələr:
      • 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 qutusu (Rockchip RK3399),
      • Khadas Edge/Edge-V/Kapitan (Rockchip RK3399),
      • HiHope RZ/G2M,
      • NXP LS1021A-TSN.

Eyni zamanda Latın Amerikası Azad Proqram təminatı Fondu formalaşmışdır
seçimi tamamilə pulsuz kernel 5.3 - Linux pulsuz 5.3-gnu, əhatə dairəsi istehsalçı tərəfindən məhdudlaşdırılan, sərbəst olmayan komponentləri və ya kod bölmələrini ehtiva edən proqram təminatı və sürücü elementlərindən təmizlənmişdir. Yeni buraxılışda blob yükləmə qcom, hdcp drm, allegro-dvt və meson-vdec drayverlərində deaktiv edilib.
Amdgpu, i915, netx, r8169, brcmfmac, rtl8188eu, adreno, si2157, pvrusb2, touchscreen_dmi, skylake üçün səs drayveri, həmçinin mikrokod sənədlərində drayverlərdə və alt sistemlərdə yenilənmiş blob təmizləmə kodu.

Mənbə: opennet.ru

Добавить комментарий