Sakumpulan patch wis diterbitake sing nyepetake pambangunan kernel Linux kanthi 50-80%

Ingo Molnar, pangembang kernel Linux sing kondhang lan panulis penjadwal tugas CFS (Completely Fair Scheduler), ngusulake kanggo diskusi ing dhaptar milis pangembang kernel Linux seri patch sing mengaruhi luwih saka setengah kabeh file ing sumber kernel lan nyediakake Tambah ing kacepetan mbangun kernel lengkap 50-80% gumantung setelan. Optimasi sing diimplementasikake kudu digatekake amarga ana gandhengane karo tambahan owah-owahan paling gedhe ing sejarah pangembangan kernel - 2297 patch diusulake kanggo dilebokake bebarengan, ngganti luwih saka 25 ewu file (10 ewu file header ing "kalebu" // lan "arch/*/include/" direktori "lan 15 ewu file kanthi teks sumber).

Keuntungan kinerja digayuh kanthi ngganti cara ngolah file header. Kacathet yen luwih saka telung puluh taun pangembangan kernel, kahanan file header wis katon suram amarga ana akeh dependensi silang antarane file. Restrukturisasi file header njupuk luwih saka setahun lan mbutuhake reworking sing signifikan saka hirarki lan dependensi. Sajrone restrukturisasi, karya wis rampung kanggo misahake definisi jinis lan API kanggo subsistem kernel beda.

Antarane owah-owahan sing digawe: misahake file header tingkat dhuwur saka saben liyane, mbusak fungsi inline sing ngubungake file header, misahake file header kanggo jinis lan API, mesthekake perakitan file header sing kapisah (udakara 80 file duwe dependensi ora langsung sing ngganggu perakitan, katon liwat file header liyane), tambahan otomatis dependensi menyang file ".h" lan ".c", optimasi langkah demi langkah file header, nggunakake mode "CONFIG_KALLSYMS_FAST=y", konsolidasi selektif file C dadi blok perakitan kanggo nyuda jumlah file obyek.

AkibatΓ©, karya sing ditindakake bisa nyuda ukuran file header sing diproses ing tahap pasca-preprocessing kanthi 1-2 urutan gedhene. Contone, sadurunge optimasi, nggunakake file header "linux/gfp.h" ngasilake tambahan 13543 baris kode lan kalebu 303 file header gumantung, lan sawise optimasi ukuran suda kanggo 181 baris lan 26 file gumantung. Utawa conto liyane: nalika preprocessing file "kernel / pid.c" tanpa tembelan, 94 ewu baris kode klebu, paling kang ora digunakake ing pid.c. Misahake file header bisa nyuda jumlah kode sing diproses kanthi kaping telu, nyuda jumlah baris sing diproses dadi 36 ewu.

Nalika kernel rampung dibangun maneh karo printah "make -j96 vmlinux" ing sistem test, aplikasi patch nuduhake nyuda wektu mbangun cabang v5.16-rc7 saka 231.34 kanggo 129.97 detik (saka 15.5 kanggo 27.7 mbangun. saben jam), lan uga nambah efisiensi nggunakake inti CPU sajrone majelis. Kanthi mbangun tambahan, efek optimasi malah luwih katon - wektu kanggo mbangun maneh kernel sawise ngowahi file header wis suda banget (saka 112% dadi 173% gumantung saka file header sing diganti). Optimizations saiki mung kasedhiya kanggo ARM64, MIPS, Sparc lan x86 (32- lan 64-dicokot) arsitektur.

Source: opennet.ru

Add a comment