Linux ядросу 5.14

Linux ядросу 5.14

эки ай иштеп кийин, Линус Torvalds берилген ядро чыгаруу Linux 5.14. Эң көрүнүктүү өзгөрүүлөрдүн арасында: жаңы quotactl_fd() жана memfd_secret() тутумдук чалуулары, ide жана чийки драйверлердин алынып салынышы, cgroup үчүн жаңы I/O приоритеттүү контроллери, SCHED_CORE тапшырманы пландаштыруу режими, BPF программасын жүктөөчүлөрдүн текшерилгенин түзүү үчүн инфраструктура.

Жаңы версияда 15883 иштеп чыгуучунун 2002 69 оңдоосу камтылган, патчтын көлөмү 12580 МБ (өзгөрүүлөр 861501 321654 файлга таасирин тийгизген, 47 5.14 код саптары кошулган, 14 13 сап өчүрүлгөн). 3 киргизилген бардык өзгөртүүлөрдүн 3%га жакыны түзмөк драйверлерине тиешелүү, өзгөрүүлөрдүн болжол менен XNUMX%ы аппараттык архитектураларга мүнөздүү кодду жаңыртууга, XNUMX%ы тармактык стекке, XNUMX%ы файл тутумдарына жана XNUMX%ы тиешелүү. ички ядронун подсистемалары менен байланышкан.

