Een set patches is gepubliceerd die de compilatietijd van de Linux-kern met 50-80% versnelt.

Ingo Molnar, een bekende ontwikkelaar van de Linux-kern en auteur van de Completely Fair Scheduler (CFS), heeft voor discussie in de mailinglijst van de Linux-kernelontwikkelaars een serie patches voorgesteld die meer dan de helft van alle bestanden in de broncode van de kern raken en die een versnelling van de volledige hercompilatie van de kern met 50-80% mogelijk maken, afhankelijk van de instellingen. De geĆÆmplementeerde optimalisatie is opmerkelijk omdat deze gepaard gaat met de toevoeging van de grootste set wijzigingen in de geschiedenis van de ontwikkeling van de kern — er zijn 2297 patches voorgesteld die meer dan 25.000 bestanden wijzigen (10.000 headerbestanden in de mappen "include/" en "arch/*/include/" en 15.000 bronbestanden).

De prestatieverbetering wordt bereikt door de methode van het verwerken van headerbestanden te wijzigen. Het wordt opgemerkt dat in dertig jaar ontwikkeling van de kern de toestand van headers zich in een treurige staat heeft ontwikkeld door de vele kruisafhankelijkheden tussen bestanden. Het werk aan de herstructurering van de headerbestanden heeft meer dan een jaar geduurd en vereiste een aanzienlijke herwerking van de hiƫrarchie en afhankelijkheden. Tijdens de herstructurering is er gewerkt aan het scheiden van type- en API-definities voor verschillende subsysteem van de kern.

Onder de aangebrachte wijzigingen zijn: de scheiding van high-level headerbestanden van elkaar, het uitsluiten van bindende headerbestanden voor inline-functies, het creƫren van headerbestanden voor types en API's, het mogelijk maken van afzonderlijke compilatie van headerbestanden (ongeveer 80 bestanden hadden hinderlijke indirecte afhankelijkheden die via andere headerbestanden werden aangegeven), automatische afhankelijkheid toegevoegen aan bestanden met ".h" en ".c", stapsgewijze optimalisatie van headerbestanden, gebruik van de modus "CONFIG_KALLSYMS_FAST=y", en selectieve consolidatie van C-bestanden in bouwblokken om het aantal objectbestanden te verminderen.

Uiteindelijk stelde het uitgevoerde werk ons in staat om de grootte van de headerbestanden die in de postprocessing-fase worden verwerkt met 1-2 ordes te verkleinen. Bijvoorbeeld, vóór de optimalisatie leidde het gebruik van de headerfile 'linux/gfp.h' tot het toevoegen van 13543 regels code en het verbinden van 303 afhankelijke headerbestanden, terwijl de grootte na de optimalisatie werd teruggebracht tot 181 regels en 26 afhankelijke bestanden. Of een ander voorbeeld: bij de preprocessing van het bestand 'kernel/pid.c' zonder patch worden 94 duizend regels code geladen, waarvan het merendeel niet wordt gebruikt in pid.c. Het splitsen van headerbestanden resulteerde in een vermindering van de verwerkte code met een factor drie, waardoor het aantal te verwerken regels werd verlaagd tot 36 duizend.

Bij een volledige herbouw van de kernel met het commando 'make -j96 vmlinux' op het testsysteem, toonden de toepassing van patches een vermindering van de bouwtijd voor tak v5.16-rc7 van 231,34 naar 129,97 seconden (van 15,5 naar 27,7 builds per uur), en verhoogde ook de efficiƫntie van het gebruik van CPU-kernen tijdens de bouw. Bij incrementele builds is het effect van de optimalisatie nog merkbaarder - de tijd voor het opnieuw bouwen van de kernel na wijzigingen in de headerbestanden is drastisch verminderd (van 112% tot 173%, afhankelijk van het gewijzigde headerbestand). Optimalisaties zijn momenteel alleen beschikbaar voor de architecturen ARM64, MIPS, Sparc en x86 (32- en 64-bits).

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster