Für Compilerbauer ist ein performance benchmark in der finalen Evaluation ein Muss. Allerdings ist Benchmarken auf modernen Architekturen und Betriebssystemen gar nicht so einfach, da viele Störfaktoren die Messungen verzerren. Statistik kann helfen, indem die Signifikanz berechnet wird und gegebenfalls mehr Messungen durchgeführt werden. Richtige Konfiguration der Messumgebung kann helfen, indem beispielsweise dynamic frequency scaling deaktiviert wird. Manche Einflüsse sind überraschend. Beispielsweise beinflusst die Länge von Umgebungsvariablen die Performance, weil es das stack alignment verändert.
Hier ein paar Fragen zum Einstieg:
- Welche Caches sollte man wie flushen, disablen oder aufwärmen?
- Welche Stromsparfunktionen sollte man deaktivieren oder umkonfigurieren?
- In welcher Reihenfolge sollten die Tests laufen?
- Beeinflusst das Netzwerk die Ergebnisse bei Compilerbenchmarks?
- Wie stark ist der Einfluss des Linux Schedulers?
- Woher kommen Ausreißer?
- Welche Testparameter müssen festgehalten werden? Kernelversion? Link order?
- Welche statistischen Signifikanztests sind angebracht?
- Wie automatisiere ich das Ganze?
Aufgabe:
Traurigerweise üblicherweise wird nur der Durchschnitt ohne Standardabweichung betrachtet. Ziel dieser Arbeit ist die Varianz solcher Messungen insbesondere von libFirm zu bestimmen und systematisch zu verringern.
Ergebnis siehe Github temci
Voraussetzungen
- Erfahrung mit Linux, C Compilern und Python Scripts
- Vorkenntnisse oder zumindest Interesse an Statistik
- Geduld für länger Benchmarkings
- Eigeninitiative verschiedene Möglichkeiten zu erkunden
Arbeitsumgebung
- Statistically Rigorous Java Performance Evaluation; OOPSLA'07
- Producing Wrong Data Without Doing Anything Obviously Wrong!; ASPLOS'09
- STABILIZER: Statistically Sound Performance Evaluation; ASPLOS'13
Schlüsselworte
compiler,benchmark,statistik Veröffentlichungen
Veröffentlichung |
Besser Benchmarken |
Betreuer
Ehemalige Mitarbeiter |
---|
Dr.-Ing. Andreas Zwinkau |
Studenten
Ehemalige Mitarbeiter |
---|
M.Sc. Johannes Bechberger |