perf tools: Add front-end and back-end stalled cycles support
Commit-ID: 129c04cb8ce2e4bf3f17223f58ef16aa8a2cb3b8 Gitweb: http://git.kernel.org/tip/129c04cb8ce2e4bf3f17223f58ef16aa8a2cb3b8 Author: Ingo Molnar <[email protected]> AuthorDate: Fri, 29 Apr 2011 14:41:28 +0200 Committer: Ingo Molnar <[email protected]> CommitDate: Fri, 29 Apr 2011 14:35:49 +0200
perf tools: Add front-end and back-end stalled cycles support
Update perf tooling to deal with front-end and back-end stalled cycles events.
Add both the default 'perf stat' output.
Cc Peter Zijlstra <[email protected]>
Cc Arnaldo Carvalho de Melo <[email protected]>
Cc Frederic Weisbecker <[email protected]>
Signed-off-by Ingo Molnar <[email protected]>
--- tools/perf/builtin-stat.c | 10 ++++++---- tools/perf/util/parse-events.c | 37 +++++++++++++++++++------------------ tools/perf/util/python.c | 4 +++- 3 files changed, 28 insertions(+), 23 deletions(-)
tools/perf/builtin-stat.c +6 -4
@@ -66,7 +66,8 @@ static struct perf_event_attr default_attrs[] = { { .type = PERF_TYPE_SOFTWARE, .config = PERF_COUNT_SW_PAGE_FAULTS }, { .type = PERF_TYPE_HARDWARE, .config = PERF_COUNT_HW_CPU_CYCLES }, - { .type = PERF_TYPE_HARDWARE, .config = PERF_COUNT_HW_STALLED_CYCLES }, + { .type = PERF_TYPE_HARDWARE, .config = PERF_COUNT_HW_STALLED_CYCLES_FRONTEND }, + { .type = PERF_TYPE_HARDWARE, .config = PERF_COUNT_HW_STALLED_CYCLES_BACKEND }, { .type = PERF_TYPE_HARDWARE, .config = PERF_COUNT_HW_INSTRUCTIONS }, { .type = PERF_TYPE_HARDWARE, .config = PERF_COUNT_HW_BRANCH_INSTRUCTIONS }, { .type = PERF_TYPE_HARDWARE, .config = PERF_COUNT_HW_BRANCH_MISSES },
@@ -84,7 +85,8 @@ static struct perf_event_attr detailed_attrs[] = { { .type = PERF_TYPE_SOFTWARE, .config = PERF_COUNT_SW_PAGE_FAULTS }, { .type = PERF_TYPE_HARDWARE, .config = PERF_COUNT_HW_CPU_CYCLES }, - { .type = PERF_TYPE_HARDWARE, .config = PERF_COUNT_HW_STALLED_CYCLES }, + { .type = PERF_TYPE_HARDWARE, .config = PERF_COUNT_HW_STALLED_CYCLES_FRONTEND }, + { .type = PERF_TYPE_HARDWARE, .config = PERF_COUNT_HW_STALLED_CYCLES_BACKEND }, { .type = PERF_TYPE_HARDWARE, .config = PERF_COUNT_HW_INSTRUCTIONS }, { .type = PERF_TYPE_HARDWARE, .config = PERF_COUNT_HW_BRANCH_INSTRUCTIONS }, { .type = PERF_TYPE_HARDWARE, .config = PERF_COUNT_HW_BRANCH_MISSES },
@@ -249,7 +251,7 @@ static void update_shadow_stats(struct perf_evsel *counter, u64 *count)update_stats (&runtime_nsecs_stats[0 ], count[0 ]); else if (perf_evsel__match(counter, HARDWARE, HW_CPU_CYCLES)) update_stats(&runtime_cycles_stats[0], count[0]); - else if (perf_evsel__match(counter, HARDWARE, HW_STALLED_CYCLES)) + else if (perf_evsel__match(counter, HARDWARE, HW_STALLED_CYCLES_BACKEND)) update_stats(&runtime_stalled_cycles_stats[0], count[0]); else if (perf_evsel__match(counter, HARDWARE, HW_BRANCH_INSTRUCTIONS)) update_stats(&runtime_branches_stats[0], count[0]);
@@ -607,7 +609,7 @@ static void abs_printout(int cpu, struct perf_evsel *evsel, double avg)fprintf (stderr," # %8.3f %% of all cache refs " , ratio); - }else if (perf_evsel__match (evsel,HARDWARE ,HW_STALLED_CYCLES )) { + }else if (perf_evsel__match (evsel,HARDWARE ,HW_STALLED_CYCLES_BACKEND )) {print_stalled_cycles (cpu, evsel, avg); }else if (perf_evsel__match (evsel,HARDWARE ,HW_CPU_CYCLES )) { total =avg_stats (&runtime_nsecs_stats[cpu]);
tools/perf/util/parse-events.c +19 -18
@@ -31,24 +31,25 @@ char debugfs_path[MAXPATHLEN];#define CSW (x) .type = PERF_TYPE_SOFTWARE, .config = PERF_COUNT_SW_##xstatic struct event_symbol event_symbols[] = { - {CHW (CPU_CYCLES ),"cpu-cycles" ,"cycles" }, - {CHW (STALLED_CYCLES ),"stalled-cycles" ,"idle-cycles" }, - {CHW (INSTRUCTIONS ),"instructions" ,"" }, - {CHW (CACHE_REFERENCES ),"cache-references" ,"" }, - {CHW (CACHE_MISSES ),"cache-misses" ,"" }, - {CHW (BRANCH_INSTRUCTIONS ),"branch-instructions" ,"branches" }, - {CHW (BRANCH_MISSES ),"branch-misses" ,"" }, - {CHW (BUS_CYCLES ),"bus-cycles" ,"" }, - - {CSW (CPU_CLOCK ),"cpu-clock" ,"" }, - {CSW (TASK_CLOCK ),"task-clock" ,"" }, - {CSW (PAGE_FAULTS ),"page-faults" ,"faults" }, - {CSW (PAGE_FAULTS_MIN ),"minor-faults" ,"" }, - {CSW (PAGE_FAULTS_MAJ ),"major-faults" ,"" }, - {CSW (CONTEXT_SWITCHES ),"context-switches" ,"cs" }, - {CSW (CPU_MIGRATIONS ),"cpu-migrations" ,"migrations" }, - {CSW (ALIGNMENT_FAULTS ),"alignment-faults" ,"" }, - {CSW (EMULATION_FAULTS ),"emulation-faults" ,"" }, + {CHW (CPU_CYCLES ),"cpu-cycles" ,"cycles" }, + {CHW (STALLED_CYCLES_FRONTEND ),"stalled-cycles-frontend" ,"idle-cycles-frontend" }, + {CHW (STALLED_CYCLES_BACKEND ),"stalled-cycles-backend" ,"idle-cycles-backend" }, + {CHW (INSTRUCTIONS ),"instructions" ,"" }, + {CHW (CACHE_REFERENCES ),"cache-references" ,"" }, + {CHW (CACHE_MISSES ),"cache-misses" ,"" }, + {CHW (BRANCH_INSTRUCTIONS ),"branch-instructions" ,"branches" }, + {CHW (BRANCH_MISSES ),"branch-misses" ,"" }, + {CHW (BUS_CYCLES ),"bus-cycles" ,"" }, + + {CSW (CPU_CLOCK ),"cpu-clock" ,"" }, + {CSW (TASK_CLOCK ),"task-clock" ,"" }, + {CSW (PAGE_FAULTS ),"page-faults" ,"faults" }, + {CSW (PAGE_FAULTS_MIN ),"minor-faults" ,"" }, + {CSW (PAGE_FAULTS_MAJ ),"major-faults" ,"" }, + {CSW (CONTEXT_SWITCHES ),"context-switches" ,"cs" }, + {CSW (CPU_MIGRATIONS ),"cpu-migrations" ,"migrations" }, + {CSW (ALIGNMENT_FAULTS ),"alignment-faults" ,"" }, + {CSW (EMULATION_FAULTS ),"emulation-faults" ,"" }, };#define __PERF_EVENT_FIELD (config, name) \
tools/perf/util/python.c +3 -1
@@ -798,7 +798,6 @@ static struct { { "COUNT_HW_BRANCH_INSTRUCTIONS", PERF_COUNT_HW_BRANCH_INSTRUCTIONS }, { "COUNT_HW_BRANCH_MISSES", PERF_COUNT_HW_BRANCH_MISSES }, { "COUNT_HW_BUS_CYCLES", PERF_COUNT_HW_BUS_CYCLES }, - { "COUNT_HW_STALLED_CYCLES", PERF_COUNT_HW_STALLED_CYCLES }, { "COUNT_HW_CACHE_L1D", PERF_COUNT_HW_CACHE_L1D }, { "COUNT_HW_CACHE_L1I", PERF_COUNT_HW_CACHE_L1I }, { "COUNT_HW_CACHE_LL", PERF_COUNT_HW_CACHE_LL },
@@ -811,6 +810,9 @@ static struct { { "COUNT_HW_CACHE_RESULT_ACCESS", PERF_COUNT_HW_CACHE_RESULT_ACCESS }, { "COUNT_HW_CACHE_RESULT_MISS", PERF_COUNT_HW_CACHE_RESULT_MISS }, + { "COUNT_HW_STALLED_CYCLES_FRONTEND", PERF_COUNT_HW_STALLED_CYCLES_FRONTEND }, + { "COUNT_HW_STALLED_CYCLES_BACKEND", PERF_COUNT_HW_STALLED_CYCLES_BACKEND }, + { "COUNT_SW_CPU_CLOCK", PERF_COUNT_SW_CPU_CLOCK }, { "COUNT_SW_TASK_CLOCK", PERF_COUNT_SW_TASK_CLOCK }, { "COUNT_SW_PAGE_FAULTS", PERF_COUNT_SW_PAGE_FAULTS },