Фаст Кернел Хеадерс, сет закрпа које убрзавају компилацију кернела за 50-80%

Инго Молнар, познати програмер Линук кернела и аутор ЦФС Таск Сцхедулер предложио је за дискусију о маилинг листи за развој Линук кернела бројне закрпе, које утичу на више од половине свих датотека у изворном коду кернела и обезбеђују укупно повећање брзине реконструкције кернела од 50 -80% у зависности од конфигурације.

Оптимизација је спроведена је приметно по томе што је повезано са додатком највећег скупа промена у историји развоја кернела: планирали су да укључе 2297 закрпа одједном, мењајући више од 25 хиљада датотека.

Добитак перформанси се постиже променом метода руковања заглављем. Треба напоменути да је током тридесет година развоја кернела стање датотека заглавља попримило суморни облик због присуства великог броја унакрсних зависности између фајлова.

Реструктурирање датотека заглавља је трајало више од годину дана и захтевао значајан редизајн хијерархије и зависности. Током реструктурирања, радило се на раздвајању дефиниција типа и АПИ-ја за различите подсистеме кернела.

Задовољство ми је да најавим прву јавну верзију мог новог пројекта „Брза заглавља језгра“ на којем радим од краја 2020. године, а који представља свеобухватну прераду хијерархије заглавља Линук кернела и зависности заглавља, са двоструким циљем:

- убрзати изградњу језгра (и апсолутна и инкрементална времена изградње)

- типско раздвајање подсистема и дефиниција АПИ-ја један од другог

Као што већина програмера кернела зна, постоји око 10,000 главних .х заглавља у Линук кернелу, у хијерархијама инцлуде / и арцх / * / инцлуде /. Током последњих 30+ година, они су еволуирали у компликован и болан скуп унакрсних зависности које ми од миља зовемо „пакао зависности“.

Међу направљеним изменама су: раздвајање датотека заглавља високог нивоа једна од друге, искључивање инлине функција које повезују датотеке заглавља, мапирање датотека заглавља за типове и АПИ-је, обезбеђивање посебног скупа датотека заглавља (око 80 фајлова је имало индиректне зависности које ометају склапање, изложене кроз друге фајлове заглавља), аутоматско додавање зависности у Датотеке „.х“ и „.ц“, оптимизација датотека заглавља корак по корак, коришћење режима „ЦОНФИГ_КАЛЛСИМС_ФАСТ = и“, селективна консолидација Ц фајлова у склопове за смањење броја објектних датотека.

Као резултат, обављени посао је омогућио смањење величине обрађених датотека заглављау фази накнадне обраде за 1-2 реда величине.

  • На пример, пре оптимизације, коришћење фајла заглавља „линук/гфп.х“ резултирало је додавањем 13543 реда кода и укључивањем 303 зависне датотеке заглавља, а након оптимизације величина је смањена на 181 линију и 26 зависних датотека.
  • Други пример: предобрада незакрпљене датотеке „кернел / пид.ц“ повезује 94 хиљаде линија кода, од којих се већина не користи у пид.ц. Подела датотека заглавља нам је омогућила да три пута смањимо количину обрађеног кода, смањујући број обрађених линија на 36.

Када је језгро потпуно обновљено командом „маке -ј96 вмлинук“ на тест систему, закрпа је показала смањење времена компајлирања гране в5.16-рц7 са 231,34 на 129,97, 15,5 секунди (са 27,7 на XNUMX буилд-ова по сат) и такође повећала ефикасност коришћења језгра ЦПУ-а током изградње.

Са инкременталном компилацијом, ефекат оптимизације је још уочљивији: време за поновну изградњу кернела након уношења измена у датотеке заглавља је значајно смањено (са 112% на 173%, у зависности од датотеке заглавља која се мења).

Оптимизације су тренутно доступне само за АРМ64, МИПС, Спарц и к86 (32-битне и 64-битне) архитектуре.

Фино ако сте заинтересовани да сазнате више о томе, детаље можете погледати у следећи линк.


Оставите свој коментар

Ваша емаил адреса неће бити објављена. Обавезна поља су означена са *

*

*

  1. За податке одговоран: Мигуел Ангел Гатон
  2. Сврха података: Контрола нежељене поште, управљање коментарима.
  3. Легитимација: Ваш пристанак
  4. Комуникација података: Подаци се неће преносити трећим лицима, осим по законској обавези.
  5. Похрана података: База података коју хостује Оццентус Нетворкс (ЕУ)
  6. Права: У било ком тренутку можете ограничити, опоравити и избрисати своје податке.