flame_graph
Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| flame_graph [2026/05/13 08:12] – created msvoelker | flame_graph [2026/05/13 08:32] (current) – [CPU Performance Counter] msvoelker | ||
|---|---|---|---|
| Line 4: | Line 4: | ||
| Der Graph zeigt Namen von Funktionen in Kästchen übereinander an, wenn die untere die obere aufgerufen hat. Über die Breite der Kästchen zeigt der Graph, wie viel Zeit die Funktion eingenommen hat. Durch Klicken auf ein Kästchen lässt sich in dem Graph zoomen. | Der Graph zeigt Namen von Funktionen in Kästchen übereinander an, wenn die untere die obere aufgerufen hat. Über die Breite der Kästchen zeigt der Graph, wie viel Zeit die Funktion eingenommen hat. Durch Klicken auf ein Kästchen lässt sich in dem Graph zoomen. | ||
| + | |||
| + | Brendan Gregg beschreibt Flame Graphs ausführlich auf seiner Webseite: [[https:// | ||
| ===== Erstellen ===== | ===== Erstellen ===== | ||
| Line 27: | Line 29: | ||
| </ | </ | ||
| - | Der Aufruf nutzt den CPU Performance Counter '' | + | Der Aufruf nutzt den CPU Performance Counter '' |
| Nach der Messung müssen die Daten aufbereitet werden. | Nach der Messung müssen die Daten aufbereitet werden. | ||
| Line 47: | Line 49: | ||
| {{ :: | {{ :: | ||
| + | |||
| + | ===== CPU Performance Counter ===== | ||
| + | |||
| + | Die Namen des relevanten Performance Counter unterscheidert sich je nach CPU-Hersteller. | ||
| + | |||
| + | * AMD: '' | ||
| + | * Intel: '' | ||
| + | * ARM: | ||
| + | |||
| + | Die Auflistung stammt von Olivier Cochard-Labbé, | ||
| + | |||
| + | Nicht jede CPU bietet die gleiche Menge an Performance Counter. Eine Liste der verfügbaren Performance Counter lässt sich mit pmcstat ausgeben. | ||
| + | |||
| + | < | ||
| + | kldload -n hwpmc | ||
| + | pmcstat -L | ||
| + | ... | ||
| + | br_misp_retired.taken | ||
| + | cpu_clk_thread_unhalted.one_thread_active | ||
| + | cpu_clk_thread_unhalted.ref_xclk | ||
| + | cpu_clk_thread_unhalted.ref_xclk_any | ||
| + | cpu_clk_unhalted.one_thread_active | ||
| + | cpu_clk_unhalted.ref_tsc | ||
| + | cpu_clk_unhalted.ref_xclk | ||
| + | cpu_clk_unhalted.ref_xclk_any | ||
| + | cpu_clk_unhalted.thread | ||
| + | cpu_clk_unhalted.thread_any | ||
| + | cpu_clk_unhalted.thread_p | ||
| + | cpu_clk_unhalted.thread_p_any | ||
| + | cycle_activity.cycles_l1d_pending | ||
| + | ... | ||
| + | </ | ||
| + | |||
| + | ===== Skript ===== | ||
| Das folgende Skript erstellt ein Flame Graph zu der Ausführung von iperf3. Es lässt die ersten 5 Sekunden aus, um die Effekte beim Start einer Verbindung außen vor zu lassen. | Das folgende Skript erstellt ein Flame Graph zu der Ausführung von iperf3. Es lässt die ersten 5 Sekunden aus, um die Effekte beim Start einer Verbindung außen vor zu lassen. | ||
flame_graph.1778659955.txt.gz · Last modified: by msvoelker