негизги инновациялар:

  • дисктин подсистемасы, киргизүү/чыгарма жана файл системалары:
    • cgroup үчүн ишке ашырылган жаңы I/O приоритеттүү контроллери - rq-qos, ал ар бир топтун мүчөлөрү тарабынан түзүлгөн түзмөктөрдү бөгөттөө үчүн суроо-талаптарды иштеп чыгуунун артыкчылыктуулугун көзөмөлдөй алат. Жаңы приоритеттүү контроллердин колдоосу mq-deadline I/O пландоочусуна кошулду;
    • ext4 файл тутумунда ишке ашырылган жаңы ioctl буйругу EXT4_IOC_CHECKPOINT, ал журналдан жана аны менен байланышкан буферлерден дискке бардык күтүлүүчү транзакцияларды мажбурлайт, ошондой эле логдун сактагычында колдонулган аймактын үстүнөн жазат. Өзгөртүү файл тутумдарынан маалымат агып кетүүсүнө жол бербөө демилгесинин алкагында даярдалган;
    • Btrfs менен тааныштырды Аткаруучулукту оптималдаштыруу: fsync аткаруу учурунда кеңейтилген атрибуттарды керексиз каттоону жок кылуу менен, кеңейтилген атрибуттар менен интенсивдүү операциялардын аткарылышы 17% га чейин жогорулады. Кошумчалай кетсек, экстенттерге таасир этпеген кыркуу операцияларын аткарууда, толук синхрондоштуруу өчүрүлөт, бул операция убактысын 12% га кыскартты. FSти текшерүүдө киргизүү/чыгаруу өткөрүү жөндөмдүүлүгүн чектөө үчүн sysfsке жөндөө кошулду. Өлчөмүн өзгөртүү жана түзмөк операцияларын жок кылуу үчүн ioctl чалуулары кошулду;
    • XFSде кайра иштетилген буфердик кэшти ишке ашыруу, ал пакеттик режимде эстутум баракчаларын бөлүштүрүүгө өткөрүлүп берилет. Жакшыртылган кэш натыйжалуулугу;
    • F2FS окуу үчүн гана режимде иштөө опциясын кошту жана туш келди окуу ишин жакшыртуу үчүн кысылган блокту кэштөө режимин (compress_cache) ишке ашырды. mmap() операциясы аркылуу эстутумга түшүрүлгөн файлдарды кысуу үчүн колдоо ишке ашырылган. Маска аркылуу файлды кысуу тандоону өчүрүү үчүн nocompress жаңы орнотуу опциясы сунушталды;
    • exFAT драйверинде кээ бир санарип камераларды сактоо менен шайкештикти жакшыртуу боюнча иштер жасалды;
    • кошумча системалык чалуу quotactl_fd(), бул квоталарды атайын түзүлүш файлы аркылуу эмес, квота колдонулган файлдык система менен байланышкан файл дескрипторун көрсөтүү менен башкарууга мүмкүндүк берет;
    • IDE интерфейси бар блоктук түзүлүштөрдүн эски драйверлери ядродон алынып салынды; алар көптөн бери libata подсистемасы менен алмаштырылган. Эски түзмөктөрдү колдоо толугу менен сакталып калды, өзгөртүүлөр эски драйверлерди колдонуу мүмкүнчүлүгүнө гана тиешелүү, аларды колдонууда дисктер /dev/sd* эмес, /dev/hd* деп аталган;
    • "Чийки" драйвер ядродон алынып салынды, бул /dev/raw интерфейси аркылуу бөгөттөөчү түзмөктөргө буферсиз кирүү мүмкүнчүлүгүн берет. Бул функция көптөн бери O_DIRECT желегин колдонгон колдонмолордо ишке ашырылып келет;
  • эс тутум кызматтары:
    • жаңы пландоо режими тапшырма пландоочу ишке ашырылган SCHED_CORE, бул сизге кайсы процесстер бир CPU өзөгүндө чогуу иштей ала тургандыгын көзөмөлдөөгө мүмкүндүк берет. Ар бир процесске процесстер ортосундагы ишеним чөйрөсүн аныктаган куки идентификатору дайындалышы мүмкүн (мисалы, бир эле колдонуучуга же контейнерге таандык). Коддун аткарылышын уюштурууда пландоочу бир CPU өзөгү бир эле ээси менен байланышкан процесстер арасында гана бөлүштүрүлүшүн камсыздай алат, ал бир SMT (Hyper Threading) жипинде ишенимдүү жана ишенимсиз тапшырмалардын иштөөсүнө жол бербөө аркылуу кээ бир Spectre чабуулдарын бөгөттөө үчүн колдонулушу мүмкүн. ;
    • cgroup механизми үчүн өлтүрүү операциясын колдоо ишке ашырылган, бул cgroup.kill виртуалдык файлына “1” жазуу менен топ менен байланышкан бардык процесстерди бир убакта өлтүрүүгө мүмкүндүк берет (SIGKILL жөнөтүү);
    • атомдук инструкцияны аткарууда маалыматтар эки CPU кэш сызыгын кесип өткөндүктөн, эстутумдагы теңдештирилбеген маалыматтарга жетүү учурунда пайда болгон бөлүнүү кулпуларын («бөлүнгөн кулпулар») аныктоого жооп берүүгө байланыштуу кеңейтилген мүмкүнчүлүктөр. Мындай бөгөттөө аткаруунун олуттуу төмөндөшүнө алып келет, андыктан мурда бөгөт коюуга себеп болгон тиркемени күч менен токтотуу мүмкүн болчу. Жаңы чыгарылыш "split_lock_detect=ratelimit:N" өзөктүк буйрук сабынын параметрин кошот, ал секундасына кулпулоо операцияларынын ылдамдыгына жалпы тутумдук чекти аныктоого мүмкүндүк берет, андан ашкандан кийин бөлүү кулпусунун булагы болгон процесстер токтотуунун ордуна 20 мс токтотууга мажбур болушу;
    • Ар бир топко процессордун канча убактысын бөлүштүрө аларын аныктаган 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 эсептегичтерин байланыштырган колдонуучунун идентификаторунун аталыш мейкиндигинде ресурстарды чектөөнү башкаруу. Өзгөртүү бир колдонуучу ар кандай контейнерлерде процесстерди иштеткенде, жалпы ресурс эсептегичтерин колдонуу менен көйгөйдү чечет;
    • ARM64 системалары үчүн KVM гипервизору конок системаларында MTE (MemTag, Memory Tagging Extension) кеңейтүүсүн колдонуу мүмкүнчүлүгүн кошту, бул ар бир эстутум бөлүштүрүү операциясына тегдерди байлоого жана эксплуатацияга бөгөт коюу үчүн көрсөткүчтөрдүн туура колдонулушун текшерүүнү уюштурууга мүмкүндүк берет. мурдатан бошотулган эстутум блокторуна, толуп кеткен буферлерге, инициализацияга чейинки жетүүлөргө жана учурдагы контексттен тышкары колдонууга кирүү менен шартталган алсыздыктар;
    • ARM64 платформасы тарабынан берилген көрсөткүчтүн аутентификациясы эми ядро ​​жана колдонуучу мейкиндиги үчүн өзүнчө конфигурацияланышы мүмкүн. Технология көрсөткүчтүн өзү пайдаланылбаган жогорку биттеринде сакталган санариптик кол тамгаларды колдонуу менен кайтаруу даректерин текшерүү үчүн атайын ARM64 нускамаларын колдонууга мүмкүндүк берет;
    • Колдонуучу режиминде Linux кошулду PCI-over-virtio драйвери тарабынан ишке ашырылган виртуалдык PCI шинасы бар PCI түзүлүштөрү үчүн драйверлерди колдонууну колдоо;
    • x86 системалары үчүн virtio-iommu паравиртуалдаштырылган түзүлүшкө кошумча колдоо көрсөтүлдү, бул сизге IOMMU сурамдарын, мисалы, ATTACH, DETACH, MAP жана UNMAP сыяктуу эстутум баракчаларын эмуляциялоосуз virtio транспорту аркылуу жөнөтүүгө мүмкүндүк берет;
    • Skylake үй-бүлөсүнөн тартып Coffee Lakeге чейин Intel CPU үчүн, керексиз синхрондоштуруу операцияларын динамикалык түрдө жок кылуу аркылуу көп жиптүү тиркемелердин иштешин жакшыртуу куралдарын камсыз кылган Intel TSX (Транзакциялык синхрондоштуруу кеңейтүүлөрү) демейки боюнча өчүрүлгөн. Кол салуу мүмкүнчүлүгүнөн улам кеңейтүүлөр өчүрүлгөн Zombieload, операциялардын асинхрондук үзгүлтүккө учурашы механизминин иштешинде пайда болгон үчүнчү тараптын каналдары аркылуу маалыматтын агып кетишин манипуляциялоо (TAA, TSX Asynchronous Abort);
  • тармак субсистемасы:
    • MPTCP (MultiPath TCP) өзөгүнө интеграцияны улантуу, ар кандай IP даректери менен байланышкан ар кандай тармак интерфейстери аркылуу бир эле учурда бир нече маршруттар боюнча пакеттерди жеткирүү менен TCP байланышынын иштешин уюштуруу үчүн TCP протоколунун кеңейтүүсү. Жаңы санда кошулду IPv4 жана IPv6 (көп жолдуу хэш саясаты) үчүн өзүңүздүн трафиктин хэш саясатын орнотуу механизми, жолду тандоону аныктаган хэшти эсептөөдө пакеттердеги кайсы талаалар, анын ичинде капсулдалган талаалар колдонулаарын аныктоого мүмкүндүк берет. пакет үчүн;
    • розетка колдоо виртуалдык транспорт виртио кошулду SOCK_SEQPACKET (датаграммаларды иреттүү жана ишенимдүү берүү);
    • SO_REUSEPORT розеткасынын механизминин мүмкүнчүлүктөрү кеңейтилди, бул бир нече угуучу розеткага бир эле учурда SO_REUSEPORT аркылуу туташкан бардык розеткалар боюнча келип түшкөн суроо-талаптарды бөлүштүрүү менен байланыштарды кабыл алуу үчүн бир эле портко туташууга мүмкүндүк берет, бул көп агымдуу сервердик тиркемелерди түзүүнү жөнөкөйлөтөт. . Жаңы версияда кошулду баштапкы тандалган розетка тарабынан суроо-талапты иштеп чыгууда бузулган учурда башкарууну башка розеткага өткөрүп берүү каражаттары (кызматтарды кайра иштетүүдө жеке байланыштарды жоготуу маселесин чечет);
  • жабдуулар:
    • amdgpu драйверинде ишке ашырылган "Beige Goby" (Navi 6000) жана "Yellow Carp" коддуу аталышы болгон жаңы AMD Radeon RX 24 GPU серияларын колдоо, ошондой эле Aldebaran GPU (gfx90a) жана Van Gogh APU үчүн жакшыртылган колдоо. Бир эле учурда бир нече eDP панелдери менен иштөө мүмкүнчүлүгү кошулду. APU Renoir үчүн видео эстутумда (TMZ, Trusted Memory Zone) шифрленген буферлер менен иштөөнү колдоо ишке ашырылган. Ыстык түрдө ажыратылган графикалык карталарга колдоо кошулду. Radeon RX 6000 (Navi 2x) GPU'лары жана эски AMD GPU'лери үчүн ASPM (Активдүү мамлекеттик кубаттуулукту башкаруу) энергияны үнөмдөө механизмин колдоо демейки боюнча иштетилген, ал мурда Navi 1x, Vega жана Polaris GPU'лары үчүн гана иштетилген;
    • AMD чиптери үчүн HMM (Гетерогендүү эстутум башкаруу) подсистемасынын негизинде бөлүшүлгөн виртуалдык эс тутумун (SVM, бөлүшүлгөн виртуалдык эстутум) колдоосу кошулду, ал өзүнүн эстутум башкаруу бирдиктери (MMU, эстутумду башкаруу бирдиги) менен түзмөктөрдү колдонууга мүмкүндүк берет, негизги эстутумга кире алат. Анын ичинде HMM колдонуу менен, сиз GPU жана CPU ортосунда жалпы дарек мейкиндигин уюштура аласыз, анда GPU процесстин негизги эс тутумуна кире алат;
    • баштапкы технологиялык колдоо кошулду AMD Smart Shift, бул оюн ойноодо, видеолорду редакциялоодо жана 3D рендерингде өндүрүмдүүлүктү жогорулатуу үчүн чипсети жана AMD графикалык картасы бар ноутбуктардагы CPU жана GPUнин энергия керектөө параметрлерин динамикалык түрдө өзгөртөт;
    • Intel видео карталары үчүн i915 драйверинде камтылган Intel Alderlake P чиптерин колдоо;
    • Hyper-V виртуалдык графикалык адаптер үчүн drm/hyperv драйвери кошулду;
    • кошулду чыгаруу үчүн UEFI микропрограммасы же BIOS тарабынан берилген EFI-GOP же VESA фрейм буферин колдонгон simpledrm графикалык драйвери. Драйвердин негизги максаты - толук DRM драйверин колдонууга чейин, жүктөөнүн баштапкы этаптарында графикалык чыгаруу мүмкүнчүлүктөрүн камсыз кылуу. Драйверди дагы эле жергиликтүү DRM драйверлери жок жабдуулар үчүн убактылуу чечим катары колдонсо болот;
    • кошулду баары бир компьютер колдоо Малина 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.

Source: linux.org.ru