Et sæt patches er blevet offentliggjort, som accelererer byggeriet af Linux-kernen med 50-80%.

Ingo Molnar, en velkendt udvikler af Linux-kernen og skaberen af CFS (Completely Fair Scheduler), har foreslået en række patches til diskussion på mailinglisten for Linux-kernens udviklere. Disse patches påvirker mere end halvdelen af alle filer i kildekoden til kernen og sikrer en stigning i hastigheden for en fuld genbygning af kernen med 50-80% afhængigt af indstillingerne. Den implementerede optimering er bemærkelsesværdig, da den involverer den største samling af ændringer i kernen nogensinde - i alt 2297 patches er blevet foreslået, som ændrer over 25.000 filer (10.000 header-filer i mapperne "include/" og "arch/*/include/" samt 15.000 kildefiler).

Forbedringen i ydeevnen opnås gennem ændringer i metoden til håndtering af header-filer. Det bemærkes, at tilstanden for header-filerne efter tre decennier med udvikling af kernen er blevet skuffende på grund af et stort antal krydsafhængigheder mellem filerne. Arbejdet med at omstrukturere header-filerne tog mere end et år og krævede betydelig omarbejdning af hierarkiet og afhængighederne. I løbet af omstruktureringen blev der udført arbejde for at adskille definitioner af typer og API'er for forskellige subsystemer i kernen.

Blandt de ændringer, der blev gennemført, er: adskillelse af højniveau header-filer fra hinanden, udelukkelse af inline-funktioner i bindende header-filer, oprettelse af header-filer for typer og API'er, sikring af adskilt bygning af header-filer (omkring 80 filer havde forstyrrende indirekte afhængigheder, der blev præsenteret gennem andre header-filer), automatisk tilføjelse af afhængigheder til filerne ".h" og ".c", trinvis optimering af header-filerne, brug af "CONFIG_KALLSYMS_FAST=y" -indstillingen, og selektiv konsolidering af C-filer i byggemoduler for at reducere antallet af objektfiler.

Som resultatet af det udførte arbejde er det muligt at reducere størrelsen af de header-filer, der behandles i post-præprocesseringsfasen, med 1-2 ordrer. For eksempel før optimering førte brugen af header-filen "linux/gfp.h" til tilføjelsen af 13543 linjer kode og involvering af 303 afhængige header-filer, mens størrelsen efter optimering blev reduceret til 181 linjer og 26 afhængige filer. Et andet eksempel: under præprocesseringen af filen "kernel/pid.c" uden patch inkluderes 94 tusinde linjer kode, hvoraf størstedelen ikke anvendes i pid.c. Opdelingen af header-filerne gjorde det muligt at reducere mængden af behandlet kode med tre gange, hvilket sænkede antallet af behandlede linjer til 36 tusinde.

Ved fuld genkompilering af kernen med kommandoen "make -j96 vmlinux" på testsystemet viste anvendelsen af patches et fald i kompileringstiden for gren v5.16-rc7 fra 231,34 til 129,97 sekunder (fra 15,5 til 27,7 kompileringer i timen) og forbedrede også effektiviteten af CPU-kernens brug under kompilering. Ved inkrementel kompilering er effekten af optimeringen endnu mere mærkbar - tiden til genkompilering af kernen efter ændringer i header-filerne blev reduceret betydeligt (fra 112% til 173% afhængigt af den ændrede header-fil). Optimeringerne er endnu kun tilgængelige for arkitekturerne ARM64, MIPS, Sparc og x86 (32- og 64-bit).

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster