Linux 5.14 միջուկի թողարկում

Երկու ամիս մշակումից հետո Լինուս Տորվալդսը ներկայացրեց Linux միջուկի 5.14 թողարկումը: Ամենաուշագրավ փոփոխություններից են՝ նոր quotactl_fd() և memfd_secret() համակարգերի զանգեր, ide և raw դրայվերների հեռացում, նոր I/O առաջնահերթ կարգավորիչ cgroup-ի համար, SCHED_CORE առաջադրանքների պլանավորման ռեժիմ, հաստատված BPF ծրագրի բեռնիչներ ստեղծելու ենթակառուցվածք:

Նոր տարբերակը ներառում է 15883 ուղղում 2002 ծրագրավորողների կողմից, patch-ի չափը 69 ՄԲ է (փոփոխությունները ազդել են 12580 ֆայլերի վրա, ավելացվել է 861501 կոդ, ջնջվել է 321654 տող): 47-ում ներկայացված բոլոր փոփոխությունների մոտ 5.14%-ը կապված է սարքի դրայվերների հետ, փոփոխությունների մոտավորապես 14%-ը կապված է ապարատային ճարտարապետությանը հատուկ կոդի թարմացման հետ, 13%-ը կապված է ցանցային փաթեթի հետ, 3%-ը՝ ֆայլային համակարգերի և 3%-ը: կապված են միջուկի ներքին ենթահամակարգերի հետ:

