Објављен је сет закрпа које убрзавају изградњу Линук кернела за 50-80%

Инго Молнар, познати програмер Линук кернела и аутор ЦФС (Цомплетели Фаир Сцхедулер) планера задатака, предложио је за дискусију на листи за слање Линук кернела низ закрпа које утичу на више од половине свих датотека у изворима кернела и обезбеђују повећање брзине комплетне реконструкције кернела за 50-80% у зависности од подешавања. Примењена оптимизација је вредна пажње по томе што укључује додавање највећег скупа промена у историји развоја кернела - 2297 закрпа је предложено за укључивање одједном, мењајући више од 25 хиљада датотека (10 хиљада датотека заглавља у „инцлуде/“ и „арцх/*/инцлуде/” директоријуми „и 15 хиљада датотека са изворним текстовима).

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

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

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

Када је кернел у потпуности обновљен командом „маке -ј96 вмлинук“ на тест систему, примена закрпа је показала смањење времена изградње гране в5.16-рц7 са 231.34 на 129.97 секунди (са 15.5 на 27.7 буилд-ова на сат), а такође је повећала ефикасност коришћења ЦПУ језгара током склапања. Са инкременталном градњом, ефекат оптимизације је још уочљивији – време за поновну изградњу кернела након уношења измена у датотеке заглавља значајно се смањило (са 112% на 173% у зависности од датотеке заглавља која се мења). Оптимизације су тренутно доступне само за АРМ64, МИПС, Спарц и к86 (32- и 64-битне) архитектуре.

Извор: опеннет.ру

Додај коментар