Es wurde eine Reihe von Patches veröffentlicht, um die Kernel-Kompilierung zu beschleunigen. Linux auf 50-80%

Ingo Molnar, ein renommierter BautrĂ€ger Linux Der Entwickler des Kernels und der Autor des CFS-Task-Schedulers (Completely Fair Scheduler) schlugen es zur Diskussion auf der Mailingliste der Kernel-Entwickler vor. Linux Eine Reihe von Patches betrifft mehr als die HĂ€lfte aller Dateien im Kernel-Quellcode und ermöglicht je nach Einstellungen eine Geschwindigkeitssteigerung von 50–80 % bei vollstĂ€ndigen Kernel-Neukompilierungen. Diese Optimierung ist bemerkenswert, da sie die grĂ¶ĂŸte Menge an Änderungen in der Geschichte der Kernelentwicklung umfasst: 2297 gleichzeitig vorgeschlagene Patches, die mehr als 25 Dateien verĂ€ndern (10 Header-Dateien in den Verzeichnissen „include/“ und „arch/*/include/“ sowie 15 Quellcodedateien).

Die Leistungssteigerungen werden durch eine Änderung der Verarbeitung von Header-Dateien erreicht. Es ist bekannt, dass sich der Zustand der Header-Dateien im Laufe von dreißig Jahren Kernel-Entwicklung aufgrund der Vielzahl von AbhĂ€ngigkeiten zwischen den Dateien verschlechtert hat. Die Umstrukturierung der Header-Dateien dauerte ĂŒber ein Jahr und erforderte eine umfassende Überarbeitung der Hierarchie und AbhĂ€ngigkeiten. Im Zuge der Umstrukturierung wurden Typdefinitionen und APIs fĂŒr verschiedene Kernel-Subsysteme getrennt.

Zu den vorgenommenen Änderungen gehören: Trennung der Header-Dateien auf hoher Ebene voneinander, Ausschluss von Inline-Funktionen, die Header-Dateien verknĂŒpfen, Zuweisung von Header-Dateien fĂŒr Typen und APIs, Bereitstellung einer separaten Assembly von Header-Dateien (etwa 80 Dateien hatten indirekte AbhĂ€ngigkeiten, die die Assembly störten und durch andere Header-Dateien offengelegt wurden), automatisches HinzufĂŒgen von AbhĂ€ngigkeiten zu „.h“- und „.c“-Dateien, schrittweise Optimierung von Header-Dateien, Verwendung des Modus „CONFIG_KALLSYMS_FAST=y“, selektive Konsolidierung von C-Dateien in Assembly-Blöcke, um die Anzahl der Objektdateien zu reduzieren.

Die durchgefĂŒhrte Arbeit ermöglichte es uns, die GrĂ¶ĂŸe der in der Post-Preprocessing-Phase verarbeiteten Header-Dateien um ein bis zwei GrĂ¶ĂŸenordnungen zu reduzieren. Beispielsweise fĂŒhrte die Verwendung der Header-Datei „linux/gfp.h“ vor der Optimierung zum HinzufĂŒgen von 1 Codezeilen und zum Verbinden von 2 abhĂ€ngigen Header-Dateien. Nach der Optimierung reduzierte sich die GrĂ¶ĂŸe auf 13543 Zeilen und 303 abhĂ€ngige Dateien. Oder ein anderes Beispiel: Bei der Vorverarbeitung der Datei „kernel/pid.c“ ohne Patch werden 181 Codezeilen verbunden, von denen die meisten in pid.c nicht verwendet werden. Durch die Trennung der Header-Dateien konnten wir die Menge des verarbeiteten Codes um das Dreifache reduzieren und die Anzahl der verarbeiteten Zeilen auf 26 reduzieren.

Beim vollstĂ€ndigen Neuaufbau des Kernels mit dem Befehl „make -j96 vmlinux“ auf dem Testsystem reduzierte sich durch die Anwendung der Patches die Buildzeit des v5.16-rc7-Zweigs von 231.34 auf 129.97 Sekunden (von 15.5 auf 27.7 Builds pro Stunde) und erhöhte gleichzeitig die Effizienz der CPU-Nutzung wĂ€hrend des Builds. Bei der inkrementellen Assemblierung ist der Effekt der Optimierung noch deutlicher: Die Zeit fĂŒr den Neuaufbau des Kernels nach Änderungen an den Header-Dateien verringerte sich um ein Vielfaches (von 112 % auf 173 %, abhĂ€ngig von der geĂ€nderten Header-Datei). Optimierungen sind derzeit nur fĂŒr die Architekturen ARM64, MIPS, Sparc und x86 (32- und 64-Bit) verfĂŒgbar.

Source: opennet.ru

Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz und VPS-VDS-Servern đŸ”„ Kaufen Sie zuverlĂ€ssiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server | ProHoster