Հիմնական նորամուծությունները.

  • Սկավառակի ենթահամակարգ, I/O և ֆայլային համակարգեր
    • cgroups-ի համար ներդրվել է I/O առաջնահերթության վերահսկիչ՝ rq-qos, որը կարող է վերահսկել յուրաքանչյուր cgroup-ի անդամների կողմից ստեղծված սարքերը արգելափակելու հարցումների մշակման առաջնահերթությունը: Նոր առաջնահերթ կարգավորիչի աջակցություն է ավելացվել mq-վերջնաժամկետ I/O ժամանակացույցին:
    • Ext4 ֆայլային համակարգը իրականացնում է նոր ioctl հրաման՝ EXT4_IOC_CHECKPOINT, որը ստիպում է ամսագրից և դրանց հետ կապված բուֆերներից բոլոր սպասվող գործարքները լցվել սկավառակի վրա, ինչպես նաև վերագրանցում է պահեստում ամսագրի օգտագործած տարածքը: Փոփոխությունը պատրաստվել է ֆայլային համակարգերից տեղեկատվության արտահոսքը կանխելու նախաձեռնության շրջանակներում:
    • Btrfs-ի կատարողականի օպտիմալացումներ են կատարվել. fsync-ի կատարման ընթացքում ընդլայնված ատրիբուտների անհարկի գրանցումը բացառելով՝ ընդլայնված ատրիբուտներով ինտենսիվ գործողությունների կատարումն աճել է մինչև 17%-ով: Բացի այդ, չափերի վրա չազդող գործողություններ կատարելիս ամբողջական համաժամացումը անջատված է, ինչը նվազեցրել է շահագործման ժամանակը 12% -ով: sysfs-ին ավելացվել է կարգավորում՝ FS-ը ստուգելիս I/O թողունակությունը սահմանափակելու համար: Ավելացվել են ioctl զանգեր՝ սարքի չափափոխման և ջնջման գործողությունները չեղարկելու համար:
    • XFS-ում վերանախագծվել է բուֆերային քեշի ներդրումը, որն անցել է խմբաքանակային ռեժիմով հիշողության էջերի հատկացմանը։ Բարելավված քեշի արդյունավետությունը:
    • F2FS-ն ավելացնում է միայն կարդալու ռեժիմով աշխատելու տարբերակ և կիրառում է սեղմված բլոկի քեշի ռեժիմը (compress_cache)՝ պատահական ընթերցման կատարումը բարելավելու համար: Աջակցությունն իրականացվել է հիշողության մեջ քարտեզագրված ֆայլերը սեղմելու համար, օգտագործելով mmap() գործողությունը: Դիմակի վրա հիմնված ֆայլերի սեղմումը ընտրողաբար անջատելու համար առաջարկվել է առանց սեղմման նոր տեղադրման տարբերակ:
    • Աշխատանք է կատարվել exFAT դրայվերում՝ բարելավելու համատեղելիությունը թվային տեսախցիկի որոշ պահեստավորման հետ:
    • Ավելացվեց quotactl_fd() համակարգի կանչը, որը թույլ է տալիս կառավարել քվոտաները ոչ թե հատուկ սարքի ֆայլի միջոցով, այլ նշելով ֆայլի նկարագրիչը՝ կապված ֆայլային համակարգի հետ, որի համար կիրառվում է քվոտան:
    • IDE ինտերֆեյսով բլոկ սարքերի հին դրայվերները հեռացվել են միջուկից, դրանք վաղուց փոխարինվել են libata ենթահամակարգով:
    • «Հում» դրայվերը հեռացվել է միջուկից՝ ապահովելով չբուֆերային մուտք դեպի արգելափակված սարքեր՝ /dev/raw ինտերֆեյսի միջոցով: Այս գործառույթը վաղուց արդեն ներդրվել է O_DIRECT դրոշակ օգտագործող հավելվածներում:
  • Հիշողության և համակարգի ծառայություններ
    • Առաջադրանքների ժամանակացույցն իրականացնում է պլանավորման նոր ռեժիմ՝ SCHED_CORE, որը թույլ է տալիս վերահսկել, թե որ գործընթացները կարող են իրականացվել միասին նույն պրոցեսորի միջուկում: Յուրաքանչյուր գործընթացին կարող է վերագրվել թխուկների նույնացուցիչ, որը սահմանում է գործընթացների միջև վստահության շրջանակը (օրինակ՝ նույն օգտագործողին կամ կոնտեյներին պատկանող): Կոդի կատարումը կազմակերպելիս ժամանակացույցը կարող է ապահովել, որ մեկ պրոցեսորի միջուկը համօգտագործվի միայն միևնույն սեփականատիրոջ հետ կապված գործընթացների միջև, որը կարող է օգտագործվել Spectre-ի որոշ հարձակումները արգելափակելու համար՝ կանխելով վստահելի և անվստահելի առաջադրանքների գործարկումը նույն SMT (Hyper Threading) թեմայում: .
    • cgroup-ի համար իրականացվել է սպանության գործողության աջակցություն, որը թույլ է տալիս միանգամից սպանել խմբի հետ կապված բոլոր գործընթացները (ուղարկել SIGKILL)՝ cgroup.kill վիրտուալ ֆայլում գրելով «1»:
    • Ընդլայնված հնարավորություններ, որոնք վերաբերում են պառակտված կողպեքների հայտնաբերմանը («բաժանված կողպեքներ»), որոնք տեղի են ունենում հիշողության մեջ չհավասարեցված տվյալների մուտքի ժամանակ, քանի որ ատոմային հրահանգը կատարելիս տվյալները հատում են երկու պրոցեսորի քեշի տողերը: Նման արգելափակումը հանգեցնում է կատարողականի զգալի անկման, ուստի նախկինում հնարավոր էր բռնի կերպով դադարեցնել արգելափակման պատճառ դարձած հավելվածը։ Նոր թողարկումն ավելացնում է միջուկի հրամանի տող «split_lock_detect=ratelimit:N» պարամետրը, որը թույլ է տալիս սահմանել մեկ վայրկյանում արգելափակման գործողությունների արագության ամբողջ համակարգի սահմանը, որը գերազանցելուց հետո ցանկացած գործընթաց, որը դարձել է բաժանված կողպման աղբյուր: դադարեցնելու փոխարեն ստիպված կլինի կանգ առնել 20 ms-ով:
    • cgroup թողունակության վերահսկիչ CFS (CFS bandwidth controller), որը որոշում է, թե որքան պրոցեսորի ժամանակ կարող է հատկացվել յուրաքանչյուր cgroup-ին, կիրառում է ժամանակով սահմանափակ սահմաններ սահմանելու հնարավորությունը, ինչը թույլ է տալիս ավելի լավ կարգավորել հետաձգման նկատմամբ զգայուն աշխատանքային ծանրաբեռնվածությունը: Օրինակ, cpu.cfs_quota_us-ը 50000-ի և cpu.cfs_period_us-ի 100000-ի սահմանելը թույլ կտա մի խումբ պրոցեսներ վատնել պրոցեսորի ժամանակի 100ms-ը յուրաքանչյուր 50ms-ում:
    • Ավելացվել է նախնական ենթակառուցվածք 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-ի անվանատարածքում ռեսուրսների սահմանաչափերը կառավարելու նոր մեխանիզմ, որը կապում է անհատական ​​շրջանակային հաշվիչներ «օգտվողի անվանատարածքում» գտնվող օգտատիրոջ հետ: Փոփոխությունը լուծում է ընդհանուր ռեսուրսների հաշվիչների օգտագործման խնդիրը, երբ մեկ օգտատեր գործընթացներ է իրականացնում տարբեր կոնտեյներներում:
    • KVM հիպերվիզորը ARM64 համակարգերի համար ավելացրել է հյուրի համակարգերում MTE (MemTag, Memory Tagging Extension) ընդլայնումն օգտագործելու հնարավորությունը, որը թույլ է տալիս պիտակները կապել յուրաքանչյուր հիշողության բաշխման գործողության հետ և կազմակերպել ցուցիչների ճիշտ օգտագործումը՝ արգելափակելու ցուցիչների օգտագործումը: խոցելիություններ, որոնք առաջացել են արդեն ազատված հիշողության բլոկներին մուտք գործելու, հորդառատ բուֆերի, մուտքերը նախքան սկզբնավորումը և ընթացիկ համատեքստից դուրս օգտագործելու հետևանքով:
    • ARM64 պլատֆորմի Pointer Authentication սարքերն այժմ կարող են կազմաձևվել առանձին միջուկի և օգտագործողի տարածքի համար: Տեխնոլոգիան թույլ է տալիս օգտագործել ARM64 մասնագիտացված հրահանգներ՝ ստուգելու վերադարձի հասցեները՝ օգտագործելով թվային ստորագրությունները, որոնք պահվում են հենց ցուցիչի չօգտագործված վերին բիթերում:
    • Օգտատիրոջ ռեժիմում Linux-ն ավելացրել է աջակցություն վիրտուալ PCI ավտոբուսով PCI սարքերի վարորդների օգտագործման համար, որն իրականացվում է PCI-over-virtio վարորդի կողմից:
    • x86 համակարգերի համար ավելացվել է virtio-iommu paravirtualized սարքի աջակցությունը, որը թույլ է տալիս IOMMU հարցումները, ինչպիսիք են ATTACH, DETACH, MAP և UNMAP, ուղարկել virtio transport-ի միջոցով՝ առանց հիշողության էջերի աղյուսակների նմանակման:
    • Intel պրոցեսորների համար՝ Skylake ընտանիքից մինչև Coffee Lake, Intel TSX-ի (Transactional Synchronization Extensions) օգտագործումը, որն ապահովում է գործիքներ բազմաշերտ հավելվածների աշխատանքը բարելավելու համար՝ դինամիկ կերպով վերացնելով անհարկի համաժամացման գործողությունները, լռելյայն անջատված է: Ընդլայնումները անջատված են Zombieload-ի հարձակումների հնարավորության պատճառով, որոնք շահարկում են երրորդ կողմի ալիքների միջոցով տեղեկատվության արտահոսքը, որը տեղի է ունենում TAA (TSX Asynchronous Abort) մեխանիզմի շահագործման ընթացքում:
  • Ցանցային ենթահամակարգ
    • Ինտեգրում MPTCP-ի միջուկին (MultiPath TCP), TCP արձանագրության ընդլայնում TCP կապի գործարկումը կազմակերպելու համար՝ փաթեթների առաքմամբ միաժամանակ մի քանի երթուղիներով տարբեր ցանցային ինտերֆեյսների միջոցով, որոնք կապված են տարբեր IP հասցեների հետ: Նոր թողարկումն ավելացնում է IPv4-ի և IPv6-ի համար ձեր սեփական երթևեկության հեշավորման քաղաքականությունը սահմանելու մեխանիզմ (բազմուղիների հաշման քաղաքականություն), ինչը հնարավորություն է տալիս օգտվողի տարածքից որոշել, թե փաթեթների որ դաշտերը, ներառյալ պարփակվածները, կօգտագործվեն հեշը հաշվարկելիս, որը որոշում է փաթեթի ուղու ընտրություն:
    • Virtio վիրտուալ տրանսպորտին ավելացվել է SOCK_SEQPACKET վարդակների աջակցությունը (datagrams-ի պատվիրված և հուսալի փոխանցում):
    • Ընդլայնվել են SO_REUSEPORT վարդակից մեխանիզմի հնարավորությունները, ինչը թույլ է տալիս մի քանի լսողական վարդակներ միանգամից միանալ մեկ պորտին՝ մուտքային հարցումների բաշխմամբ միացումներ ստանալու համար SO_REUSEPORT-ի միջոցով միացված բոլոր վարդակներում, ինչը հեշտացնում է բազմաշերտ սերվերային հավելվածների ստեղծումը: . Նոր տարբերակն ավելացնում է գործիքներ՝ ի սկզբանե ընտրված վարդակից հարցումը մշակելիս ձախողման դեպքում կառավարումը մեկ այլ վարդակից փոխանցելու համար (լուծում է առանձին կապերի կորստի խնդիրը ծառայությունների վերագործարկման ժամանակ):
  • սարքավորում
    • Amdgpu դրայվերը ապահովում է նոր AMD Radeon RX 6000 GPU-ների շարքը, որոնք կրում են «Beige Goby» (Navi 24) և «Yellow Carp» ծածկանունները, ինչպես նաև բարելավված աջակցություն Aldebaran GPU-ին (gfx90a) և Van Gogh APU-ին: Ավելացվել է մի քանի eDP վահանակների հետ միաժամանակ աշխատելու հնարավորություն: APU Renoir-ի համար իրականացվել է տեսահիշողության գաղտնագրված բուֆերների հետ աշխատելու աջակցություն (TMZ, Trusted Memory Zone): Ավելացվեց տաք անջատված գրաֆիկական քարտերի աջակցություն: Radeon RX 6000 (Navi 2x) GPU-ների և ավելի հին AMD GPU-ների համար լռելյայն միացված է ASPM (Active State Power Management) աջակցությունը, որը նախկինում միացված էր միայն Navi 1x, Vega և Polaris GPU-ների համար:
    • AMD չիպերի համար ավելացվել է համօգտագործվող վիրտուալ հիշողության (SVM, համօգտագործվող վիրտուալ հիշողություն) աջակցություն՝ հիմնված HMM (Հետերոգեն հիշողության կառավարում) ենթահամակարգի վրա, որը թույլ է տալիս օգտագործել հիշողության կառավարման սեփական միավորներով սարքեր (MMU, հիշողության կառավարման միավոր), որը կարող է մուտք գործել հիմնական հիշողություն: Մասնավորապես, օգտագործելով HMM, դուք կարող եք կազմակերպել ընդհանուր հասցեային տարածք GPU-ի և CPU-ի միջև, որտեղ GPU-ն կարող է մուտք գործել գործընթացի հիմնական հիշողություն:
    • Ավելացվեց AMD Smart Shift տեխնոլոգիայի նախնական աջակցությունը, որը դինամիկ կերպով փոխում է պրոցեսորի և GPU-ի էներգիայի կարգավորումները AMD չիպսեթով և գրաֆիկական քարտով նոութբուքերի վրա՝ խաղերի, վիդեո խմբագրման և 3D-արտադրման արդյունավետությունը բարձրացնելու համար:
    • Intel գրաֆիկական քարտերի i915 դրայվերը ներառում է Intel Alderlake P չիպերի աջակցություն:
    • Ավելացվել է drm/hyperv վարորդ Hyper-V վիրտուալ գրաֆիկական ադապտերի համար:
    • Ավելացվեց աջակցություն Raspberry Pi 400-ը մեկում մեկ համակարգչի համար:
    • Ավելացվեց dell-wmi-privacy վարորդը՝ Dell նոութբուքերում ներառված ապարատային տեսախցիկի և խոսափողի անջատիչներին աջակցելու համար:
    • Lenovo նոութբուքերի համար ավելացվել է WMI ինտերֆեյս՝ BIOS-ի կարգավորումները sysfs /sys/class/firmware-attributes/-ի միջոցով փոխելու համար:
    • Ընդլայնված աջակցություն USB4 ինտերֆեյս ունեցող սարքերի համար:
    • Ավելացվել է աջակցություն AmLogic SM1 TOACODEC, Intel AlderLake-M, NXP i.MX8, NXP TFA1, TDF9897, Rockchip RK817, Qualcomm Quinary MI2 և Texas Instruments TAS2505 ձայնային քարտերի և կոդեկների համար: Բարելավված աուդիո աջակցություն HP և ASUS նոութբուքերի վրա: Ավելացվեցին պատչեր՝ ուշացումները նվազեցնելու համար, նախքան USB սարքերում ձայնի նվագարկումը:

Source: opennet.ru

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