diff options
| author | Namhyung Kim <namhyung.kim@lge.com> | 2013-01-22 18:09:39 +0900 | 
|---|---|---|
| committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2013-01-31 13:07:47 -0300 | 
| commit | 371d8c402e8c3562e913c7fda95094f42fbcf0ef (patch) | |
| tree | 21812e963ad318402f20af377888a5be6bb32618 /tools/perf | |
| parent | 897014603c4786ef33450e675e02a5e74dc63785 (diff) | |
| download | linux-371d8c402e8c3562e913c7fda95094f42fbcf0ef.tar.bz2 | |
perf hists browser: Add suppport for event group view
Show group members' overhead also when showing the leader's if event
group is enabled.
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/1358845787-1350-12-git-send-email-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf')
| -rw-r--r-- | tools/perf/ui/browsers/hists.c | 57 | 
1 files changed, 57 insertions, 0 deletions
| diff --git a/tools/perf/ui/browsers/hists.c b/tools/perf/ui/browsers/hists.c index 852e4e10c7c4..d7112dfa89cc 100644 --- a/tools/perf/ui/browsers/hists.c +++ b/tools/perf/ui/browsers/hists.c @@ -602,6 +602,63 @@ static int __hpp__color_fmt(struct perf_hpp *hpp, struct hist_entry *he,  	ret += scnprintf(hpp->buf, hpp->size, "%6.2f%%", percent);  	slsmg_printf("%s", hpp->buf); +	if (symbol_conf.event_group) { +		int prev_idx, idx_delta; +		struct perf_evsel *evsel = hists_to_evsel(hists); +		struct hist_entry *pair; +		int nr_members = evsel->nr_members; + +		if (nr_members <= 1) +			goto out; + +		prev_idx = perf_evsel__group_idx(evsel); + +		list_for_each_entry(pair, &he->pairs.head, pairs.node) { +			u64 period = get_field(pair); +			u64 total = pair->hists->stats.total_period; + +			if (!total) +				continue; + +			evsel = hists_to_evsel(pair->hists); +			idx_delta = perf_evsel__group_idx(evsel) - prev_idx - 1; + +			while (idx_delta--) { +				/* +				 * zero-fill group members in the middle which +				 * have no sample +				 */ +				ui_browser__set_percent_color(arg->b, 0.0, +							arg->current_entry); +				ret += scnprintf(hpp->buf, hpp->size, +						 " %6.2f%%", 0.0); +				slsmg_printf("%s", hpp->buf); +			} + +			percent = 100.0 * period / total; +			ui_browser__set_percent_color(arg->b, percent, +						      arg->current_entry); +			ret += scnprintf(hpp->buf, hpp->size, +					 " %6.2f%%", percent); +			slsmg_printf("%s", hpp->buf); + +			prev_idx = perf_evsel__group_idx(evsel); +		} + +		idx_delta = nr_members - prev_idx - 1; + +		while (idx_delta--) { +			/* +			 * zero-fill group members at last which have no sample +			 */ +			ui_browser__set_percent_color(arg->b, 0.0, +						      arg->current_entry); +			ret += scnprintf(hpp->buf, hpp->size, +					 " %6.2f%%", 0.0); +			slsmg_printf("%s", hpp->buf); +		} +	} +out:  	if (!arg->current_entry || !arg->b->navkeypressed)  		ui_browser__set_color(arg->b, HE_COLORSET_NORMAL); |