Suchen

CPU-Befehlsoptimierung für große Anwendungen Facebook macht BOLT zum Open-Source-Tool

Autor / Redakteur: Thomas Joos / Stephan Augsten

Facebook will Entwicklern dabei helfen, große Anwendungen mit BOLT zu beschleunigen. Das binäre Optimierungs- und Layout-Tool wird dementsprechend zum Open-Source-Projekt.

Firma zum Thema

Die Heatmap zeigt, dass BOLT häufig ausgeführten Code in einem viel kleineren Bereich isoliert als die Original-Binärdatei.
Die Heatmap zeigt, dass BOLT häufig ausgeführten Code in einem viel kleineren Bereich isoliert als die Original-Binärdatei.
(Bild: Facebook.com)

Laut Facebook dient das bei GitHub bereitgestellte Tool BOLT zur Optimierung der Platzierung von Befehlen im Speicher verwendet und soll die CPU-Ausführungszeit um zwei bis 15 Prozent reduzieren. Im Durchschnitt lasse sich eine Reduzierung um acht Prozent erreichen. Es lohnt sich für Entwickler also, sich mit dem Thema zu beschäftigen.

Maxim Panchenko, Software-Ingenieur bei Facebook, schreibt dazu: „Hochkomplexe Dienste, wie die hier bei Facebook, verfügen über eine große Quellcodebasis, um ein breites Spektrum an Funktionen zu bieten.“ Selbst nachdem der Maschinencode für einen dieser Dienste kompiliert wurde, könne er zwischen 10 und Hunderten Megabyte groß sein, was oft zu groß sein, um in einen modernen CPU-Befehlscache zu passen.

„Infolgedessen verbraucht die Hardware eine beträchtliche Menge an Verarbeitungszeit“, schreibt Panchenko weiter, „– in vielen Fällen fast 30 Prozent –, um einen Befehlsstrom vom Speicher zur CPU zu bekommen.“ Mehr dazu ist im Facebook-Blog-Beitrag „Accelerate large-scale applications with BOLT“ zu lesen.

Um das vorgenannte Problem zu lösen, vertraut Facebook auf BOLT, das wie oben beschrieben die CPU-Ausführungszeit optimiert. Im Gegensatz zu früheren Tools arbeitet BOLT mit Anwendungen, die von jedwedem Compiler erstellt wurden. Facebook nennt drei große Vorteile, die der Einsatz von BOLT bietet:

  • Kompatibel mit Code, der von einem beliebigen Compiler oder einer Mischung von Code aus verschiedenen Compilern erzeugt wird.
  • Kann jeden Code unterstützen, für den kein Quellcode verfügbar ist (zum Beispiel vom Hersteller bereitgestellte Bibliotheken).
  • Kann manuell in Assembler geschriebenen Code unterstützen, um das Layout zu optimieren.

Damit BOLT ein neues Code-Layout für eine Anwendung erstellen kann, muss das Tool den Kontrollflussgraphen für den Code rekonstruieren. Die Aufgabe ist ähnlich wie bei der Dekompilierung.

Artikelfiles und Artikellinks

(ID:45368929)

Über den Autor

 Thomas Joos

Thomas Joos

Freiberuflicher Autor und Journalist