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

Инго Молнар, Linux ядросының белгілі әзірлеушісі және CFS Task Scheduler авторы Linux ядросын әзірлеудің тарату тізімін талқылауға ядро ​​көзіндегі барлық файлдардың жартысынан көбіне әсер ететін және конфигурацияға байланысты ядроны қайта құрудың жалпы жылдамдығын 50 -80% арттыруды қамтамасыз ететін патчтар сериясын ұсынды.

Орындалған оңтайландыру елеулі, себебі ол өзгерістердің ең үлкен жиынтығын қосумен байланысты ядроның даму тарихында - олар 2297 мыңнан астам файлды өзгерте отырып, бірден 25 патчты қосуды ұсынды.

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

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

Мен 2020 жылдың аяғынан бері жұмыс істеп келе жатқан жаңа «Жылдам ядро ​​тақырыптары» жобасының бірінші жалпыға қолжетімді шығарылымын хабарлауға қуаныштымын, ол Linux ядросының тақырып иерархиясы мен тақырып тәуелділіктерін екі есе мақсатты түрде қайта өңдеу болып табылады. :

- ядроны құруды жылдамдату (абсолютті және қосымша құрастыру уақыттары)

– ішкі жүйе түрі мен API анықтамаларын бір-бірінен ажырату

Көптеген ядро ​​әзірлеушілері білетіндей, Linux ядросында қосу / және arch/*/include/ иерархияларында шамамен 10,000 30 негізгі .h тақырыптары бар. Соңғы XNUMX жылдан астам уақыт ішінде олар біз «тәуелділік тозағы» деп атайтын күрделі және ауыр тәуелділіктердің жиынтығына айналды.

Енгізілген өзгерістердің арасында: жоғары деңгейлі тақырып файлдарын бір-бірінен бөлу, тақырып файлдарын байланыстыратын кірістірілген функцияларды алып тастау, түрлер мен 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-тен XNUMX-ге дейін) қысқаруын көрсетті. сағатына құрастырылады), сонымен қатар құрастыру кезінде CPU ядросын пайдалану тиімділігін арттырды.

Инкрементті құрастыру кезінде оңтайландыру әсері одан да байқалады: тақырып файлдарына өзгерістер енгізгеннен кейін ядроны қайта құру уақыты айтарлықтай қысқарды (өзгертілетін тақырып файлына байланысты 112%-дан 173%-ға дейін) .

Оңтайландырулар қазіргі уақытта тек ARM64, MIPS, Sparc және x86 (32-бит және 64-бит) архитектуралары үшін қол жетімді.

Финляндия егер сіз бұл туралы көбірек білгіңіз келсе, егжей-тегжейін тексере аласыз келесі сілтеме.


Мақаланың мазмұны біздің ұстанымдарымызды ұстанады редакторлық этика. Қате туралы хабарлау үшін нұқыңыз Мұнда.

Бірінші болып пікір айтыңыз

Пікіріңізді қалдырыңыз

Сіздің электрондық пошта мекен-жайы емес жарияланады.

*

*

  1. Деректерге жауапты: Мигель Анхель Гатан
  2. Деректердің мақсаты: СПАМ-ны басқару, түсініктемелерді басқару.
  3. Заңдылық: Сіздің келісіміңіз
  4. Деректер туралы ақпарат: заңды міндеттемелерді қоспағанда, деректер үшінші тұлғаларға жіберілмейді.
  5. Деректерді сақтау: Occentus Networks (ЕО) орналастырған мәліметтер базасы
  6. Құқықтар: Сіз кез-келген уақытта ақпаратты шектей, қалпына келтіре және жоя аласыз.