Nytårsrengøring i Linux-headerfiler giver op til 80 procent hurtigere kompilering af kernen

4. januar 2022 kl. 16:126
Nytårsrengøring i Linux-headerfiler giver op til 80 procent hurtigere kompilering af kernen
Illustration: © Sergii Broshevan .
Kerneudvikler foreslår 2.200 ændringer, som vil sætte 'et helvede af afhængigheder' på porten.
Artiklen er ældre end 30 dage
Manglende links i teksten kan sandsynligvis findes i bunden af artiklen.

Med et omfang på 27,8 millioner linjer kode i Linux-kernen er der ikke noget at sige til, at der har samlet sig lidt lommeuld hist og her.

Det vil den ungarske kerneudvikler Ingo Molnar gøre noget ved. Ifølge Zdnet og et indlæg fra Ingo Molnar er målet en omfattende oprydning og omarbejdning af Linux-kernens header-hierarki og headerfilernes indbyrdes afhængigheder.

En headerfil i C specificerer en funktions signatur, lidt på samme måde som et interface i andre sprog. Linux indeholder omkring 10.000 primære headerfiler i kernen.

»I løbet af de sidste mere end 30 år er de vokset til et kompliceret og smertefuldt sæt af krydsafhængigheder, som vi kærligt kalder 'Dependency Hell',« skriver Ingo Molnar i sit indlæg.

Artiklen fortsætter efter annoncen

Han foreslår som løsning at foretage 2.200 commit-ændringer i koden.

»Da jeg startede projektet i slutningen af 2020, forventede jeg, at der måske ville være 50-100 patches. Jeg foretog et par grove målinger, der viste, at der kunne opnås en forbedring af build-hastigheden på ca. 20 procent ved at reducere header-afhængigheder uden at have en væsentlig kørselstidseffekt på kernen. Det virkede væsentligt nok til at retfærdiggøre 50-100 commits.«

Det gav dog ikke den forventede forbedring, så Ingo Molnar øgede antallet af patches - kodeændringer- til 1.000, som gav 10 procents bedre ydelse. Da han ramte 1.500 rettelser, nåede tallet 20 procents forbedring i kompileringstid. I dag har han nået en ydelsesforbedring på mellem 50 til 80 procent.

Det vil kræve en del arbejde at få ændringerne i hus i det officielle kodetræ, men Greg Kroah-Hartman, som vedligeholder den stabile udgave af kernen, kan godt se fidusen i projektet.

Opdateret kl. 11.50. Det fremgik tidligere, at ydelsesforbedringen var på 20 procent. Tallet er nu rettet.

6 kommentarer.  Hop til debatten
Denne artikel er gratis...

...men det er dyrt at lave god journalistik. Derfor beder vi dig overveje at tegne abonnement på Version2.

Digitaliseringen buldrer derudaf, og it-folkene tegner fremtidens Danmark. Derfor er det vigtigere end nogensinde med et kvalificeret bud på, hvordan it bedst kan være med til at udvikle det danske samfund og erhvervsliv.

Og der har aldrig været mere akut brug for en kritisk vagthund, der råber op, når der tages forkerte it-beslutninger.

Den rolle har Version2 indtaget siden 2006 - og det bliver vi ved med.

Debatten
Log ind eller opret en bruger for at deltage i debatten.
settingsDebatindstillinger
5
5. januar 2022 kl. 15:26

Hu hej, hvor det går. Det er nu også rettet.

Mvh Tania/V2

4
5. januar 2022 kl. 13:36

i og med totalen (som korrekt angivet i artiklen) er 2.200 rettelser (commits) - så er tallet 1.500 ;)

3
5. januar 2022 kl. 13:28

Hvor meget er 1.5000? Jeg tror der enten skal stå 1.500 eller 15.000.

2
5. januar 2022 kl. 11:51

Korrekt - vi retter. Tak.

Mvh Tania/V2

1
5. januar 2022 kl. 11:09

se fra forfatteren selv https://lwn.net/ml/linux-kernel/YdIfz+LMewetSaEB@gmail.com/

"and i then arrived at my current 78%" - og fra kommentarer ( på https://lwn.net/Articles/880175/ ) ser man at det varierer mellem 50-80% afhængig af config på kernen.

Kommentarer på LWN artikler er typisk fra forfatterne bag koden og folk der også er kerne programmører - og alle abonnementer på lwn.net :)

p.s. Er i abonnent på LWN.net? Det er super billigt, man bestemmer selv pris og så får i ALT det vigtige om Linux/BSD verdenen først og i super god kvalitet)