Linux 5.1 ядросының шығарылымы

Екі айлық дамудан кейін Линус Торвальдс енгізілді ядро шығару Linux 5.1. Ең көрнекті өзгерістер арасында: асинхронды енгізу/шығару io_uring үшін жаңа интерфейс, NVDIMM-ді жедел жады ретінде пайдалану мүмкіндігі, Nouveau-да ортақ виртуалды жадты қолдау, fanotify арқылы өте үлкен файлдық жүйелерді масштабталатын бақылауды қолдау, Zstd қысуын конфигурациялау мүмкіндігі. Btrfs деңгейлері, жаңа cpuidle TEO өңдегіші, 2038 мәселесін шешу үшін жүйелік шақыруларды жүзеге асыру, initramfсыз құрылғы-маппер құрылғыларынан жүктеу мүмкіндігі, SafeSetID LSM модулі, біріктірілген тірі патчтарды қолдау.

басты инновациялар:

  • Дискінің ішкі жүйесі, енгізу/шығару және файлдық жүйелер
    • Асинхронды енгізу/шығару үшін жаңа интерфейс енгізілді - io_uring, ол енгізу/шығару сұрауын қолдауымен және буферлеумен немесе онсыз жұмыс істеу мүмкіндігімен ерекшеленеді. Еске салайық, бұрын ұсынылған асинхронды енгізу/шығару механизмі «aio» буферлі енгізу/шығару мүмкіндігін қолдамайды, тек O_DIRECT режимінде жұмыс істей алады (буферлеусіз және кэшті айналып өтпей), метадеректер қолжетімділігін күтуге байланысты құлыптауда проблемалар болды және жадтағы деректерді көшіруге байланысты үлкен үстеме шығындарды көрсетті.

      API ішінде
      io_uring әзірлеушілері ескі aio интерфейсінің кемшіліктерін жоюға тырысты. Авторы өнімділігі io_uring өте жақын SPDK және сауалнама қосулы жұмыс істегенде libaio-дан айтарлықтай озып кетті. Пайдаланушы кеңістігінде жұмыс істейтін соңғы қолданбаларда io_uring пайдалану үшін кітапхана дайындалды босату, ол ядро ​​интерфейсі үстінде жоғары деңгейлі фреймворкті қамтамасыз етеді;

    • FS fanotify() ішіндегі оқиғаларды бақылау механизмінде қосылды суперблокты және құрылымды өзгерту жағдайларын қадағалауды қолдау тура (каталогтарды құру, жою және жылжыту оқиғалары). Ұсынылған мүмкіндіктер inotify механизмі арқылы өте үлкен файлдық жүйелерде рекурсивті өзгерістерді қадағалауды жасау кезінде туындайтын масштабтау мәселелерін шешуге көмектеседі (бұрын тікелей өзгерістерді тек 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» жүктеу параметрі арқылы конфигурацияланады. Жүктеуге рұқсат етілген құрылғы-маппер модульдері мыналарды қамтиды: «крипт», «кідіріс», «сызықтық», «snapshot-origin» және «шындық»;
    • F2FS_NOCOW_FL жалауы Flash дискілеріне бағытталған F2FS файлдық жүйесіне қосылды, бұл берілген файл үшін жазуға көшіру режимін өшіруге мүмкіндік береді;
    • Файлдық жүйе ядродан жойылды Exofsext2 нұсқасы болып табылады, ол OSD (объектке негізделген сақтау құрылғысы) нысан қоймаларымен жұмыс істеуге бейімделген. Мұндай нысанды сақтау құрылғылары үшін SCSI протоколын қолдау да жойылды;
  • Виртуализация және қауіпсіздік
    • Таңдалған процесс үшін нұсқаулардың алыпсатарлық орындалуын бақылау үшін prctl() параметріне PR_SPEC_DISABLE_NOEXEC опциясы қосылды. Жаңа опция Spectre шабуылының ықтимал шабуылына ұшырауы мүмкін процестер үшін алыпсатарлық орындауды таңдаулы түрде өшіруге мүмкіндік береді. Құлыптау exec();
    • LSM модулі енгізілді SafeSetID, бұл жүйелік қызметтерге артықшылықтарды арттырмай (CAP_SETUID) және түбірлік артықшылықтарды алмай пайдаланушыларды қауіпсіз басқаруға мүмкіндік береді. Артықшылықтар жарамды байланыстырулардың ақ тізіміне негізделген («UID1:UID2» пішінінде) қауіпсіздік файлдарындағы ережелерді анықтау арқылы тағайындалады;
    • Қауіпсіздік модульдерін (LSMs) стекке негізделген жүктеу үшін қажетті төменгі деңгейлі өзгерістер қосылды. Қандай модульдер жүктелетінін және қандай ретпен жүктелетінін басқару үшін «lsm» ядросының жүктеу опциясын енгізді;
    • Аудиттің ішкі жүйесіне файл аттар кеңістігіне қолдау қосылды;
    • Кеңейтілген жад мазмұнының ықтимал ағып кетуін блоктауға мүмкіндік беретін GCC плагинінің structleak мүмкіндіктері.Стектегі анықтамалық қатынас арқылы кодта қолданылатын кез келген айнымалыларды инициализациялау қамтамасыз етіледі;
  • Желілік ішкі жүйе
    • Розеткаларға арналған жүзеге асырылды ұқсас жаңа опция "SO_BINDTOIFINDEX"
      "SO_BINDTODEVICE", бірақ аргумент ретінде интерфейс атауының орнына желі интерфейсінің индекс нөмірін алу;

    • mac80211 стек бір құрылғыға бірнеше BSSID (MAC мекенжайлары) тағайындау мүмкіндігін қосты. WiFi өнімділігін оңтайландыру жобасының бір бөлігі ретінде mac80211 стек эфир уақытын есепке алуды және эфир уақытын бірнеше станциялар арасында бөлу мүмкіндігін қосты (кіру нүктесі режимінде жұмыс істегенде, уақытты барлығына біркелкі бөлудің орнына, сымсыз станцияларды баяулатуға аз жіберу уақытын бөлу). станциялар);
    • «Қосылған механизм»devlink денсаулығы", ол желі интерфейсінде ақаулар туындаған кезде хабарландырулар береді;
  • Жад және жүйелік қызметтер
    • Орындалды PID қайта пайдалануға мүмкіндік беретін қауіпсіз сигнал жеткізу. Мысалы, бұрын kill шақырған кезде, сигнал жібергеннен кейін бірден мақсатты PID процестің аяқталуына байланысты босатылып, басқа процесспен жұмыс істейтін және сигнал басқа процеске берілуі мүмкін жағдай туындауы мүмкін. Мұндай жағдайларды жою үшін тұрақты процесті байланыстыруды қамтамасыз ету үшін /proc/pid файл дескрипторларын пайдаланатын жаңа жүйелік қоңырау pidfd_send_signal қосылды. Жүйелік шақыруды өңдеу кезінде PID қайта пайдаланылса да, файл дескрипторы өзгермейді және оны процеске сигнал жіберу үшін қауіпсіз пайдалануға болады;
    • Қосылды тұрақты жад құрылғыларын пайдалану мүмкіндігі (мысалы, тұрақты жад NVDIMM) ЖЖҚ ретінде. Осы уақытқа дейін ядро ​​сақтау құрылғылары сияқты құрылғыларды қолдады, бірақ енді оларды қосымша жедел жад ретінде де пайдалануға болады. Бұл мүмкіндік өнімділіктің артта қалуына төтеп беруге дайын және dax үшін mmap үстінде жұмыс істейтін бар пайдаланушы кеңістігін жадты бөлу жүйелерін пайдаланудың орнына жергілікті Linux ядросының жадты басқару API интерфейсін пайдаланғысы келетін пайдаланушылардың тілектеріне жауап ретінде жүзеге асырылады. файл;
    • Жаңа процессордың жұмыс істемейтін өңдегіші қосылды (cpuidle, процессорды терең қуат үнемдеу режимдеріне қашан қоюға болатындығын шешеді; режим неғұрлым терең болса, соғұрлым үнемдеу көп болады, сонымен бірге режимнен шығу үшін соғұрлым ұзақ уақыт қажет) - TEO (Таймер оқиғаларына бағытталған басқарушы) ). Осы уақытқа дейін эвристикамен ерекшеленетін «мәзір» және «баспалдақ» екі cpuidle өңдеушісі ұсынылды. «Мәзір» өңдеушісінде эвристикалық шешімдер қабылдауда белгілі проблемалар бар, оларды жою үшін жаңа өңдеуші дайындау туралы шешім қабылданды. TEO қуат тұтынудың бірдей деңгейін сақтай отырып, жоғары өнімділікке мүмкіндік беретін «мәзір» өңдеушісіне балама ретінде орналастырылған.
      Жаңа өңдегішті «cpuidle.governor=teo» жүктеу параметрі арқылы белсендіруге болады;

    • жою жұмыстарының бір бөлігі ретінде 2038 жылғы мәселелер, 32-биттік time_t түрінің толып кетуінен туындаған 32-биттік архитектуралар үшін 64-биттік уақыт есептегіштерін ұсынатын жүйелік қоңырауларды қамтиды. Нәтижесінде 64 биттік time_t құрылымын енді барлық архитектурада пайдалануға болады. Ұқсас өзгерістер опциялар үшін желілік ішкі жүйеде де енгізілген уақыт белгісі желілік розеткалар;
    • Өзек үшін ыстық патч жүйесіне (тірі патчинг) қосылды Бір функцияға бірқатар өзгерістерді атомдық түрде қолдануға арналған «Атомды ауыстыру» мүмкіндігі. Бұл мүмкіндік бір уақытта бірнеше өзгерістерді қамтитын жиынтық патчтарды таратуға мүмкіндік береді, оны сақтау өте қиын, нақты анықталған тәртіпте тірі патчтарды кезең-кезеңімен қолдану процесінің орнына. Бұрын әрбір келесі өзгерту соңғы өзгерістен кейінгі функцияның күйіне негізделуі керек болса, енді бір бастапқы күйге байланыстырылған бірнеше өзгерістерді бірден таратуға болады (яғни, қолдаушылар оның орнына негізгі ядроға қатысты бір біріктірілген патчты сақтай алады) бір-біріне тәуелді патчтар тізбегі);
    • Жарияланды a.out орындалатын файл пішіміне арналған ескірген қолдау және
      жойылды басылған күйдегі a.out пішіміндегі негізгі файлдарды генерациялауға арналған код. a.out пішімі Linux жүйелерінде ұзақ уақыт бойы пайдаланылмаған және a.out файлдарын жасау әдепкі Linux конфигурацияларындағы заманауи құралдармен ұзақ уақыт бойы қолдау таппай келеді. Сонымен қатар, a.out файлдарына арналған жүктеуші толығымен пайдаланушы кеңістігінде жүзеге асырылуы мүмкін;

    • BPF бағдарламасының тексеру механизміне пайдаланылмаған кодты анықтау және жою мүмкіндігі қосылды. Ядро сонымен қатар BPF бағдарламаларының параллель орындалуын басқару үшін қосымша мүмкіндіктерді қамтамасыз ететін BPF ішкі жүйесі үшін спинлок қолдауы бар патчтарды қамтиды;
  • Жабдық
    • Nouveau жүргізуші қосылды процессор мен графикалық процессорға жалпы синхрондалған жад аймақтарына қол жеткізуге мүмкіндік беретін гетерогенді жадты басқаруды қолдау. Ортақ виртуалды жады жүйесі (SVM, ортақ виртуалды жад) HMM (гетерогенді жадты басқару) ішкі жүйесі негізінде жүзеге асырылады, ол өздерінің жадты басқару блоктары (MMU, жадты басқару блогы) бар құрылғыларды пайдалануға мүмкіндік береді, олар қол жеткізе алады. негізгі жады. Атап айтқанда, HMM көмегімен GPU мен CPU арасында ортақ мекенжай кеңістігін ұйымдастыруға болады, онда GPU процестің негізгі жадына қол жеткізе алады. SVM қолдауы қазіргі уақытта тек Паскаль отбасылық GPU үшін қосылған, дегенмен қолдау Volta және Turing GPU үшін де қамтамасыз етілген. Оның үстіне, Nouveau-да қосылды процесс жады аймақтарының GPU жадына көшуін басқару үшін жаңа ioctl;
    • GPU Skylake және одан кейінгі (ген9+) арналған Intel DRM драйверінде қосылды Әдепкі бойынша, fastboot режимі жүктеу кезінде қажет емес режим өзгерістерін болдырмайды. Қосылды новые Coffelake және Ice Lake микроархитектураларына негізделген құрылғы идентификаторлары. Coffelake чипсы үшін қосылды GVT қолдауы (GPU виртуализациясы). Виртуалды графикалық процессорлар үшін жүзеге асырылды VFIO EDID қолдауы. MIPI/DSI СКД панельдері үшін қосылды ACPI/PMIC элементтерін қолдау. Орындалды жаңа теледидар режимдері 1080p30/50/60 теледидар;
    • Amdgpu драйверіне Vega10/20 BACO GPU қолдауы қосылды. Vega 10/20 қуатты басқару және Vega 10 салқындатқышты басқару кестелері енгізілді. Пикассо графикалық процессорлары үшін жаңа PCI құрылғы идентификаторлары қосылды. Қосылды тығырықтан аулақ болу үшін жоспарланған тәуелділіктерді басқару интерфейсі;
    • Қосылды Экран үдеткіштеріне арналған 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 аудио платформасына қолдау қосылды;
    • Flash STMicroelectronics FMC2, Amlogic Meson NAND контроллерлеріне қолдау қосылды;
    • Habana AI аппараттық жүйелері үшін қосымша акселератор қолдауы;
    • NXP ENETC гигабиттік Ethernet контроллерлеріне және MediaTek MT7603E (PCIe) және MT76x8 сымсыз интерфейстеріне қолдау қосылды.

Бұл ретте Латын Америкасының еркін бағдарламалық қамтамасыз ету қоры қалыптасты
опция толығымен бос ядро ​​5.1 - Linux-libre 5.1-gnu, көлемін өндіруші шектейтін бос емес құрамдастарды немесе код бөлімдерін қамтитын микробағдарлама және драйвер элементтерінен тазартылған. Жаңа шығарылымда blob жүктеу mt7603 және goya драйверлерінде өшірілген. Wilc1000, iwlwifi, soc-acpi-intel, brcmfmac, mwifiex, btmrvl, btmtk және touchscreen_dmi драйверлері мен ішкі жүйелеріндегі жаңартылған blob тазалау коды. lantiq xrx200 микробағдарлама жүктеушісіндегі Blob тазалау оның ядродан жойылуына байланысты тоқтатылды.

Ақпарат көзі: opennet.ru

пікір қалдыру