Linux nüvəsi 5.14

Linux nüvəsi 5.14

İki aylıq inkişafdan sonra Linus Torvalds təqdim etdi kernel buraxılışı Linux 5.14. Ən diqqətəlayiq dəyişikliklər arasında: yeni quotactl_fd() və memfd_secret() sistem zəngləri, ide və xam sürücülərin silinməsi, qruplar üçün yeni I/O prioritet nəzarətçisi, SCHED_CORE tapşırıq planlaşdırma rejimi, təsdiqlənmiş BPF proqram yükləyicilərinin yaradılması üçün infrastruktur.

Yeni versiyaya 15883 tərtibatçıdan 2002 69 düzəliş daxildir, yamaq ölçüsü 12580 MB-dır (dəyişikliklər 861501 321654 fayla təsir etdi, 47 5.14 kod sətri əlavə edildi, 14 13 sətir silindi). 3-də təqdim edilən bütün dəyişikliklərin təxminən 3%-i qurğu drayverləri, dəyişikliklərin təxminən XNUMX%-i hardware arxitekturasına xas kodun yenilənməsi, XNUMX%-i şəbəkə yığını, XNUMX%-i fayl sistemləri və XNUMX%-i ilə bağlıdır. daxili nüvə alt sistemləri ilə əlaqədardır.

