Usa ka hugpong sa mga patch ang gipatik nga nagpadali sa pagtukod sa Linux kernel sa 50-80%

Si Ingo Molnar, usa ka inila nga Linux kernel developer ug awtor sa CFS (Completely Fair Scheduler) task scheduler, misugyot alang sa diskusyon sa Linux kernel developer mailing list usa ka serye sa mga patch nga makaapekto sa labaw sa katunga sa tanang mga file sa kernel sources ug paghatag usa ka pagtaas sa katulin sa usa ka kompleto nga pagtukod pag-usab sa kernel sa 50-80% depende sa mga setting. Ang gipatuman nga pag-optimize hinungdanon tungod kay kini adunay kalabotan sa pagdugang sa labing kadaghan nga mga pagbag-o sa kasaysayan sa pag-uswag sa kernel - 2297 nga mga patch ang gisugyot nga ilakip dayon, nga nagbag-o labaw sa 25 ka libo nga mga file (10 ka libo nga mga file sa header sa "lakip ang // ug "arch/*/include/" directory "ug 15 thousand files with source texts).

Ang kadaugan sa pasundayag makab-ot pinaagi sa pagbag-o sa pamaagi sa pagproseso sa mga file sa header. Namatikdan nga kapin sa katloan ka tuig nga pag-uswag sa kernel, ang kahimtang sa mga file sa header nakakuha sa usa ka makapasubo nga hitsura tungod sa presensya sa daghang mga cross-dependencies tali sa mga file. Ang pag-usab sa header file mikuha ug kapin sa usa ka tuig ug nanginahanglan ug mahinungdanong reworking sa hierarchy ug dependencies. Atol sa pagbag-o, gihimo ang trabaho aron mabulag ang mga kahulugan sa tipo ug mga API alang sa lainlaing mga subsystem sa kernel.

Lakip sa mga pagbag-o nga gihimo: pagbulag sa taas nga lebel nga mga file sa header gikan sa usag usa, pagwagtang sa mga inline nga function nga nag-link sa mga file sa header, pagbulag sa mga file sa header alang sa mga tipo ug mga API, pagsiguro nga bulag nga asembliya sa mga file sa header (mga 80 nga mga file adunay dili direkta nga mga dependency nga nakabalda sa asembliya, gibutyag pinaagi sa uban pang mga file sa header), awtomatik nga pagdugang sa mga dependency sa ".h" ug ".c" nga mga file, sunod-sunod nga pag-optimize sa mga file sa header, paggamit sa "CONFIG_KALLSYMS_FAST=y" mode, pinili nga pagkonsolida sa mga file sa C ngadto sa mga bloke sa asembliya aron pagpakunhod sa gidaghanon sa mga butang file.

Ingon usa ka sangputanan, ang trabaho nga nahimo nagpaposible sa pagpakunhod sa gidak-on sa mga file sa header nga giproseso sa yugto sa post-preprocessing pinaagi sa 1-2 nga mga order sa kadako. Pananglitan, sa wala pa ang pag-optimize, ang paggamit sa header file nga "linux/gfp.h" miresulta sa pagdugang sa 13543 nga mga linya sa code ug ang paglakip sa 303 nga nagsalig nga mga file sa header, ug pagkahuman sa pag-optimize ang gidak-on gipamubu sa 181 nga linya ug 26 nga nagsalig nga mga file. O lain nga pananglitan: kung gi-preprocess ang file nga "kernel/pid.c" nga wala’y patch, 94 ka libo nga linya sa code ang gilakip, kadaghanan niini wala gigamit sa pid.c. Ang pagbulag sa mga file sa header nagpaposible nga makunhuran ang kantidad sa giproseso nga code sa tulo ka beses, nga nakunhuran ang gidaghanon sa mga naproseso nga linya sa 36 ka libo.

Sa diha nga ang kernel hingpit nga natukod pag-usab uban sa "make -j96 vmlinux" nga sugo sa usa ka sistema sa pagsulay, ang paggamit sa mga patch nagpakita sa pagkunhod sa panahon sa pagtukod sa v5.16-rc7 nga sanga gikan sa 231.34 ngadto sa 129.97 ka segundos (gikan sa 15.5 ngadto sa 27.7 nga pagtukod. kada oras), ug gipadako usab ang kaepektibo sa paggamit sa mga core sa CPU sa panahon sa mga asembliya. Uban sa usa ka incremental nga pagtukod, ang epekto sa pag-optimize mas mamatikdan - ang panahon sa pagtukod pag-usab sa kernel human sa paghimo sa mga pagbag-o sa mga file sa header mikunhod pag-ayo (gikan sa 112% ngadto sa 173% depende sa header file nga giusab). Ang mga pag-optimize sa pagkakaron anaa lamang alang sa ARM64, MIPS, Sparc ug x86 (32- ug 64-bit) nga mga arkitektura.

Source: opennet.ru

Idugang sa usa ka comment