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

Երկու ամիս զարգացումից հետո Լինուս Տորվալդսը ներկայացրեց միջուկի թողարկում Linux 5.1. Ամենաուշագրավ փոփոխություններից՝ ասինխրոն I/O io_uring-ի նոր ինտերֆեյս, NVDIMM որպես RAM օգտագործելու հնարավորություն, Nouveau-ում ընդհանուր վիրտուալ հիշողության աջակցություն, fanotify-ի միջոցով շատ մեծ ֆայլային համակարգերի մասշտաբային մոնիտորինգի աջակցություն, Zstd սեղմումը կարգավորելու հնարավորություն։ մակարդակներ Btrfs-ում, cpuidle-ի նոր TEO մշակող, համակարգային զանգերի իրականացում 2038-ի խնդիրը լուծելու համար, սարքի քարտեզագրող սարքերից առանց initramfs-ի բեռնաթափման հնարավորություն, SafeSetID LSM մոդուլ, համակցված կենդանի patches-ի աջակցություն:

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

  • Սկավառակի ենթահամակարգ, I/O և ֆայլային համակարգեր
    • Իրականացրել է նոր ինտերֆեյս ասինխրոն I/O-ի համար io_uring, որն աչքի է ընկնում I/O հարցումների աջակցությամբ և բուֆերավորման հետ կամ առանց դրա աշխատելու ունակությամբ: Հիշեցնենք, որ նախկինում առաջարկված ասինխրոն I/O մեխանիզմը «aio» չէր ապահովում բուֆերացված I/O, կարող էր գործել միայն O_DIRECT ռեժիմում (առանց բուֆերացման և քեշը շրջանցելու), ուներ արգելափակման հետ կապված խնդիրներ՝ մետատվյալների հասանելիությանը սպասելու պատճառով: , և ցուցադրեց մեծ ծախսեր՝ հիշողության մեջ տվյալների պատճենման պատճառով:

      API-ի շրջանակներում
      io_uring մշակողները փորձել են վերացնել հին aio ինտերֆեյսի թերությունները: Ըստ արտադրողականություն io_uring-ը շատ մոտ է SPDK և զգալիորեն առաջ է libaio-ից, երբ աշխատում է հարցումների միացվածությամբ: Գրադարան է պատրաստվել io_uring-ն օգտագործողի տարածքում աշխատող վերջնական հավելվածներում օգտագործելու համար ազատագրող, որն ապահովում է բարձր մակարդակի շրջանակ միջուկի միջերեսի վրա;

    • Իրադարձությունների հետևման մեխանիզմի դեպքում FS fanotify() ավելացրել է աջակցություն սուպերբլոկների և կառուցվածքի փոփոխության իրավիճակներին հետևելու համար dirent (դիրեկտորիաների ստեղծման, ջնջման և տեղափոխման իրադարձություններ): Ներկայացված առանձնահատկությունները օգնում են լուծել մասշտաբայնության խնդիրները, որոնք առաջանում են շատ մեծ ֆայլային համակարգերում ռեկուրսիվ փոփոխությունների հետագծում ստեղծելիս՝ օգտագործելով inotify մեխանիզմը (dirent փոփոխությունները նախկինում կարող էին հետագծվել միայն inotify-ի միջոցով, բայց
      կատարումը մեծ ներդիր դիրեկտորիաների ռեկուրսիվ հետևելու պայմաններում շատ ցանկալի է մնացել): Այժմ նման մոնիտորինգը կարող է արդյունավետ կերպով իրականացվել fanotify-ի միջոցով;

    • Btrfs ֆայլային համակարգի վրա ավելացրել է zstd ալգորիթմի համար սեղմման մակարդակը հարմարեցնելու ունակությունը, որը կարելի է դիտարկել որպես օպտիմալ փոխզիջում արագ, բայց անարդյունավետ lz4-ի և դանդաղ, բայց լավ սեղմման xz-ի միջև: Ի անալոգիա այն բանի, թե ինչպես նախկինում հնարավոր էր սահմանել սեղմման մակարդակը zlib-ի օգտագործման ժամանակ, zstd-ի համար ավելացվել է «-o compress=zstd:level» ամրացման տարբերակի աջակցությունը: Փորձարկման ընթացքում նվազագույն առաջին մակարդակը տրամադրել է տվյալների սեղմում 2.658 անգամ՝ սեղմման արագությամբ՝ 438.47 ՄԲ/վ, ապակոմպրեսիոն արագություն՝ 910.51 ՄԲ/վ և հիշողության սպառում՝ 780 ՄԲ, իսկ առավելագույն մակարդակը՝ 15, ապահովել է 3.126 անգամ, բայց սեղմումով։ արագությունը 37.30 ՄԲ/վ, ապափաթեթավորումը՝ 878.84 ՄԲ/վ և հիշողության սպառում՝ 2547 ՄԲ;
    • Ավելացված է սարքի քարտեզագրող սարքի վրա տեղակայված ֆայլային համակարգից բեռնաթափվելու հնարավորություն՝ առանց initramfs-ի օգտագործման: Սկսած միջուկի ընթացիկ թողարկումից, սարքի քարտեզագրող սարքերը կարող են ուղղակիորեն օգտագործվել բեռնման գործընթացում, օրինակ՝ որպես արմատային ֆայլային համակարգի բաժանում: Բաժինը կազմաձևված է «dm-mod.create» պարամետրի միջոցով: Սարքի քարտեզագրման մոդուլները, որոնք թույլատրվում են բեռնման համար, ներառում են.
    • F2FS_NOCOW_FL դրոշը ավելացվել է F2FS ֆայլային համակարգին՝ ուղղված դեպի Flash կրիչներ, ինչը թույլ է տալիս անջատել պատճենահանման ռեժիմը տվյալ ֆայլի համար.
    • Ֆայլային համակարգը հեռացվել է միջուկից Exofs, որը ext2-ի տարբերակ է, որը հարմարեցված է OSD (Object-based Storage Device) օբյեկտների պահեստների հետ աշխատելու համար։ Նման օբյեկտների պահպանման սարքերի համար SCSI արձանագրության աջակցությունը նույնպես հեռացվել է.
  • Վիրտուալացում և անվտանգություն
    • PR_SPEC_DISABLE_NOEXEC տարբերակն ավելացվել է prctl()-ին՝ ընտրված գործընթացի համար հրահանգների սպեկուլյատիվ կատարումը վերահսկելու համար: Նոր տարբերակը թույլ է տալիս ընտրողաբար անջատել սպեկուլյատիվ կատարումը այն գործընթացների համար, որոնք կարող են պոտենցիալ հարձակման ենթարկվել Spectre հարձակման կողմից: Կողպեքը տևում է մինչև exec();
    • Իրականացված LSM մոդուլ SafeSetID, որը թույլ է տալիս համակարգի ծառայություններին ապահով կառավարել օգտատերերին՝ առանց արտոնությունների մեծացման (CAP_SETUID) և առանց արմատային արտոնություններ ստանալու։ Արտոնությունները շնորհվում են՝ սահմանելով կանոններ Securityfs-ում՝ հիմնված վավեր կապերի սպիտակ ցուցակի վրա («UID1:UID2» ձևով);
    • Ավելացվել են ցածր մակարդակի փոփոխություններ, որոնք պահանջվում են անվտանգության մոդուլների (LSM) բեռնման համար: Ներկայացրեց «lsm» միջուկի բեռնման տարբերակը՝ վերահսկելու համար, թե որ մոդուլներն են բեռնված և ինչ հերթականությամբ;
    • Աուդիտի ենթահամակարգին ավելացվել է ֆայլերի անունների տարածքների աջակցությունը.
    • Ընդլայնված GCC plugin structleak-ի հնարավորությունները, որը թույլ է տալիս արգելափակել հիշողության բովանդակության հնարավոր արտահոսքերը: Տրամադրվում է ցանկացած փոփոխականի սկզբնավորում, որն օգտագործվում է կոդում` կույտի վրա հղման հասանելիության միջոցով.
  • Ցանցային ենթահամակարգ
    • Վարդակների համար իրականացվել է նոր տարբերակ «SO_BINDTOIFINDEX» նման
      «SO_BINDTODEVICE», բայց որպես փաստարկ հաշվի առնելով ցանցային ինտերֆեյսի ինդեքսային համարը ինտերֆեյսի անվան փոխարեն.

    • Mac80211 բուրգը ավելացրել է մեկ սարքի վրա մի քանի BSSID (MAC հասցեներ) նշանակելու հնարավորություն: Որպես WiFi-ի աշխատանքը օպտիմալացնելու նախագծի մի մաս, mac80211 ստեկը ավելացրել է եթերաժամանակի հաշվառում և մի քանի կայանների միջև եթերաժամանակ բաշխելու հնարավորություն (մուտքի կետի ռեժիմում աշխատելիս՝ փոխանցման ավելի քիչ ժամանակ հատկացնելով դանդաղ անլար կայաններին՝ ժամանակը հավասարաչափ բաշխելու փոխարեն բոլորի միջև։ կայաններ);
    • Ավելացված մեխանիզմ»devlink առողջություն«, որը տրամադրում է ծանուցումներ, երբ խնդիրներ են առաջանում ցանցային ինտերֆեյսի հետ.
  • Հիշողության և համակարգի ծառայություններ
    • Իրականացվել է անվտանգ ազդանշանի փոխանցում, որը թույլ է տալիս PID-ի կրկնակի օգտագործումը: Օրինակ, երբ նախկինում սպանում է զանգը, կարող է առաջանալ մի իրավիճակ, երբ ազդանշան ուղարկելուց անմիջապես հետո թիրախ PID-ը կարող է ազատվել գործընթացի ավարտի պատճառով և զբաղեցնել մեկ այլ գործընթաց, իսկ ազդանշանը կփոխանցվի մեկ այլ գործընթացի: Նման իրավիճակները վերացնելու համար ավելացվել է նոր համակարգային անվանում pidfd_send_signal, որն օգտագործում է /proc/pid-ից ֆայլերի նկարագրիչներ՝ գործընթացի կայուն կապն ապահովելու համար։ Նույնիսկ եթե PID-ը նորից օգտագործվի համակարգային զանգերի մշակման ժամանակ, ֆայլի նկարագրիչը չի փոխվի և կարող է ապահով կերպով օգտագործվել գործընթացին ազդանշան ուղարկելու համար.
    • Ավելացված է մշտական ​​հիշողության սարքեր (օրինակ, մշտական ​​հիշողություն) օգտագործելու ունակություն NVDIMM) որպես RAM: Մինչ այժմ միջուկն աջակցում էր այնպիսի սարքերի, ինչպիսիք են պահեստավորման սարքերը, սակայն այժմ դրանք կարող են օգտագործվել նաև որպես լրացուցիչ RAM։ Գործառույթն իրականացվում է ի պատասխան այն օգտատերերի ցանկության, ովքեր ցանկանում են համակերպվել կատարողականի հետաձգման հետ և ցանկանում են օգտագործել Linux միջուկի հիշողության կառավարման բնիկ API-ն՝ օգտագործողի տարածքի հիշողության բաշխման գոյություն ունեցող համակարգերը, որոնք աշխատում են dax-ի համար mmap-ի վրա: ֆայլ;
    • Ավելացվեց պրոցեսորի անգործության նոր կարգավորիչ (cpuidle, որոշում է, թե երբ պրոցեսորը կարող է տեղադրվել էներգախնայողության խորը ռեժիմների մեջ; որքան խորն է ռեժիմը, այնքան մեծ է խնայողությունը, բայց նաև որքան ժամանակ է պահանջվում ռեժիմից դուրս գալու համար) - TEO (Timer Events Oriented Governor): ) Մինչ այժմ առաջարկվել է cpuidle-ի երկու մշակող՝ «մենյու» և «սանդուղք», որոնք տարբերվում են էվրիստիկայի մեջ: «Մենյու» մշակողն ունի էվրիստիկական որոշումներ կայացնելու հետ կապված խնդիրներ, որոնց վերացման համար որոշվել է պատրաստել նոր մշակող: TEO-ն տեղադրված է որպես «մենյուի» կարգավորիչի այլընտրանք՝ թույլ տալով ավելի բարձր կատարողականություն՝ պահպանելով էներգիայի սպառման նույն մակարդակը:
      Դուք կարող եք ակտիվացնել նոր մշակիչը՝ օգտագործելով boot պարամետրը «cpuidle.governor=teo»;

    • Որպես վերացման աշխատանքների մի մաս 2038 թվականի խնդիրները, որը առաջացել է 32-բիթանոց time_t տիպի գերհոսքից, ներառում է համակարգային զանգեր, որոնք առաջարկում են 32-բիթանոց ժամանակաչափեր 64-բիթանոց ճարտարապետությունների համար: Արդյունքում, 64-բիթանոց time_t կառուցվածքն այժմ կարող է օգտագործվել բոլոր ճարտարապետությունների վրա: Նմանատիպ փոփոխություններ են իրականացվել նաև օպցիոնների ցանցային ենթահամակարգում timestamp ցանցային վարդակներ;
    • Միջուկի տաք կարկատման համակարգում (կենդանի կարկատում) ավելացրել է «Atomic Replace» ֆունկցիան՝ մեկ ֆունկցիայի վրա մի շարք փոփոխությունների ատոմային կիրառման համար: Այս հատկությունը թույլ է տալիս բաշխել ամփոփ patches-ը, որը ներառում է միանգամից մի քանի փոփոխություն՝ կենդանի patches-ի փուլային կիրառման գործընթացի փոխարեն խիստ սահմանված կարգով, ինչը բավականին դժվար է պահպանել: Մինչդեռ նախկինում յուրաքանչյուր հաջորդ փոփոխություն պետք է հիմնված լիներ վերջին փոփոխությունից հետո ֆունկցիայի վիճակի վրա, այժմ հնարավոր է տարածել մի քանի փոփոխություններ՝ կապված մեկ սկզբնական վիճակի հետ (այսինքն՝ սպասարկողները կարող են փոխարենը պահպանել բազային միջուկի համեմատ մեկ համախմբված կարկատել): մի շղթա, որոնք կախված են միմյանցից);
    • Հայտարարվել է հնացած աջակցություն a.out գործարկվող ֆայլի ձևաչափին և
      ջնջված է կոդ՝ a.out ձևաչափով հիմնական ֆայլեր ստեղծելու համար, որը գտնվում է լքված վիճակում: a.out ձևաչափը երկար ժամանակ չի օգտագործվում Linux համակարգերում, իսկ a.out ֆայլերի ստեղծումը վաղուց չի աջակցվում ժամանակակից գործիքների կողմից լռելյայն Linux կոնֆիգուրացիաներում: Բացի այդ, a.out ֆայլերի բեռնիչը կարող է ամբողջությամբ ներդրվել օգտագործողի տարածքում;

    • BPF ծրագրի ստուգման մեխանիզմին ավելացվել է չօգտագործված կոդը նույնականացնելու և հեռացնելու հնարավորությունը: Միջուկը ներառում է նաև BPF ենթահամակարգի համար spinlock աջակցությամբ patches՝ ապահովելով լրացուցիչ հնարավորություններ BPF ծրագրերի զուգահեռ կատարումը կառավարելու համար;
  • սարքավորում
    • Nouveau-ում վարորդ ավելացրել է աջակցություն տարասեռ հիշողության կառավարմանը, որը թույլ է տալիս պրոցեսորին և պրոցեսորին մուտք գործել համաժամացված հիշողության ընդհանուր տարածքներ: Համօգտագործվող վիրտուալ հիշողության համակարգը (SVM, ընդհանուր վիրտուալ հիշողություն) իրականացվում է HMM (Հետերոգեն հիշողության կառավարում) ենթահամակարգի հիման վրա, որը թույլ է տալիս օգտագործել հիշողության կառավարման սեփական միավորներով սարքեր (MMU, հիշողության կառավարման միավոր), որոնք կարող են մուտք գործել: հիմնական հիշողություն. Մասնավորապես, օգտագործելով HMM, դուք կարող եք կազմակերպել ընդհանուր հասցեային տարածք GPU-ի և CPU-ի միջև, որտեղ GPU-ն կարող է մուտք գործել գործընթացի հիմնական հիշողություն: SVM-ի աջակցությունը ներկայումս միացված է միայն Pascal ընտանիքի GPU-ների համար, թեև աջակցություն է տրամադրվում նաև Volta և Turing GPU-ների համար: Ընդ որում, Nouveau-ում ավելացրեց նոր ioctl՝ վերահսկելու գործընթացային հիշողության տարածքների միգրացիան դեպի GPU հիշողություն;
    • Intel DRM վարորդում GPU Skylake-ի և ավելի ուշ (gen9+) համար ներառված Լռելյայնորեն, fastboot ռեժիմը վերացնում է ռեժիմի անհարկի փոփոխությունները բեռնման ժամանակ: Ավելացված է новые սարքերի նույնացուցիչներ՝ հիմնված Coffelake և Ice Lake միկրոճարտարապետությունների վրա: Coffelake չիպսերի համար ավելացրել է GVT աջակցություն (GPU վիրտուալացում) Վիրտուալ GPU-ների համար իրականացվել է VFIO EDID աջակցություն: LCD վահանակների համար MIPI/DSI ավելացրել է աջակցություն ACPI/PMIC տարրերին: Իրականացվել է հեռուստացույցի նոր ռեժիմներ 1080p30/50/60 հեռուստացույց;
    • Amdgpu վարորդին ավելացվել է Vega10/20 BACO GPU-ի աջակցություն: Իրականացված Vega 10/20 էներգիայի կառավարման և Vega 10 հովացուցիչի կառավարման սեղաններ: Ավելացվել են նոր PCI սարքերի նույնացուցիչներ Picasso GPU-ների համար: Ավելացված է ինտերֆեյս՝ պլանավորված կախվածությունները կառավարելու համար՝ փակուղիներից խուսափելու համար.
    • Ավելացված է DRM/KMS դրայվեր էկրանի արագացուցիչների համար ARM Կոմեդա (Մալի D71);
    • Ավելացված է աջակցություն Toppoly TPG110, Sitronix ST7701, PDA 91-00156-A0, LeMaker BL035-RGB-002 3.5 և Kingdisplay kd097d04 էկրանի վահանակների համար;
    • Ավելացված է աջակցություն Rockchip RK3328, Cirrus Logic CS4341 և CS35L36, MediaTek MT6358, Qualcomm WCD9335 և Ingenic JZ4725B աուդիո կոդեկների, ինչպես նաև Mediatek MT8183 աուդիո հարթակի համար;
    • Ավելացված է NAND կարգավորիչների աջակցություն Flash STMicroelectronics FMC2, Amlogic Meson;
    • Ավելացվել է արագացուցիչի աջակցություն Habana AI ապարատային համակարգերի համար;
    • Ավելացվել է NXP ENETC գիգաբիթ Ethernet կարգավորիչների և MediaTek MT7603E (PCIe) և MT76x8 անլար ինտերֆեյսերի աջակցություն:

Միաժամանակ Լատինական Ամերիկայի Ազատ Ծրագրային ապահովման հիմնադրամը ձեւավորվել է
տարբերակը ամբողջովին անվճար միջուկ 5.1 - Linux-libre 5.1-gnu, մաքրված որոնվածից և վարորդի տարրերից, որոնք պարունակում են ոչ ազատ բաղադրիչներ կամ ծածկագրի բաժիններ, որոնց շրջանակը սահմանափակված է արտադրողի կողմից: Նոր թողարկումում blob loading-ն անջատված է mt7603 և goya վարորդներում: Թարմացված բլբի մաքրման կոդը վարորդների և ենթահամակարգերում wilc1000, iwlwifi, soc-acpi-intel, brcmfmac, mwifiex, btmrvl, btmtk և touchscreen_dmi: Blob մաքրումը lantiq xrx200 որոնվածի բեռնիչում դադարեցվել է միջուկից հեռացնելու պատճառով:

Source: opennet.ru

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