Əsas yeniliklər:

  • disk alt sistemi, giriş/çıxış və fayl sistemləri:
    • qrup üçün həyata keçirilən yeni I/O prioritet nəzarətçisi - rq-qos, hər bir qrup üzvləri tərəfindən yaradılan cihazları bloklamaq üçün sorğuların emal prioritetinə nəzarət edə bilər. Yeni prioritet nəzarətçi dəstəyi mq-deadline I/O planlaşdırıcısına əlavə edildi;
    • ext4 fayl sistemində həyata keçirilən yeni ioctl əmri EXT4_IOC_CHECKPOINT, o, bütün gözlənilən əməliyyatları jurnaldan və əlaqəli buferlərdən diskə məcbur edir və həmçinin qeyd yaddaşının istifadə etdiyi sahənin üzərinə yazır. Dəyişiklik fayl sistemlərindən məlumat sızmasının qarşısını almaq üçün təşəbbüsün bir hissəsi kimi hazırlanmışdır;
    • Btrfs-də təqdim etdi Performansın optimallaşdırılması: fsync icrası zamanı genişləndirilmiş atributların lazımsız qeydini aradan qaldırmaqla, genişləndirilmiş atributlarla intensiv əməliyyatların performansı 17%-ə qədər artdı. Əlavə olaraq, ölçülərə təsir etməyən trim əməliyyatlarını yerinə yetirərkən, tam sinxronizasiya deaktiv edilir, bu da əməliyyat müddətini 12% azaldır. FS yoxlanarkən I/O bant genişliyini məhdudlaşdırmaq üçün sysfs-ə parametr əlavə edilmişdir. Cihazın ölçülərinin dəyişdirilməsini və silinməsini ləğv etmək üçün ioctl zəngləri əlavə edildi;
    • XFS-də yenidən işlənmişdir toplu rejimdə yaddaş səhifələrinin ayrılmasına ötürülən bufer keşinin həyata keçirilməsi. Təkmilləşdirilmiş keş səmərəliliyi;
    • F2FS yalnız oxumaq rejimində işləmək üçün seçim əlavə etdi və təsadüfi oxuma performansını yaxşılaşdırmaq üçün sıxılmış blok keş rejimini (compress_cache) tətbiq etdi. mmap() əməliyyatından istifadə edərək yaddaşa uyğunlaşdırılmış faylların sıxılması üçün dəstək həyata keçirilib. Maska ilə fayl sıxılmasını selektiv şəkildə söndürmək üçün yeni nocompress quraşdırma seçimi təklif edilmişdir;
    • bəzi rəqəmsal kameraların saxlanması ilə uyğunluğu yaxşılaşdırmaq üçün exFAT sürücüsündə iş görüldü;
    • əlavə sistem çağırışı quotactl_fd(), bu, xüsusi cihaz faylı vasitəsilə deyil, kvota tətbiq olunduğu fayl sistemi ilə əlaqəli fayl deskriptorunu göstərməklə kvotaları idarə etməyə imkan verir;
    • IDE interfeysli blok cihazları üçün köhnə drayverlər nüvədən çıxarılıb, onlar çoxdan libata alt sistemi ilə əvəz olunub. Köhnə qurğular üçün dəstək tam həcmdə saxlanılıb, dəyişikliklər yalnız köhnə drayverlərdən istifadə imkanlarına aiddir, istifadə edərkən disklər /dev/sd* deyil, /dev/hd* adlanırdı;
    • /dev/raw interfeysi vasitəsilə bloklanmış cihazlara bufersiz girişi təmin edən “xam” drayver nüvədən silindi. Bu funksionallıq O_DIRECT bayrağından istifadə edən proqramlarda çoxdan tətbiq edilmişdir;
  • yaddaş və sistem xidmətləri:
    • tapşırıq planlayıcısında yeni planlaşdırma rejimi tətbiq edilmişdir SCHED_CORE, hansı proseslərin eyni CPU nüvəsində birlikdə işləyə biləcəyini idarə etməyə imkan verir. Hər bir prosesə proseslər arasında etimad dairəsini müəyyən edən kuki identifikatoru təyin edilə bilər (məsələn, eyni istifadəçi və ya konteynerə aid olan). Kod icrasını təşkil edərkən, planlaşdırıcı bir CPU nüvəsinin yalnız eyni sahiblə əlaqəli proseslər arasında paylaşılmasını təmin edə bilər ki, bu da etibarlı və etibarsız tapşırıqların eyni SMT (Hyper Threading) ipində işləməsinin qarşısını almaqla bəzi Spectre hücumlarının qarşısını almaq üçün istifadə edilə bilər. ;
    • cgroup mexanizmi üçün cgroup.kill virtual faylına “1” yazaraq qrupla əlaqəli bütün prosesləri bir anda öldürməyə (SIGKILL göndər) imkan verən öldürmə əməliyyatı üçün dəstək həyata keçirilib;
    • Atom təlimatını yerinə yetirərkən məlumatların iki CPU keş xəttini keçməsi səbəbindən yaddaşda uyğunlaşdırılmamış məlumatlara daxil olduqda baş verən bölünmüş kilidlərin ("parçalanmış kilidlər") aşkarlanmasına cavab verməklə bağlı genişləndirilmiş imkanlar. Bu cür bloklama performansın əhəmiyyətli dərəcədə azalmasına səbəb olur, buna görə də əvvəllər bloklamaya səbəb olan tətbiqi zorla dayandırmaq mümkün idi. Yeni buraxılış, “split_lock_detect=ratelimit:N” kernel əmr satırı parametrini əlavə edir ki, bu da sizə saniyədə kilidləmə əməliyyatlarının sürətinə sistem miqyasında limit təyin etməyə imkan verir, bundan sonra split kilidin mənbəyinə çevrilən istənilən proses dayandırmaq əvəzinə 20 ms dayanmağa məcbur olmaq;
    • Hər bir qrupa nə qədər prosessor vaxtının ayrıla biləcəyini təyin edən CFS (CFS bandwidth controller) qrup bant genişliyi nəzarətçisi, gecikməyə həssas yükləri daha yaxşı tənzimləməyə imkan verən müəyyən bir fəaliyyət müddəti ilə məhdudlaşan məhdudiyyətləri müəyyən etmək qabiliyyətinə malikdir. Məsələn, cpu.cfs_quota_us-un 50000-ə və cpu.cfs_period_us-un 100000-a təyin edilməsi bir qrup prosesə hər 100ms-də 50ms CPU vaxtını sərf etməyə imkan verəcək;
    • əlavə etdi BPF proqram yükləyicilərinin yaradılması üçün ilkin infrastruktur, bundan sonra yalnız etibarlı rəqəmsal açarla imzalanmış BPF proqramlarının yüklənməsinə imkan verəcək;
    • sistemin yuxu rejimində sərf etdiyi vaxtı nəzərə alan zaman aşımını hesablamaq üçün monoton taymerdən istifadə edən yeni futex əməliyyatı FUTEX_LOCK_PI2 əlavə etdi;
    • RISC-V arxitekturası üçün böyük yaddaş səhifələrinə dəstək (Şəffaf Böyük Səhifələr) və istifadə etmək imkanı KFENCE yaddaşla işləyərkən səhvləri müəyyən etmək;
    • proses yaddaşının idarə edilməsini optimallaşdırmaq üçün bir vasitə təmin edən madvise() sistem çağırışına, əlavə etdi MADV_POPULATE_READ və MADV_POPULATE_WRITE faktiki oxumaq və ya yazmaq (əvvəlcədən) yerinə yetirmədən oxumaq və ya yazma əməliyyatları üçün xəritələnmiş bütün yaddaş səhifələrində "səhifə xətası" yaratmaq üçün bayraqlar. Bayraqların istifadəsi proqramın icrasında gecikmələrin azaldılması üçün faydalı ola bilər, buna görə də bütün bölüşdürülməmiş səhifələr üçün “səhifə xətası” işləyicisinin birdən-birə, onlara faktiki girişi gözləmədən aktiv icrası sayəsində;
    • vahid sınaq sistemində günüt əlavə etdi QEMU mühitində testlərin aparılmasına dəstək;
    • yeni izləyicilər əlavə edildi: "osnoise" kəsilmələrin idarə edilməsi nəticəsində yaranan tətbiq gecikmələrini izləmək üçün və "taymerlat" taymer siqnalından oyanarkən gecikmələr haqqında ətraflı məlumatı göstərmək üçün;
  • virtuallaşdırma və təhlükəsizlik:
    • əlavə etdi sistem çağırışı memfd_secret(), təcrid olunmuş ünvan məkanında yalnız sahib prosesinə görünən, digər proseslərdə əks olunmayan və nüvəyə birbaşa daxil olmayan şəxsi yaddaş sahəsi yaratmağa imkan verən;
    • seccomp sisteminin zəng filtrləmə sistemində, kilid işləyicilərini istifadəçi sahəsinə köçürərkən, təcrid olunmuş tapşırıq üçün fayl deskriptoru yaratmaq və sistem çağırışını emal edərkən onu geri qaytarmaq üçün bir atom əməliyyatından istifadə etmək mümkündür. Təklif olunan əməliyyat həll edir problem siqnal gəldikdə istifadəçi məkanında işləyicinin kəsilməsi ilə;
    • əlavə etdi yeni mexanizm fərdi rlimit sayğaclarını "istifadəçi ad məkanında" istifadəçiyə bağlayan istifadəçi ID ad məkanında resursun məhdudlaşdırılmasını idarə etmək. Dəyişiklik bir istifadəçi müxtəlif konteynerlərdə prosesləri idarə edərkən ümumi resurs sayğaclarının istifadəsi ilə bağlı problemi həll edir;
    • ARM64 sistemləri üçün KVM hipervizoru qonaq sistemlərində MTE (MemTag, Memory Tagging Extension) genişlənməsindən istifadə etmək imkanı əlavə etdi ki, bu da hər bir yaddaş ayırma əməliyyatına teqləri bağlamağa və istismarın qarşısını almaq üçün göstəricilərin düzgün istifadəsini yoxlamağı təşkil etməyə imkan verir. artıq boşaldılmış yaddaş bloklarına, daşqın buferlərinə, işə salınmadan əvvəl girişlərə və cari kontekstdən kənar istifadəyə daxil olmaq nəticəsində yaranan zəifliklər;
    • ARM64 platforması tərəfindən təmin edilən Pointer Authentication indi nüvə və istifadəçi sahəsi üçün ayrıca konfiqurasiya edilə bilər. Texnologiya, göstəricinin özünün istifadə olunmamış yuxarı bitlərində saxlanılan rəqəmsal imzalardan istifadə edərək, qayıdış ünvanlarını yoxlamaq üçün xüsusi ARM64 təlimatlarından istifadə etməyə imkan verir;
    • istifadəçi rejimində Linux əlavə etdi PCI-over-virtio sürücüsü tərəfindən həyata keçirilən virtual PCI avtobusu ilə PCI cihazları üçün sürücülərin istifadəsinə dəstək;
    • x86 sistemləri üçün virtio-iommu paravirtuallaşdırılmış cihaz üçün əlavə dəstək, yaddaş səhifə cədvəllərini təqlid etmədən virtio nəqli üzərində ATTACH, DETACH, MAP və UNMAP kimi IOMMU sorğularını göndərməyə imkan verir;
    • Skylake ailəsindən Coffee Lake-ə qədər Intel CPU-ları üçün lazımsız sinxronizasiya əməliyyatlarını dinamik şəkildə aradan qaldırmaqla çox yivli proqramların işini yaxşılaşdırmaq üçün alətlər təqdim edən Intel TSX (Transactional Synchronization Extensions) istifadəsi standart olaraq qeyri-aktivdir. Hücum ehtimalı səbəbindən genişləndirmələr qeyri-aktivdir Zombieload, əməliyyatların asinxron kəsilməsi mexanizminin (TAA, TSX Asynchronous Abort) işləməsi zamanı baş verən üçüncü tərəf kanalları vasitəsilə məlumat sızmasının manipulyasiyası;
  • şəbəkə alt sistemi:
    • müxtəlif IP ünvanları ilə əlaqəli müxtəlif şəbəkə interfeysləri vasitəsilə bir neçə marşrut üzrə eyni vaxtda paketlərin çatdırılması ilə TCP bağlantısının işini təşkil etmək üçün TCP protokolunun uzantısı olan MPTCP (MultiPath TCP) nüvəsinə inteqrasiyanın davamı. Yeni buraxılışda əlavə etdi IPv4 və IPv6 (çox yollu hash siyasəti) üçün öz trafik hashing siyasətlərinizi təyin etmək mexanizmi, istifadəçi məkanından paketlərdə hansı sahələrin, o cümlədən kapsullaşdırılanların, yolun seçimini təyin edən hashın hesablanması zamanı istifadə ediləcəyini müəyyən etməyə imkan verir. paket üçün;
    • virtual nəqliyyat virtiosuna rozetka dəstəyi əlavə edildi SOCK_SEQPACKET (dataqramların nizamlı və etibarlı ötürülməsi);
    • SO_REUSEPORT yuva mexanizminin imkanları genişləndirilmişdir ki, bu da bir neçə dinləmə rozetkasının SO_REUSEPORT vasitəsilə qoşulmuş bütün rozetkalar üzrə eyni vaxtda daxil olan sorğuların paylanması ilə əlaqəni qəbul etmək üçün bir porta bir anda qoşulmağa imkan verir ki, bu da çox yivli server proqramlarının yaradılmasını asanlaşdırır. . Yeni versiyada əlavə etdi ilkin seçilmiş rozetka tərəfindən sorğunun işlənməsi zamanı nasazlıq halında idarəetməni başqa rozetkaya ötürmək üçün vasitələr (xidmətlərin yenidən işə salınması zamanı fərdi əlaqələrin itirilməsi ilə bağlı problemi həll edir);
  • avadanlıq:
    • amdgpu sürücüsündə həyata keçirilən “Beige Goby” (Navi 6000) və “Yellow Carp” kod adlı yeni AMD Radeon RX 24 seriyalı qrafik prosessorlarına dəstək, həmçinin Aldebaran GPU (gfx90a) və Van Qoq APU üçün təkmilləşdirilmiş dəstək. Bir neçə eDP paneli ilə eyni vaxtda işləmək imkanı əlavə edildi. APU Renoir üçün video yaddaşda (TMZ, Etibarlı Yaddaş Zonası) şifrələnmiş buferlərlə işləmək üçün dəstək həyata keçirilib. Qrafik kartları isti rejimdə çıxarmaq üçün əlavə dəstək. Radeon RX 6000 (Navi 2x) GPU-ları və köhnə AMD GPU-ları üçün əvvəllər yalnız Navi 1x, Vega və Polaris GPU-ları üçün aktiv edilmiş ASPM (Aktiv Dövlət Güc İdarəetmə) enerjiyə qənaət mexanizminin dəstəyi defolt olaraq aktivdir;
    • AMD çipləri üçün HMM (Heterojen yaddaşın idarə edilməsi) alt sistemi əsasında paylaşılan virtual yaddaşa (SVM, paylaşılan virtual yaddaş) dəstək əlavə edilmişdir ki, bu da öz yaddaş idarəetmə vahidləri (MMU, yaddaş idarəetmə vahidi) ilə cihazların istifadəsinə imkan verir, əsas yaddaşa daxil ola bilər. HMM-dən istifadə etməklə, GPU və CPU arasında paylaşılan ünvan sahəsi təşkil edə bilərsiniz, burada GPU prosesin əsas yaddaşına daxil ola bilər;
    • ilkin texnologiya dəstəyi əlavə etdi AMD Smart Shift, çipset və AMD qrafik kartı olan noutbuklarda CPU və GPU-nun enerji sərfiyyatı parametrlərini dinamik şəkildə dəyişdirərək, oyun oynayarkən, video redaktə edərkən və 3D göstərərkən performansı artırır;
    • Intel video kartları üçün i915 sürücüsündə daxildir Intel Alderlake P çiplərinə dəstək;
    • Hyper-V virtual qrafik adapteri üçün əlavə drm/hyperv sürücüsü;
    • əlavə etdi çıxış üçün UEFI proqram təminatı və ya BIOS tərəfindən təmin edilən EFI-GOP və ya VESA çərçivə buferindən istifadə edən simpledrm qrafik drayveri. Sürücünün əsas məqsədi tam DRM sürücüsündən istifadə edilməzdən əvvəl yükləmənin ilkin mərhələlərində qrafik çıxış imkanlarını təmin etməkdir. Sürücü həm də hələ yerli DRM drayverləri olmayan avadanlıqlar üçün müvəqqəti həll yolu kimi istifadə edilə bilər;
    • əlavə etdi hamısı bir yerdə kompüter dəstəyi Raspberry Pi 400;
    • Dell noutbuklarına daxil olan kamera və mikrofon aparat açarlarını dəstəkləmək üçün əlavə dell-wmi-məxfilik sürücüsü;
    • Lenovo noutbukları üçün əlavə etdi sysfs /sys/class/firmware-attributes/ vasitəsilə BIOS parametrlərini dəyişdirmək üçün WMI interfeysi;
    • genişlənmişdir USB4 interfeysi olan cihazlar üçün dəstək;
    • əlavə etdi səs kartları və AmLogic SM1 TOACODEC, Intel AlderLake-M, NXP i.MX8, NXP TFA1, TDF9897, Rockchip RK817, Qualcomm Quinary MI2 və Texas Instruments TAS2505 üçün dəstək. HP və ASUS noutbuklarında təkmilləşdirilmiş audio dəstəyi. Əlavə edilib USB interfeysi olan cihazlarda audio çalmağa başlamazdan əvvəl gecikmələri azaltmaq üçün yamaqlar.

Mənbə – opennet.ru.

Mənbə: linux.org.ru