Sakumpulan patch parantos diterbitkeun anu nyepetkeun ngawangun kernel Linux ku 50-80%

Ingo Molnar, pamekar kernel Linux anu kasohor sareng panulis penjadwal tugas CFS (Completely Fair Scheduler), ngusulkeun pikeun diskusi dina milis pamekar kernel Linux runtuyan patch anu mangaruhan langkung ti satengah sadaya file dina sumber kernel sareng nyadiakeun kanaékan laju hiji kernel diwangun deui ku 50-80% gumantung kana setélan. Optimasi anu dilaksanakeun kedah diperhatoskeun yén éta pakait sareng tambihan set parobihan panggedéna dina sajarah pamekaran kernel - 2297 patches diusulkeun pikeun dilebetkeun sakaligus, ngarobih langkung ti 25 rébu file (10 rébu file header dina "kalebet" // sareng "arch/*/include/" directories "sareng 15 rébu file sareng téks sumber).

Keuntungan kinerja dihontal ku cara ngarobih metode ngolah file header. Perhatikeun yén langkung ti tilu puluh taun pamekaran kernel, kaayaan file header parantos janten penampilan anu depresi kusabab ayana sajumlah ageung katergantungan silang antara file. Restructuring file lulugu nyandak leuwih ti sataun sarta merlukeun reworking signifikan tina hirarki sarta kagumantungan. Salila restructuring, karya dipigawé pikeun misahkeun definisi tipe sarta API pikeun subsistem kernel béda.

Diantara parobihan anu dilakukeun: misahkeun file lulugu tingkat luhur ti unggal anu sanés, ngaleungitkeun fungsi inline anu nyambungkeun file lulugu, misahkeun file lulugu pikeun jinis sareng API, mastikeun pangumpulan file lulugu anu misah (sakitar 80 file ngagaduhan katergantungan henteu langsung anu ngaganggu assembly, kakeunaan ngaliwatan file lulugu sejenna), tambahan otomatis tina kagumantungan kana file ".h" jeung ".c", step-demi-step optimasi file lulugu, pamakéan mode "CONFIG_KALLSYMS_FAST = y", konsolidasi selektif file C kana blok assembly ka ngurangan jumlah file obyék.

Hasilna, pagawéan anu dilakukeun ngamungkinkeun pikeun ngirangan ukuran file lulugu anu diolah dina tahap post-preprocessing ku 1-2 ordo gedéna. Contona, saméméh optimasi, ngagunakeun file lulugu "linux/gfp.h" hasilna ditambahan 13543 garis kode jeung citakan 303 file lulugu gumantung, sarta sanggeus optimasi ukuran ieu diréduksi jadi 181 garis jeung 26 file gumantung. Atawa conto sejen: nalika preprocessing file "kernel / pid.c" tanpa patch a, kaasup 94 sarébu garis kode, lolobana nu teu dipaké dina pid.c. Misahkeun file lulugu ngamungkinkeun pikeun ngurangan jumlah kode olahan ku tilu kali, ngurangan jumlah garis olahan nepi ka 36 sarébu.

Nalika kernel tos rengse diwangun deui jeung "nyieun -j96 vmlinux" paréntah dina sistem test, aplikasi patch némbongkeun hiji réduksi dina waktu ngawangun cabang v5.16-rc7 tina 231.34 ka 129.97 detik (ti 15.5 nepi ka 27.7 ngawangun). per jam), sarta ogé ngaronjat efisiensi ngagunakeun cores CPU salila majelis. Kalayan ngawangun incremental, pangaruh optimasi malah langkung katingali - waktos ngawangun deui kernel saatos parobihan kana file lulugu parantos turun sacara signifikan (tina 112% dugi ka 173% gumantung kana file lulugu anu dirobih). Optimizations ayeuna ngan sadia pikeun ARM64, MIPS, Sparc na x86 (32- jeung 64-bit) arsitéktur.

sumber: opennet.ru

Tambahkeun komentar