Eine Sammlung von Patches wurde veröffentlicht, die den Kernel-Bau um 50-80 % beschleunigt.

Ingo Molnar, ein bekannter Entwickler des Linux-Kernels und Autor des Completely Fair Scheduler (CFS), hat in der Mailingliste der Kernel-Entwickler eine Reihe von Patches zur Diskussion gestellt, die mehr als die HĂ€lfte aller Dateien im Quellcode des Kernels betreffen und eine Geschwindigkeitssteigerung der vollstĂ€ndigen Kernel-Neukompilierung um 50-80% je nach Konfiguration bieten. Die durchgefĂŒhrte Optimierung ist bemerkenswert, da sie mit der Aufnahme des grĂ¶ĂŸten Änderungssets in der Geschichte der Kernel-Entwicklung verbunden ist – insgesamt werden 2297 Patches vorgeschlagen, die mehr als 25.000 Dateien Ă€ndern (10.000 Header-Dateien in den Verzeichnissen 'include/' und 'arch/*/include/' sowie 15.000 Quellcodedateien).

Die Leistungssteigerung wird durch die Änderung der Methode zur Verarbeitung von Header-Dateien erreicht. Es ist zu beobachten, dass die Header-Dateien in den dreißig Jahren der Kernentwicklung aufgrund zahlreicher wechselseitiger AbhĂ€ngigkeiten zwischen den Dateien in einen bedauerlichen Zustand geraten sind. Die Arbeit an der Restrukturierung der Header-Dateien dauerte ĂŒber ein Jahr und erforderte eine umfassende Überarbeitung der Hierarchie und AbhĂ€ngigkeiten. Im Verlauf der Restrukturierung wurde eine Arbeit zur Trennung von Typdefinitionen und APIs fĂŒr verschiedene Subsysteme des Kerns durchgefĂŒhrt.

Unter den vorgenommenen Änderungen sind: die Trennung von hochrangigen Header-Dateien, das Ausklammern von Link-Header-Dateien fĂŒr Inline-Funktionen, die klare Zuordnung von Header-Dateien fĂŒr Typen und APIs, die GewĂ€hrleistung einer separaten Kompilierung von Header-Dateien (ungefĂ€hr 80 Dateien hatten störende indirekte AbhĂ€ngigkeiten von anderen Header-Dateien), die automatische HinzufĂŒgung von AbhĂ€ngigkeiten zu den Dateien " .h" und " .c", die schrittweise Optimierung von Header-Dateien, die Nutzung des Modus "CONFIG_KALLSYMS_FAST=y", sowie die selektive Konsolidierung von C-Dateien in Kompilierungsblöcke zur Reduzierung der Anzahl an Objektdateien.

Insgesamt ermöglichte die durchgefĂŒhrte Arbeit, die GrĂ¶ĂŸe der Header-Dateien, die in der Phase der Vorverarbeitung verarbeitet werden, um ein bis zwei GrĂ¶ĂŸenordnungen zu reduzieren. Zum Beispiel fĂŒhrte vor der Optimierung die Verwendung der Header-Datei „linux/gfp.h“ zu einer Addition von 13.543 Codezeilen und der Einbindung von 303 abhĂ€ngigen Header-Dateien. Nach der Optimierung reduzierte sich die GrĂ¶ĂŸe auf 181 Zeilen und 26 abhĂ€ngige Dateien. Ein weiteres Beispiel: Beim Preprocessing der Datei „kernel/pid.c“ ohne Patch werden 94.000 Codezeilen eingebunden, von denen die meisten in pid.c nicht verwendet werden. Die Aufteilung der Header-Dateien reduzierte das Volumen des verarbeiteten Codes um das Dreifache und senkte die Anzahl der verarbeiteten Zeilen auf 36.000.

Bei einer vollstĂ€ndigen NeuĂŒbersetzung des Kernels mit dem Befehl „make -j96 vmlinux“ auf dem Testsystem zeigte sich, dass der Einsatz von Patches die Bauzeit des Zweigs v5.16-rc7 von 231,34 auf 129,97 Sekunden verkĂŒrzte (von 15,5 auf 27,7 Builds pro Stunde) und die Nutzung der CPU-Kerne wĂ€hrend des Builds optimierte. Bei einer inkrementellen Erstellung ist der Effekt der Optimierung noch deutlicher — die Zeit fĂŒr die erneute Übersetzung des Kernels nach Änderungen an den Header-Dateien reduzierte sich um ein Vielfaches (von 112 % bis 173 %, je nach geĂ€ndertem Header). Diese Optimierungen sind bisher nur fĂŒr die Architekturen ARM64, MIPS, Sparc und x86 (32- und 64-Bit) verfĂŒgbar.

Quelle: opennet.ru

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