Linux цөм 5.14

Linux цөм 5.14

Хоёр сарын хөгжлийн дараа Линус Торвалдс танилцуулав цөмийн хувилбар Линуксийн 5.14. Хамгийн онцлох өөрчлөлтүүдийн дунд: quotactl_fd() болон memfd_secret() системийн шинэ дуудлага, ide болон түүхий драйверуудыг устгах, бүлгийн шинэ I/O тэргүүлэх хянагч, SCHED_CORE ажлын хуваарь гаргах горим, баталгаажуулсан BPF програм ачаалагч үүсгэх дэд бүтэц.

Шинэ хувилбарт 15883 хөгжүүлэгчийн 2002 засвар орсон, засварын хэмжээ 69 МБ (өөрчлөлтөд 12580 файл нөлөөлж, 861501 мөр код нэмэгдсэн, 321654 мөр устгагдсан). 47-т оруулсан бүх өөрчлөлтийн 5.14 орчим хувь нь төхөөрөмжийн драйверуудтай холбоотой, өөрчлөлтийн 14 орчим хувь нь техник хангамжийн архитектурт хамаарах кодыг шинэчлэхтэй холбоотой, 13 хувь нь сүлжээний стектэй, 3 хувь нь файлын системтэй, 3 хувь нь холбоотой байна. дотоод цөмийн дэд системүүдтэй холбоотой.

