Efficiency Sanitizer: LLVM-Vorschlag zielt auf Cache- und Speicherprobleme

Derek Bruening hat am 17. April 2016 auf der LLVM-Entwicklerliste den Efficiency Sanitizer als Familie von Analysewerkzeugen vorgeschlagen. Geplant sind Prüfungen auf Cache-Fragmentierung, Größe des Arbeitssatzes und unnötige Speicheroperationen. Sie sollen erklären helfen, warum Leistungsprobleme entstehen, statt lediglich deren Auftreten zu zählen.

Instrumentierung benötigt den Quellcode

Der Compiler soll Speicherzugriffe um Analysecode ergänzen. Ein Schattenbereich hält Metadaten vor; eine Laufzeitbibliothek erfasst zusätzliche Ereignisse wie Heap-Zuweisungen und Bibliotheksaufrufe. Der Ansatz setzt verfügbaren Quellcode voraus. Für den Laufzeitaufwand nennt Bruening ein Ziel unter dem Faktor fünf, möglichst näher an drei. Das ist eine Vorgabe für die Entwicklung, kein gemessenes Ergebnis eines fertigen Werkzeugs.

Ein geplanter Teil untersucht, welche Felder einer Datenstruktur häufig genutzt werden und besser gemeinsam im Cache liegen sollten. Andere Prüfungen sollen Schreibzugriffe ohne nachfolgendes Lesen erkennen. Die Werkzeuge würden damit die bestehenden Fehleranalysen ergänzen: LLVM hatte libFuzzer bereits zur Suche nach Fehlern in Clang und clang-format eingesetzt. Der Efficiency Sanitizer betrifft dagegen die Effizienz der Ausführung. Die RFC ist noch keine Release-Ankündigung.

Weitere News

Weitere News

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein