In set patches is publisearre dy't de bou fan 'e Linux-kernel fersnelle mei 50-80%

Ingo Molnar, in bekende Linux-kernelûntwikkelder en skriuwer fan 'e CFS (Completely Fair Scheduler) taakplanner, stelde foar diskusje oer de mailinglist foar Linux kernel-ûntwikkelders in searje patches foar dy't mear as de helte fan alle bestannen yn 'e kernelboarnen beynfloedzje en soargje foar in ferheging fan 'e snelheid fan in folsleine kernel opnij mei 50-80% ôfhinklik fan ynstellings. De ymplemintearre optimalisaasje is opmerklik om't it is assosjearre mei de tafoeging fan 'e grutste set feroaringen yn' e skiednis fan kernelûntwikkeling - 2297 patches waarden foarsteld foar opnimmen tagelyk, feroarjen fan mear as 25 tûzen bestannen (10 tûzen koptekstbestannen yn 'e "omfette /” en “arch/*/include/”-mappen "en 15 tûzen bestannen mei boarneteksten).

De prestaasjeswinst wurdt berikt troch it feroarjen fan de metoade foar it ferwurkjen fan koptekstbestannen. It wurdt opmurken dat mear as tritich jier fan kernelûntwikkeling de steat fan 'e koptekstbestannen in deprimearjend uterlik hat krigen fanwegen de oanwêzigens fan in grut oantal krúsôfhinklikens tusken bestannen. De werstrukturearring fan 'e koptekst bestân naam mear as in jier en easke wichtige werwurking fan' e hiërargy en ôfhinklikens. Tidens de werstrukturearring waard wurk dien om typedefinysjes en API's te skieden foar ferskate kernel-subsystemen.

Under de wizigingen dy't makke binne: koptekstbestannen op hege nivo fan elkoar skieden, ynline-funksjes eliminearje dy't koptekstbestannen keppelje, koptekstbestannen skiede foar typen en API's, soargje foar aparte gearstalling fan koptekstbestannen (sawat 80 bestannen hienen yndirekte ôfhinklikens dy't ynterferearje mei gearstalling, bleatsteld fia oare koptekstbestannen), automatyske tafoeging fan ôfhinklikens oan ".h" en ".c" bestannen, stap-foar-stap optimisaasje fan koptekstbestannen, gebrûk fan 'e modus "CONFIG_KALLSYMS_FAST=y", selektive konsolidaasje fan C-bestannen yn assemblageblokken om ferminderje it oantal objekt triemmen.

As gefolch hat it dien wurk it mooglik makke om de grutte fan koptekstbestannen ferwurke yn it post-foarferwurkingsstadium te ferminderjen mei 1-2 oarders fan grutte. Bygelyks, foar optimisaasje, it brûken fan de kopteksttriem "linux/gfp.h" resultearre yn de tafoeging fan 13543 rigels koade en it opnimmen fan 303 ôfhinklike koptekstbestannen, en nei optimalisaasje waard de grutte fermindere nei 181 rigels en 26 ôfhinklike bestannen. Of in oar foarbyld: by it foarferwurkjen fan it bestân "kernel/pid.c" sûnder patch, binne 94 tûzen rigels koade opnommen, wêrfan de measte net brûkt wurde yn pid.c. It skieden fan de koptekstbestannen makke it mooglik om it bedrach fan ferwurke koade troch trije kear te ferminderjen, it oantal ferwurke rigels te ferminderjen nei 36 tûzen.

Doe't de kernel folslein werboud waard mei it kommando "make -j96 vmlinux" op in testsysteem, liet de tapassing fan patches in reduksje sjen yn 'e boutiid fan' e v5.16-rc7-tûke fan 231.34 nei 129.97 sekonden (fan 15.5 nei 27.7 builds per oere), en fergrutte ek de effisjinsje fan it brûken fan CPU-kearnen tidens gearkomsten. Mei in ynkrementele build is it effekt fan optimalisaasje noch merkberder - de tiid om de kernel opnij te bouwen nei it meitsjen fan wizigingen yn 'e koptekstbestannen is signifikant fermindere (fan 112% nei 173% ôfhinklik fan it koptekstbestân dat feroare wurdt). Optimisaasjes binne op it stuit allinich beskikber foar ARM64, MIPS, Sparc en x86 (32- en 64-bit) arsjitektuer.

Boarne: opennet.ru

Add a comment