Linux ядросын құруды 50-80% жылдамдататын патчтар жинағы жарияланды.

Белгілі Linux ядросының әзірлеушісі және CFS (Completely Fair Scheduler) тапсырмаларын жоспарлаушының авторы Инго Молнар Linux ядросының әзірлеушісінің тарату тізімінде ядро ​​көздеріндегі барлық файлдардың жартысынан көбіне әсер ететін патчтар сериясын талқылауға ұсынды. параметрлерге байланысты ядроны толық қалпына келтіру жылдамдығын 50-80% арттыруды қамтамасыз етеді. Жүзеге асырылған оңтайландыру ядроның даму тарихындағы ең үлкен өзгерістер жиынтығын қосумен байланысты екенін атап өтуге болады - бірден 2297 мыңнан астам файлды өзгерте отырып, 25 патч қосу ұсынылды (10 мың тақырып файлдары «қосады /” және “arch/*/include/” каталогтары және бастапқы мәтіндері бар 15 мың файл).

Өнімділікке тақырып файлдарын өңдеу әдісін өзгерту арқылы қол жеткізіледі. Ядроның дамуының отыз жылдан астам уақытында тақырыптар файлдарының күйі файлдар арасында көптеген тәуелділіктердің болуына байланысты көңілсіз көрініске ие болғаны атап өтілген. Тақырып файлын қайта құрылымдау бір жылдан астам уақытты алды және иерархия мен тәуелділіктерді айтарлықтай қайта өңдеуді талап етті. Қайта құрылымдау кезінде әртүрлі ядролық ішкі жүйелер үшін типтік анықтамалар мен API интерфейстерін бөлу жұмыстары жүргізілді.

Енгізілген өзгерістердің ішінде: жоғары деңгейлі тақырып файлдарын бір-бірінен бөлу, тақырып файлдарын байланыстыратын кірістірілген функцияларды жою, тақырыптар файлдарын түрлер мен API интерфейстері үшін бөлу, тақырып файлдарының бөлек құрастырылуын қамтамасыз ету (шамамен 80 файлда жинаққа кедергі келтіретін жанама тәуелділіктер болды, олар басқа тақырып файлдары), «.h» және «.c» файлдарына тәуелділіктерді автоматты түрде қосу, тақырып файлдарын кезең-кезеңімен оңтайландыру, «CONFIG_KALLSYMS_FAST=y» режимін пайдалану, C файлдарын құрастыру блоктарына іріктеп біріктіру. нысан файлдарының санын азайту.

Нәтижесінде, орындалған жұмыс алдын ала өңдеуден кейінгі кезеңде өңделген тақырып файлдарының өлшемін 1-2 ретке азайтуға мүмкіндік берді. Мысалы, оңтайландыру алдында «linux/gfp.h» тақырып файлын пайдалану 13543 код жолын қосуға және 303 тәуелді тақырып файлын қосуға әкелді, ал оңтайландырудан кейін өлшем 181 жолға және 26 тәуелді файлға дейін қысқарды. Немесе басқа мысал: «kernel/pid.c» файлын патчсыз алдын ала өңдеу кезінде 94 мың жол код қосылады, олардың көпшілігі pid.c-те пайдаланылмайды. Тақырып файлдарын бөлу өңделген кодтың көлемін үш есе азайтуға, өңделген жолдар санын 36 мыңға дейін азайтуға мүмкіндік берді.

Сынақ жүйесінде «make -j96 vmlinux» пәрменімен ядро ​​толығымен қайта құрастырылған кезде, патчтарды қолдану v5.16-rc7 тармағының құрастыру уақытының 231.34-тен 129.97 секундқа (15.5-тен 27.7-ге дейін) қысқаруын көрсетті. сағатына), сонымен қатар жинақтау кезінде процессор өзектерін пайдалану тиімділігін арттырды. Инкрементті құрастыру кезінде оңтайландырудың әсері одан да байқалады - тақырып файлдарына өзгерістер енгізгеннен кейін ядроны қайта құру уақыты айтарлықтай қысқарды (өзгертілген тақырып файлына байланысты 112% -дан 173% -ға дейін). Оңтайландырулар қазіргі уақытта тек ARM64, MIPS, Sparc және x86 (32 және 64 бит) архитектуралары үшін қол жетімді.

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

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