CPU-Befehlsoptimierung für große Anwendungen

Facebook macht BOLT zum Open-Source-Tool

| Autor / Redakteur: Thomas Joos / Stephan Augsten

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)

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.

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.

Kommentare werden geladen....

Kommentar zu diesem Artikel

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 45368929 / Coding & Collaboration)