E Set vu Patches gouf publizéiert déi de Bau vum Linux Kernel ëm 50-80% beschleunegen

Den Ingo Molnar, e bekannte Linux Kernel Entwéckler an Autor vum CFS (Completely Fair Scheduler) Task Scheduler, huet fir Diskussioun iwwer d'Linux Kernel Entwéckler Mailing Lëscht eng Serie vu Patches proposéiert, déi méi wéi d'Halschent vun alle Dateien an de Kernelquellen beaflossen an eng Erhéijung vun der Geschwindegkeet vun enger kompletter Kernelopbau ëm 50-80% ofhängeg vun den Astellungen. Déi implementéiert Optimiséierung ass bemierkenswäert datt et d'Zousatz vun de gréisste Set vun Ännerungen an der Geschicht vun der Kernelentwécklung involvéiert - 2297 Patches goufen gläichzäiteg fir Inklusioun proposéiert, méi wéi 25 Tausend Dateien änneren (10 Tausend Headerdateien an der "Include/" an "arch/*/include/" Verzeichnungen "a 15 Tausend Dateien mat Quelltexter).

De Leeschtungsgewënn gëtt erreecht andeems d'Method vun der Veraarbechtung vun Headerdateien geännert gëtt. Et gëtt bemierkt datt iwwer drësseg Joer Kernelentwécklung den Zoustand vun den Headerdateien en depriméierende Erscheinungsbild kritt huet wéinst der Präsenz vun enger grousser Zuel vu Kräizabhängegkeeten tëscht Dateien. D'Restrukturéierung vun der Headerdatei huet iwwer e Joer gedauert an erfuerdert bedeitend Ëmaarbechtung vun der Hierarchie an Ofhängegkeeten. Wärend der Restrukturéierung gouf geschafft fir Typdefinitiounen an APIe fir verschidde Kernel-Subsystemer ze trennen.

Ënnert den Ännerungen gemaach: High-Level Header Dateien vuneneen trennen, Inline Funktiounen eliminéieren déi Header Dateien verbannen, Header Dateien fir Typen an APIen trennen, separat Assemblée vun Header Dateien garantéieren (ongeféier 80 Dateien haten indirekt Ofhängegkeeten déi d'Versammlung stéieren, ausgesat duerch aner Headerdateien), automatesch Zousatz vun Ofhängegkeeten op ".h" an ".c" Dateien, Schrëtt-fir-Schrëtt Optimiséierung vun Headerdateien, Benotzung vum "CONFIG_KALLSYMS_FAST=y" Modus, selektiv Konsolidéierung vun C Dateien an Assembléeblocken fir reduzéieren d'Zuel vun Objet Fichieren.

Als Resultat hunn d'Aarbechten et méiglech gemaach d'Gréisst vun den Headerdateien ze reduzéieren, déi an der Post-Virveraarbechtungsstadium veraarbecht ginn, ëm 1-2 Uerderen vun der Gréisst. Zum Beispill, virun der Optimisatioun, d'Benotzung vun der Headerdatei "linux/gfp.h" huet zu der Zousatz vun 13543 Zeilen vum Code an der Inklusioun vun 303 ofhängege Headerdateien gefouert, an no der Optimiséierung gouf d'Gréisst op 181 Linnen an 26 ofhängeg Dateien reduzéiert. Oder en anert Beispill: wann Dir d'Datei "kernel/pid.c" ouni Patch virveraarbechtt, sinn 94 Tausend Zeilen Code abegraff, déi meescht vun deenen net am pid.c benotzt ginn. D'Trennung vun den Headerdateien huet et méiglech gemaach d'Quantitéit vum veraarbechte Code ëm dräimol ze reduzéieren, d'Zuel vun de veraarbechte Linnen op 36 Tausend ze reduzéieren.

Wann de Kernel komplett nei opgebaut gouf mam Kommando "make -j96 vmlinux" op engem Testsystem, huet d'Applikatioun vu Patches eng Reduktioun vun der Bauzäit vun der v5.16-rc7 Branche vun 231.34 op 129.97 Sekonnen (vu 15.5 op 27.7 Builds gewisen) pro Stonn), an och d'Effizienz vun der Benotzung vun CPU-Cores während Versammlungen erhéicht. Mat engem inkrementelle Bau ass den Effekt vun der Optimiséierung nach méi bemierkbar - d'Zäit fir de Kärel nei opzebauen nodeems Dir Ännerunge vun den Headerdateien gemaach hutt, ass wesentlech erofgaang (vun 112% op 173% ofhängeg vun der Headerdatei déi geännert gëtt). Optimisatiounen sinn am Moment nëmme verfügbar fir ARM64, MIPS, Sparc an x86 (32- a 64-Bit) Architekturen.

Source: opennet.ru

Setzt e Commentaire