Messages in this thread Patch in this message | | | From | kan.liang@intel ... | Subject | [PATCH RFC 10/10] perf,tools: show counter read result in tui browser title | Date | Tue, 22 Sep 2015 10:13:43 -0400 |
| |
From: Kan Liang <kan.liang@intel.com>
There is no sampling for counter read event, so only show its value on the browser title in tui mode.
Signed-off-by: Kan Liang <kan.liang@intel.com> --- tools/perf/ui/browsers/hists.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+)
diff --git a/tools/perf/ui/browsers/hists.c b/tools/perf/ui/browsers/hists.c index e1f28f4..1900363 100644 --- a/tools/perf/ui/browsers/hists.c +++ b/tools/perf/ui/browsers/hists.c @@ -1270,12 +1270,22 @@ static int hists__browser_title(struct hists *hists, size_t buflen = sizeof(buf); char ref[30] = " show reference callgraph, "; bool enable_ref = false; + int i, idx = 1; + struct perf_env *env = evsel->evlist->env; + u64 *counter_val = zalloc(evsel->nr_members * sizeof(u64)); if (symbol_conf.filter_relative) { nr_samples = hists->stats.nr_non_filtered_samples; nr_events = hists->stats.total_non_filtered_period; } + if (hists->stats.counter_val != NULL) { + for (i = 0; i < env->nr_cpus_online; i++) { + if ((socket_id < 0) || (env->cpu[i].socket_id == socket_id)) + counter_val[0] += hists->stats.counter_val[i]; + } + } + if (perf_evsel__is_group_event(evsel)) { struct perf_evsel *pos; @@ -1292,6 +1302,13 @@ static int hists__browser_title(struct hists *hists, nr_samples += pos_hists->stats.nr_events[PERF_RECORD_SAMPLE]; nr_events += pos_hists->stats.total_period; } + if (pos_hists->stats.counter_val != NULL) { + for (i = 0; i < env->nr_cpus_online; i++) { + if ((socket_id < 0) || (env->cpu[i].socket_id == socket_id)) + counter_val[idx] += pos_hists->stats.counter_val[i]; + } + } + idx++; } } @@ -1318,6 +1335,26 @@ static int hists__browser_title(struct hists *hists, if (socket_id > -1) printed += scnprintf(bf + printed, size - printed, ", Processor Socket: %d", socket_id); + + if (hists->stats.counter_val != NULL) + printed += scnprintf(bf + printed, size - printed, + ", %s: %" PRIu64, evsel->name, counter_val[0]); + + if (perf_evsel__is_group_event(evsel)) { + struct perf_evsel *pos; + + idx = 1; + for_each_group_member(pos, evsel) { + const struct hists *pos_hists = evsel__hists(pos); + + if (pos_hists->stats.counter_val != NULL) + printed += scnprintf(bf + printed, size - printed, + ", %s: %" PRIu64, pos->name, counter_val[idx]); + idx++; + } + } + free(counter_val); + if (!is_report_browser(hbt)) { struct perf_top *top = hbt->arg; -- 1.8.3.1
| |