Үндсэн инноваци:

  • дискний дэд систем, оролт/гаралт, файлын системүүд:
    • бүлгийн хувьд хэрэгжүүлсэн шинэ оролт/гаралтын тэргүүлэх хянагч - rq-qos нь бүлэг тус бүрийн гишүүдийн үүсгэсэн төхөөрөмжүүдийг блоклох хүсэлтийг боловсруулахад тэргүүлэх ач холбогдол өгөх боломжтой. mq-deadline I/O хуваарьт шинэ тэргүүлэх удирдлагын дэмжлэг нэмэгдсэн;
    • ext4 файлын систем дээр хэрэгжүүлсэн new ioctl тушаал EXT4_IOC_CHECKPOINT бөгөөд энэ нь бүртгэл болон холбогдох буферээс хүлээгдэж буй бүх гүйлгээг диск рүү албадахаас гадна бүртгэлийн хадгалах сангийн ашиглаж буй хэсгийг дарж бичдэг. Энэхүү өөрчлөлтийг файлын системээс мэдээлэл алдагдахаас урьдчилан сэргийлэх санаачилгын хүрээнд бэлтгэсэн;
    • Btrfs-д танилцуулсан Гүйцэтгэлийн оновчлол: Fsync-ийн гүйцэтгэлийн явцад өргөтгөсөн шинж чанаруудын шаардлагагүй бүртгэлийг арилгаснаар өргөтгөсөн шинж чанаруудтай эрчимтэй үйлдлийн гүйцэтгэл 17% хүртэл нэмэгдсэн. Нэмж дурдахад, хязгаарт нөлөөлөхгүй засах үйлдлийг гүйцэтгэх үед бүрэн синхрончлол идэвхгүй болсон бөгөөд энэ нь ажиллах хугацааг 12% -иар бууруулдаг. FS-г шалгах үед I/O зурвасын өргөнийг хязгаарлах тохиргоог sysfs-д нэмсэн. Төхөөрөмжийн хэмжээг өөрчлөх, устгах үйлдлийг цуцлах ioctl дуудлага нэмсэн;
    • XFS дээр дахин боловсруулсан Багц горимд санах ойн хуудсуудыг хуваарилахад шилжсэн буфер кэшийг хэрэгжүүлэх. кэшийн үр ашиг сайжирсан;
    • F2FS нь зөвхөн унших горимд ажиллах сонголтыг нэмж, санамсаргүй унших ажиллагааг сайжруулахын тулд шахсан блок кэш горимыг (compress_cache) хэрэгжүүлсэн. mmap() үйлдлийг ашиглан санах ойд буулгасан файлуудыг шахах дэмжлэгийг хэрэгжүүлсэн. Файлын шахалтыг маскаар сонгон идэвхгүй болгохын тулд nocompress холбох шинэ сонголтыг санал болгосон;
    • exFAT драйвер дээр зарим дижитал камерыг хадгалахад нийцтэй байдлыг сайжруулах ажил хийгдсэн;
    • системийн дуудлага нэмсэн quotactl_fd(), энэ нь тусгай төхөөрөмжийн файлаар биш харин квот хэрэглэж буй файлын системтэй холбоотой файлын тодорхойлогчийг зааж өгөх замаар квотыг удирдах боломжийг олгодог;
    • IDE интерфэйстэй блок төхөөрөмжүүдийн хуучин драйверуудыг цөмөөс устгасан бөгөөд тэдгээрийг libata дэд системээр сольсон. Хуучин төхөөрөмжүүдийн дэмжлэгийг бүрэн хэмжээгээр хадгалсан бөгөөд өөрчлөлтүүд нь зөвхөн хуучин драйверуудыг ашиглах чадвартай холбоотой бөгөөд ашиглах үед хөтчүүдийг /dev/hd* гэж нэрлэдэг байсан ба /dev/sd* биш;
    • "Түүхий" драйверийг цөмөөс устгасан бөгөөд энэ нь /dev/raw интерфейсээр дамжуулан блоклох төхөөрөмжүүдэд буфергүй нэвтрэх боломжийг олгодог. Энэ функц нь O_DIRECT тугийг ашигладаг программуудад эртнээс хэрэгжиж ирсэн;
  • санах ой болон системийн үйлчилгээ:
    • Даалгаврын хуваарьт шинэ хуваарийн горим хэрэгжсэн SCHED_CORE, энэ нь CPU-ийн нэг цөм дээр аль процессууд хамт ажиллаж болохыг хянах боломжийг олгодог. Процесс бүрд процессуудын хоорондын итгэлцлийн хүрээг тодорхойлдог күүки танигчийг оноож болно (жишээлбэл, нэг хэрэглэгч эсвэл контейнерт хамаарах). Кодын гүйцэтгэлийг зохион байгуулахдаа хуваарь гаргагч нь нэг CPU цөмийг зөвхөн ижил эзэмшигчтэй холбоотой процессуудын дунд хуваалцахыг баталгаажуулах боломжтой бөгөөд үүнийг ижил SMT (Hyper Threading) урсгал дээр найдвартай болон найдваргүй ажлуудыг ажиллуулахаас сэргийлж зарим Specter халдлагыг хаахад ашиглаж болно. ;
    • cgroup.kill виртуал файлд "1" гэж бичээд бүлэгтэй холбоотой бүх процессыг нэг дор устгах (SIGKILL илгээх) боломжийг олгодог устгах үйлдлийг бүлэг механизмын хувьд дэмжсэн;
    • Атомын командыг гүйцэтгэх үед өгөгдөл нь CPU-ийн кэшийн хоёр шугамыг дайран өнгөрдөг тул санах ойд жигдрээгүй өгөгдөлд хандах үед үүсдэг хуваагдсан түгжээг ("хуваах түгжээ") илрүүлэхэд хариу үйлдэл үзүүлэхтэй холбоотой өргөтгөсөн боломжууд. Ийм хаалт нь гүйцэтгэлийн мэдэгдэхүйц бууралтад хүргэдэг тул өмнө нь блоклоход хүргэсэн програмыг хүчээр зогсоох боломжтой байсан. Шинэ хувилбар нь цөмийн командын мөрийн параметрийг нэмсэн "split_lock_detect=ratelimit:N" нь секундэд түгжих үйлдлүүдийн хурдыг системийн хэмжээнд хязгаарлах боломжийг олгодог бөгөөд энэ хэмжээнээс хэтэрсэний дараа хагалах түгжээний эх үүсвэр болсон аливаа процесс нь дараах болно. дуусгахын оронд 20 мс-ийн турш зогсоохыг албадах;
    • Cgroup bandwidth controller CFS (CFS bandwidth controller) нь бүлэг тус бүрт процессорын цагийг хэр их хуваарилж болохыг тодорхойлдог бөгөөд энэ нь үйл ажиллагааны өгөгдсөн хугацаанд хязгаарлагдах хязгаарыг тодорхойлох чадвартай бөгөөд энэ нь хоцролтод мэдрэмтгий ачааллыг илүү сайн зохицуулах боломжийг олгодог. Жишээлбэл, cpu.cfs_quota_us-г 50000, cpu.cfs_period_us-ийг 100000 болгож тохируулах нь 100 мс тутамд 50 мс CPU-ийн цагийг дэмий үрэх боломжийг бүлэг процессуудад олгоно;
    • нэмсэн BPF програм ачаалагчийг бий болгох анхны дэд бүтэц, энэ нь зөвхөн найдвартай дижитал түлхүүрээр гарын үсэг зурсан BPF програмуудыг татаж авах боломжийг олгоно;
    • FUTEX_LOCK_PI2 шинэ футекс үйлдлийг нэмсэн бөгөөд энэ нь зогсолтыг тооцоолоход монотон таймер ашигладаг бөгөөд энэ нь системээс унтах горимд зарцуулсан хугацааг харгалзан үздэг;
    • RISC-V архитектурын хувьд том санах ойн хуудсуудыг дэмжих (Transparent Huge-Pages) болон KFENCE санах ойтой ажиллахад гарсан алдааг тодорхойлох;
    • процессын санах ойн менежментийг оновчтой болгох арга хэрэгсэл болох madvise() системийн дуудлага руу, нэмсэн MADV_POPULATE_READ болон MADV_POPULATE_WRITE нь унших, бичих үйлдэл хийхгүйгээр (урьдчилсан тохиргоо) унших, бичих үйлдлээр зураглагдсан бүх санах ойн хуудсан дээр "хуудасны алдаа" үүсгэхийн тулд дарцагладаг. Тугуудыг ашиглах нь бүх хуваарилагдаагүй хуудсуудад "хуудасны алдаа" зохицуулагчийг идэвхтэй гүйцэтгэсний ачаар програмын гүйцэтгэлийн саатлыг бууруулахад тустай байж болох бөгөөд тэдгээрт бодит нэвтрэхийг хүлээлгүйгээр;
    • нэгжийн туршилтын системд өдөр нэмсэн QEMU орчинд туршилт явуулахад дэмжлэг үзүүлэх;
    • шинэ мөрүүд нэмэгдсэн: "дуу чимээ" тасалдалтай харьцсанаас үүссэн програмын саатлыг хянах, " timerlat " нь таймерын дохионоос сэрэх үед саатлын талаарх дэлгэрэнгүй мэдээллийг харуулах;
  • виртуалчлал ба аюулгүй байдал:
    • нэмсэн системийн дуудлага memfd_secret(), энэ нь тусгаарлагдсан хаягийн орон зайд зөвхөн эзэмшигчийн процесст харагдахуйц, бусад процессуудад тусгагдаагүй, цөмд шууд нэвтрэх боломжгүй хувийн санах ойн талбар үүсгэх боломжийг олгодог;
    • seccomp системийн дуудлагын шүүлтүүрийн системд түгжээ зохицуулагчийг хэрэглэгчийн орон зайд шилжүүлэх үед нэг атомын үйлдлийг ашиглан тусгаарлагдсан даалгаварт файлын тодорхойлогч үүсгэж, системийн дуудлагыг боловсруулахдаа буцааж өгөх боломжтой. Санал болгож буй үйл ажиллагаа нь шийддэг асуудал дохио ирэх үед хэрэглэгчийн орон зайд зохицуулагчийн тасалдал;
    • нэмсэн шинэ механизм "хэрэглэгчийн нэрийн орон зай" дахь хэрэглэгчтэй хувь хүний ​​rlimit тоолуурыг холбодог хэрэглэгчийн ID нэрийн талбар дахь нөөцийн хязгаарлалтыг удирдах. Өөрчлөлт нь нэг хэрэглэгч өөр өөр контейнерт процессуудыг ажиллуулах үед нийтлэг нөөцийн тоолуур ашиглахтай холбоотой асуудлыг шийддэг;
    • ARM64 системд зориулсан KVM гипервизор нь MTE (MemTag, Memory Tagging Extension) өргөтгөлийг зочны системд ашиглах боломжийг нэмсэн бөгөөд энэ нь санах ойн хуваарилалтын үйлдэл бүрт хаягуудыг холбох, заагчийг зөв ашиглахыг шалгах ажлыг зохион байгуулах боломжийг олгодог. аль хэдийн суллагдсан санах ойн блокууд, халих буфер, эхлүүлэхээс өмнө хандалтууд болон одоогийн контекстээс гадуур ашиглах зэргээс үүссэн эмзэг байдал;
    • ARM64 платформоос өгсөн заагчийн баталгаажуулалтыг одоо цөм болон хэрэглэгчийн зайд тусад нь тохируулах боломжтой. Технологи нь заагчийн ашиглагдаагүй дээд битүүдэд хадгалагдсан тоон гарын үсгийг ашиглан буцах хаягийг баталгаажуулахын тулд тусгай ARM64 зааврыг ашиглах боломжийг олгодог;
    • Хэрэглэгчийн горимд Линукс нэмсэн PCI-over-virtio драйвераар хэрэгжүүлсэн виртуал PCI автобус бүхий PCI төхөөрөмжүүдийн драйверуудыг ашиглахад дэмжлэг үзүүлэх;
    • x86 системүүдийн хувьд санах ойн хуудасны хүснэгтүүдийг дуурайхгүйгээр virtio тээвэрлэлтээр ATTACH, DETACH, MAP болон UNMAP гэх мэт IOMMU хүсэлтийг илгээх боломжийг олгодог virtio-iommu паравиртуалжуулсан төхөөрөмжийн дэмжлэг нэмэгдсэн;
    • Skylake гэр бүлээс Коффи нуур хүртэлх Intel CPU-ийн хувьд шаардлагагүй синхрончлолын үйлдлүүдийг динамикаар арилгах замаар олон урсгалтай програмуудын гүйцэтгэлийг сайжруулах хэрэгслээр хангадаг Intel TSX (Transactional Synchronization Extensions)-ийн хэрэглээг анхдагч байдлаар идэвхгүй болгосон. Халдлага гарч болзошгүй тул өргөтгөлүүдийг идэвхгүй болгосон Zombieload, үйл ажиллагааны асинхрон тасалдал (TAA, TSX Asynchronous Abort) механизмыг ажиллуулах явцад үүссэн гуравдагч этгээдийн сувгуудаар дамжуулан мэдээллийн алдагдлыг зохицуулах;
  • сүлжээний дэд систем:
    • MPTCP (MultiPath TCP) цөмд үргэлжлүүлэн нэгтгэх, өөр IP хаягуудтай холбоотой өөр өөр сүлжээний интерфэйсээр хэд хэдэн маршрутын дагуу пакетуудыг нэгэн зэрэг хүргэх TCP холболтын ажиллагааг зохион байгуулах TCP протоколын өргөтгөл. Шинэ дугаарт нэмсэн IPv4 болон IPv6 (олон замт хэш бодлого)-д зориулсан өөрийн траффик хэшлэх бодлогыг тохируулах механизм бөгөөд энэ нь замын сонголтыг тодорхойлдог хэшийг тооцоолохдоо багцын аль талбар, түүний дотор капсуллагдсан талбаруудыг ашиглахыг хэрэглэгчийн орон зайнаас тодорхойлох боломжийг олгодог. багцын хувьд;
    • виртуал тээврийн виртиод залгуурын дэмжлэг нэмэгдсэн SOCK_SEQPACKET (датаграммыг эмх цэгцтэй, найдвартай дамжуулах);
    • SO_REUSEPORT залгуурын механизмын чадавхийг өргөжүүлсэн бөгөөд энэ нь хэд хэдэн сонсох залгуурыг нэг порт руу нэг дор холбож, SO_REUSEPORT-оор холбогдсон бүх залгуурууд дээр нэгэн зэрэг ирж буй хүсэлтийг түгээх холболтыг хүлээн авах боломжийг олгодог бөгөөд энэ нь олон урсгалтай серверийн програмуудыг үүсгэхэд хялбар болгодог. . Шинэ хувилбарт нэмсэн анх сонгосон залгуураар хүсэлтийг боловсруулахад бүтэлгүйтсэн тохиолдолд удирдлагыг өөр залгуур руу шилжүүлэх хэрэгсэл (үйлчилгээг дахин эхлүүлэх үед бие даасан холболт алдагдах асуудлыг шийддэг);
  • тоног төхөөрөмж:
    • amdgpu драйвер дээр хэрэгжүүлсэн "Шаргал Гоби" (Navi 6000) болон "Шар шар загас" гэсэн кодтой шинэ AMD Radeon RX 24 цуврал GPU-г дэмжихээс гадна Aldebaran GPU (gfx90a) болон Ван Гог APU-д зориулсан сайжруулсан дэмжлэг. Хэд хэдэн eDP самбартай нэгэн зэрэг ажиллах чадварыг нэмсэн. APU Renoir-ийн хувьд видео санах ойд (TMZ, Trusted Memory Zone) шифрлэгдсэн буфертэй ажиллахад дэмжлэг үзүүлсэн. График картыг халуунаар нь салгахад зориулсан дэмжлэг нэмэгдсэн. Radeon RX 6000 (Navi 2x) GPU болон хуучин AMD GPU-ийн хувьд ASPM (Идэвхтэй Төрийн Эрчим Хүчний Удирдлага) эрчим хүч хэмнэх механизмын дэмжлэг нь анхдагчаар идэвхжсэн бөгөөд өмнө нь зөвхөн Navi 1x, Vega болон Polaris GPU-д идэвхжсэн;
    • AMD чипүүдийн хувьд өөрийн санах ойн удирдлагын нэгж (MMU, санах ойн удирдлагын нэгж) бүхий төхөөрөмжүүдийг ашиглах боломжийг олгодог HMM (гетероген санах ойн менежмент) дэд систем дээр үндэслэн хуваалцсан виртуал санах ойн (SVM, хуваалцсан виртуал санах ой) дэмжлэгийг нэмсэн. үндсэн санах ойд хандах боломжтой. HMM-ийг ашиглахын зэрэгцээ та GPU болон CPU-ийн хооронд хуваалцсан хаягийн зайг зохион байгуулж, GPU нь процессын үндсэн санах ойд хандах боломжтой;
    • анхны технологийн дэмжлэг нэмсэн AMD Smart Shift, чипсет болон AMD график карт бүхий зөөврийн компьютер дээрх CPU болон GPU-ийн эрчим хүчний хэрэглээний параметрүүдийг динамикаар өөрчилдөг бөгөөд тоглоом тоглох, видео засварлах, 3D дүрслэх үед гүйцэтгэлийг нэмэгдүүлэх;
    • Intel видео картуудад зориулсан i915 драйвер дээр орсон Intel Alderlake P чипийг дэмжих;
    • Hyper-V виртуал график адаптерт зориулсан drm/hyperv драйверийг нэмсэн;
    • нэмсэн UEFI программ хангамж эсвэл BIOS-оос гаргаж авсан EFI-GOP эсвэл VESA фреймбуферийг гаралтад ашигладаг simpledrm график драйвер. Драйверын гол зорилго нь бүрэн DRM драйверийг ашиглахаас өмнө ачаалах эхний үе шатанд график гаралтын чадварыг хангах явдал юм. Драйверийг эх DRM драйвергүй байгаа тоног төхөөрөмжийн түр зуурын шийдэл болгон ашиглаж болно;
    • нэмсэн бүгдийг нэг дор компьютерийн дэмжлэг Raspberry Pi 400;
    • Dell зөөврийн компьютерт багтсан камер болон микрофоны тоног төхөөрөмжийн унтраалгыг дэмжих dell-wmi-нууцлалын драйверийг нэмсэн;
    • Lenovo зөөврийн компьютерт зориулагдсан нэмсэн sysfs /sys/class/firmware-attributes/-ээр дамжуулан BIOS-ийн параметрүүдийг өөрчлөх WMI интерфейс;
    • өргөтгөсөн USB4 интерфейстэй төхөөрөмжүүдийн дэмжлэг;
    • нэмсэн дууны карт болон кодлогч AmLogic SM1 TOACODEC, Intel AlderLake-M, NXP i.MX8, NXP TFA1, TDF9897, Rockchip RK817, Qualcomm Quinary MI2 болон Texas Instruments TAS2505-ийн дэмжлэг. HP болон ASUS зөөврийн компьютер дээрх дууны дэмжлэгийг сайжруулсан. Нэмсэн USB интерфэйстэй төхөөрөмжүүд дээр аудио тоглуулж эхлэхээс өмнө саатлыг багасгах засварууд.

Эх сурвалж - opennet.ru.

Эх сурвалж: linux.org.ru