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 хувь нь холбоотой байна. дотоод цөмийн дэд системүүдтэй холбоотой.

Гол инноваци:

  • Дискний дэд систем, I/O болон файлын системүүд
    • Бүлэг бүрийн гишүүдийн үүсгэсэн төхөөрөмжүүдийг блоклох хүсэлтийг боловсруулах тэргүүлэх чиглэлийг хянах боломжтой rq-qos гэсэн шинэ оролт/гаралтын эрэмбэлэх хянагч хэрэгжсэн. mq-deadline I/O хуваарьт шинэ тэргүүлэх удирдлагын дэмжлэг нэмэгдэв.
    • Ext4 файлын систем нь журналаас хүлээгдэж буй бүх гүйлгээ болон тэдгээртэй холбоотой буферуудыг диск рүү зайлуулахыг шаарддаг EXT4_IOC_CHECKPOINT гэсэн шинэ ioctl командыг хэрэгжүүлдэг ба журналын хадгалалтанд ашигласан хэсгийг дарж бичдэг. Энэхүү өөрчлөлтийг файлын системээс мэдээлэл алдагдахаас урьдчилан сэргийлэх санаачилгын хүрээнд бэлтгэсэн.
    • Btrfs-д гүйцэтгэлийн оновчлол хийгдсэн: fsync гүйцэтгэх явцад өргөтгөсөн шинж чанаруудын шаардлагагүй бүртгэлийг арилгаснаар өргөтгөсөн шинж чанаруудтай эрчимтэй үйлдлийн гүйцэтгэл 17% хүртэл нэмэгдсэн. Нэмж дурдахад, хязгаарт нөлөөлөхгүй засах үйлдлийг гүйцэтгэх үед бүрэн синхрончлол идэвхгүй болсон бөгөөд энэ нь ажиллах хугацааг 12% -иар бууруулдаг. FS-г шалгах үед I/O зурвасын өргөнийг хязгаарлах тохиргоог sysfs-д нэмсэн. Төхөөрөмжийн хэмжээг өөрчлөх, устгах үйлдлийг цуцлах ioctl дуудлага нэмсэн.
    • XFS-д буфер кэшийн хэрэгжилтийг дахин зохион бүтээсэн бөгөөд энэ нь санах ойн хуудсыг багц горимд хуваарилах горимд шилжсэн. Кэшийн үр ашиг сайжирсан.
    • F2FS нь зөвхөн унших горимд ажиллах сонголтыг нэмж, санамсаргүй унших ажиллагааг сайжруулахын тулд шахсан блок кэш горимыг (compress_cache) хэрэгжүүлдэг. mmap() үйлдлийг ашиглан санах ойд буулгасан файлуудыг шахах дэмжлэгийг хэрэгжүүлсэн. Маск дээр суурилсан файлын шахалтыг сонгон идэвхгүй болгохын тулд nocompress холбох шинэ сонголтыг санал болгосон.
    • Зарим дижитал камерын санах ойтой нийцтэй байдлыг сайжруулахын тулд exFAT драйвер дээр ажил хийгдсэн.
    • quotactl_fd() системийн дуудлагыг нэмсэн бөгөөд энэ нь тусгай төхөөрөмжийн файлаар биш харин квот хэрэглэж буй файлын системтэй холбоотой файлын тодорхойлогчийг зааж өгөх замаар квотыг удирдах боломжийг олгодог.
    • IDE интерфэйстэй блок төхөөрөмжүүдийн хуучин драйверуудыг цөмөөс устгасан бөгөөд тэдгээрийг libata дэд системээр сольсон.
    • "Түүхий" драйверийг цөмөөс устгасан бөгөөд энэ нь /dev/raw интерфэйсээр дамжуулан блоклох төхөөрөмжүүдэд буфергүй нэвтрэх боломжийг олгодог. Энэ функц нь O_DIRECT тугийг ашигладаг программуудад эртнээс хэрэгжиж ирсэн.
  • Санах ой болон системийн үйлчилгээ
    • Даалгаврын хуваарь гаргагч нь SCHED_CORE хуваарийн шинэ горимыг хэрэгжүүлдэг бөгөөд энэ нь нэг CPU-ийн цөм дээр аль процессуудыг хамтад нь гүйцэтгэж болохыг хянах боломжийг олгодог. Процесс бүрд процессуудын хоорондын итгэлцлийн хүрээг тодорхойлдог күүки танигчийг оноож болно (жишээлбэл, нэг хэрэглэгч эсвэл контейнерт хамаарах). Кодын гүйцэтгэлийг зохион байгуулахдаа хуваарь гаргагч нь нэг CPU цөмийг зөвхөн ижил эзэмшигчтэй холбоотой процессуудын дунд хуваалцахыг баталгаажуулах боломжтой бөгөөд үүнийг ижил SMT (Hyper Threading) урсгал дээр итгэмжлэгдсэн болон үл итгэсэн ажлуудыг ажиллуулахаас сэргийлж зарим Specter халдлагыг блоклоход ашиглаж болно. .
    • Cgroup-ийн хувьд kill үйлдлийн дэмжлэгийг хэрэгжүүлсэн бөгөөд энэ нь 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 тугуудыг нэмсэн. (урьдчилсан). Тугуудыг ашиглах нь "хуудасны алдаа" зохицуулагчийг бүх хуваарилагдаагүй хуудсуудад нэгэн зэрэг, бодит хандалтыг хүлээхгүйгээр идэвхтэй ажиллуулснаар програмын гүйцэтгэлийн саатлыг багасгахад тустай.
    • Kunit нэгжийн туршилтын систем нь QEMU орчинд туршилт явуулахад дэмжлэг нэмсэн.
    • Тасалдалтай харьцсанаас үүссэн програмын саатлыг хянах "osnoise" болон таймерын дохионоос сэрэх үед саатлын талаарх дэлгэрэнгүй мэдээллийг харуулах "timerlat" гэсэн шинэ мөрүүд нэмэгдсэн.
  • Виртуалчлал ба аюулгүй байдал
    • memfd_secret() системийн дуудлагыг тусгаарлагдсан хаягийн орон зайд зөвхөн эзэмшдэг процесст харагдахуйц, бусад процессуудад тусгагдаагүй, цөмд шууд хандах боломжгүй хувийн санах ойн талбар үүсгэх зорилгоор нэмсэн.
    • Seccomp системийн дуудлагын шүүлтүүрийн системд блоклох зохицуулагчийг хэрэглэгчийн орон зайд шилжүүлэхдээ нэг атомын үйлдлийг ашиглан тусгаарлагдсан даалгаварт файлын тодорхойлогч үүсгэж, системийн дуудлагыг боловсруулахдаа буцааж өгөх боломжтой. Санал болгож буй үйлдэл нь дохио ирэх үед хэрэглэгчийн орон зайд зохицуулагчийг тасалдуулах асуудлыг шийддэг.
    • Хэрэглэгчийн ID нэрийн талбар дахь нөөцийн хязгаарыг удирдах шинэ механизм нэмэгдсэн бөгөөд энэ нь "хэрэглэгчийн нэрийн орон зай" дахь хэрэглэгчтэй бие даасан rlimit тоолуурыг холбодог. Өөрчлөлт нь нэг хэрэглэгч өөр өөр контейнерт процессуудыг ажиллуулах үед нийтлэг нөөцийн тоолуур ашиглах асуудлыг шийддэг.
    • ARM64 системд зориулсан KVM гипервизор нь MTE (MemTag, Memory Tagging Extension) өргөтгөлийг зочны системд ашиглах боломжийг нэмсэн бөгөөд энэ нь санах ойн хуваарилалтын үйлдэл бүрт хаягуудыг холбох, заагчийг зөв ашиглахыг шалгах ажлыг зохион байгуулах боломжийг олгодог. аль хэдийн суллагдсан санах ойн блокууд, халих буфер, эхлүүлэхийн өмнөх хандалтууд болон одоогийн контекстээс гадуур ашиглах зэргээс үүссэн эмзэг байдал.
    • ARM64 платформын Заагч баталгаажуулалтын хэрэгслийг цөм болон хэрэглэгчийн орон зайд тусад нь тохируулах боломжтой. Энэхүү технологи нь заагчийн өөрөө ашиглагдаагүй дээд битүүдэд хадгалагдсан тоон гарын үсгийг ашиглан буцах хаягийг баталгаажуулахын тулд тусгай ARM64 зааврыг ашиглах боломжийг олгодог.
    • Хэрэглэгчийн горимын Линукс нь PCI-over-virtio драйвераар хэрэгжүүлсэн виртуал PCI автобус бүхий PCI төхөөрөмжүүдийн драйверуудыг ашиглах дэмжлэгийг нэмсэн.
    • X86 системүүдийн хувьд virtio-iommu паравиртуалжуулсан төхөөрөмжийн дэмжлэгийг нэмснээр ATTACH, DETACH, MAP болон UNMAP зэрэг IOMMU хүсэлтийг санах ойн хуудасны хүснэгтүүдийг дуурайхгүйгээр virtio тээвэрлэлтээр илгээх боломжийг олгосон.
    • Skylake-ийн гэр бүлээс Кофе нуур хүртэлх Intel CPU-ийн хувьд шаардлагагүй синхрончлолын үйлдлүүдийг динамикаар арилгах замаар олон урсгалтай програмуудын гүйцэтгэлийг сайжруулах хэрэгслээр хангадаг Intel TSX (Transactional Synchronization Extensions)-ийн хэрэглээг анхдагч байдлаар идэвхгүй болгосон. TAA (TSX Asynchronous Abort) механизмыг ажиллуулах явцад үүссэн гуравдагч талын сувгуудаар дамжуулан мэдээлэл алдагдах үед Zombieload халдлага гарч болзошгүй тул өргөтгөлүүдийг идэвхгүй болгосон.
  • Сүлжээний дэд систем
    • MPTCP (MultiPath TCP) цөмд нэгтгэх нь өөр IP хаягуудтай холбоотой өөр өөр сүлжээний интерфэйсээр хэд хэдэн маршрутын дагуу пакетуудыг нэгэн зэрэг хүргэх TCP холболтын ажиллагааг зохион байгуулах TCP протоколын өргөтгөл юм. Шинэ хувилбар нь IPv4 ба IPv6 (олон замт хэш бодлого)-д зориулсан өөрийн траффик хэшлэх бодлогыг тохируулах механизмыг нэмсэн бөгөөд энэ нь хэрэглэгчийн орон зайнаас багцын аль талбар, түүний дотор капсуллагдсан талбаруудыг тодорхойлох хэшийг тооцоолоход ашиглах боломжийг олгодог. багцын замыг сонгох.
    • SOCK_SEQPACKET залгууруудын дэмжлэг (датаграммуудын захиалгат, найдвартай дамжуулалт) virtio виртуал тээвэрлэлтэд нэмэгдсэн.
    • SO_REUSEPORT залгуурын механизмын чадавхийг өргөжүүлсэн бөгөөд энэ нь хэд хэдэн сонсох залгуурыг нэг порт руу нэг дор холбож, SO_REUSEPORT-оор холбогдсон бүх залгуурууд дээр нэгэн зэрэг ирж буй хүсэлтийг түгээх холболтыг хүлээн авах боломжийг олгодог бөгөөд энэ нь олон урсгалтай серверийн програмуудыг үүсгэхэд хялбар болгодог. . Шинэ хувилбар нь анх сонгосон залгуурын хүсэлтийг боловсруулахад бүтэлгүйтсэн тохиолдолд удирдлагыг өөр залгуур руу шилжүүлэх хэрэгслүүдийг нэмж оруулсан болно (үйлчилгээг дахин эхлүүлэх үед бие даасан холболтууд алдагдах асуудлыг шийддэг).
  • Тоног төхөөрөмж
    • Amdgpu драйвер нь "Beige Goby" (Navi 6000) болон "Yellow Carp" гэсэн кодтой шинэ 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 нь процессын үндсэн санах ойд хандах боломжтой.
    • Тоглоом тоглох, видео засварлах, 3D дүрслэх зэрэг гүйцэтгэлийг нэмэгдүүлэхийн тулд AMD чипсет болон график карттай зөөврийн компьютерын CPU болон GPU тэжээлийн тохиргоог динамикаар өөрчилдөг AMD Smart Shift технологийн анхны дэмжлэгийг нэмсэн.
    • Intel график картуудын i915 драйвер нь Intel Alderlake P чипийг дэмждэг.
    • Hyper-V виртуал график адаптерт зориулсан drm/hyperv драйвер нэмсэн.
    • 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

сэтгэгдэл нэмэх