Iseti yeepetshi zipapashiwe ezikhawulezisa ukwakhiwa kwe Linux kernel nge 50-80%

U-Ingo Molnar, umphuhlisi owaziwayo we-Linux kernel kunye nombhali we CFS (Umcwangcisi oFanelekileyo ngokugqibeleleyo) umcwangcisi wemisebenzi, ocetywayo ukuba kuxoxwe kuluhlu lokuposa lomphuhlisi we-Linux kernel uluhlu lweepatches ezichaphazela ngaphezulu kwesiqingatha sazo zonke iifayile kwimithombo ye-kernel kwaye ukubonelela ngokunyuka kwesantya se-kernel epheleleyo eyakhiwe kwakhona nge-50-80% ngokuxhomekeke kwizicwangciso. Ukulungiswa okuphunyeziweyo kuyaphawuleka kuba kubandakanya ukongezwa kweseti enkulu yotshintsho kwimbali yophuhliso lwe-kernel - iipatches ezingama-2297 zacetywa ukuba zifakwe kanye, zitshintshe ngaphezulu kweefayile ezingamawaka angama-25 (iifayile eziliwaka ezili-10 kwi-"include/" kunye ne-"arch/*/include/" abalawuli "kunye ne-15 lamawaka eefayile ezinemibhalo yomthombo).

Inzuzo yokusebenza ifezekiswa ngokutshintsha indlela yokucubungula iifayile zentloko. Kuphawulwe ukuba ngaphezu kweminyaka engamashumi amathathu yophuhliso lwe-kernel, imeko yeefayili zentloko ithathe imbonakalo edangeleyo ngenxa yobukho benani elikhulu lokuxhomekeka phakathi kweefayile. Uhlenga-hlengiso lwefayile olukumxholo luthathe ixesha elingaphezu konyaka kwaye lufuna ukusetyenzwa kwakhona okubalulekileyo koluhlu lwemigangatho nabaxhomekeke kuyo. Ngexesha lohlengahlengiso, umsebenzi wenziwa ukwahlula iinkcazo zohlobo kunye nee-APIs kwiinkqubo ezahlukeneyo zekernel.

Phakathi kweenguqu ezenziweyo: ukwahlula iifayile eziphezulu zentloko enye kwenye, ukuphelisa imisebenzi engaphakathi edibanisa iifayile zentloko, ukwahlula iifayile zentloko kwiintlobo kunye nee-APIs, ukuqinisekisa ukudityaniswa kweefayile ze-header (malunga neefayile ze-80 zixhomekeke ngokungathanga ngqo eziphazamisa ukuhlanganisana, eziveziweyo ezinye iifayile zeheader), ukongeza okuzenzekelayo kokuxhomekeka kwifayile ".h" kunye ".c" iifayile, ukuphuculwa kwenyathelo nenyathelo leefayili zeheader, ukusetyenziswa kwe "CONFIG_KALLSYMS_FAST=y" indlela, udibaniso olukhethiweyo lweefayile ze-C kwiibhloko zokudityaniswa ukunciphisa inani leefayile zento.

Ngenxa yoko, umsebenzi owenziweyo wenza ukuba kube lula ukunciphisa ubungakanani beefayili zentloko ezicutshungulwe kwinqanaba le-post-preprocessing nge-1-2 imiyalelo yobukhulu. Ngokomzekelo, ngaphambi kokulungiswa, ukusebenzisa ifayile ye-header "linux/gfp.h" kubangele ukongezwa kwemigca ye-13543 yekhowudi kunye nokufakwa kweefayile ze-303 ezixhomekeke kwintloko, kwaye emva kokuphucula ubungakanani buncitshiswe kwimigca ye-181 kunye neefayile ezixhomekeke kwi-26. Okanye omnye umzekelo: xa uprosesa kwangaphambili ifayile β€œkernel/pid.c” ngaphandle kwepetshi, 94 amawaka emigca yekhowudi ibandakanyiwe, uninzi lwayo olungasetyenziswa kwi pid.c. Ukwahlula iifayile zentloko kwenza ukuba kube lula ukunciphisa inani lekhowudi esetyenzisiweyo ngamaxesha amathathu, ukunciphisa inani lemigca eqhutywe kwi-36 lamawaka.

Xa i-kernel yakhiwe ngokupheleleyo ngomyalelo othi "make -j96 vmlinux" kwinkqubo yokuvavanya, ukusetyenziswa kweepatches kubonise ukunciphisa ixesha lokwakhiwa kwesebe le-v5.16-rc7 ukusuka kwi-231.34 ukuya kwi-129.97 imizuzwana (ukusuka kwi-15.5 ukuya kwi-27.7 yakha yakha ngeyure), kwaye yandise ukusebenza kakuhle kokusebenzisa ii-CPU cores ngexesha leendibano. Ngokwakhiwa okunyukayo, umphumo wokuphucula ubonakala ngakumbi - ixesha lokwakha kwakhona i-kernel emva kokwenza utshintsho kwiifayile zentloko liye lancipha kakhulu (ukusuka kwi-112% ukuya kwi-173% kuxhomekeke kwifayile yentloko eguqulwayo). ULungiselelo okwangoku lufumaneka kuphela kwi-ARM64, MIPS, Sparc kunye ne-x86 (32- kunye ne-64-bit) yoyilo lwezakhiwo.

umthombo: opennet.ru

Yongeza izimvo