Commit cb16008b authored by Namhyung Kim's avatar Namhyung Kim Committed by Arnaldo Carvalho de Melo

perf gtk/browser: Add support for event group view

Show group members's overhead also when showing leader's if event
group is enabled.
Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Pekka Enberg <penberg@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Stephane Eranian <eranina@google.com>
Link: http://lkml.kernel.org/r/1358845787-1350-13-git-send-email-namhyung@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 371d8c40
...@@ -8,8 +8,7 @@ ...@@ -8,8 +8,7 @@
#define MAX_COLUMNS 32 #define MAX_COLUMNS 32
static int perf_gtk__percent_color_snprintf(char *buf, size_t size, static int __percent_color_snprintf(char *buf, size_t size, double percent)
double percent)
{ {
int ret = 0; int ret = 0;
const char *markup; const char *markup;
...@@ -18,7 +17,7 @@ static int perf_gtk__percent_color_snprintf(char *buf, size_t size, ...@@ -18,7 +17,7 @@ static int perf_gtk__percent_color_snprintf(char *buf, size_t size,
if (markup) if (markup)
ret += scnprintf(buf, size, markup); ret += scnprintf(buf, size, markup);
ret += scnprintf(buf + ret, size - ret, "%6.2f%%", percent); ret += scnprintf(buf + ret, size - ret, " %6.2f%%", percent);
if (markup) if (markup)
ret += scnprintf(buf + ret, size - ret, "</span>"); ret += scnprintf(buf + ret, size - ret, "</span>");
...@@ -37,7 +36,55 @@ static int __hpp__color_fmt(struct perf_hpp *hpp, struct hist_entry *he, ...@@ -37,7 +36,55 @@ static int __hpp__color_fmt(struct perf_hpp *hpp, struct hist_entry *he,
if (hists->stats.total_period) if (hists->stats.total_period)
percent = 100.0 * get_field(he) / hists->stats.total_period; percent = 100.0 * get_field(he) / hists->stats.total_period;
ret = perf_gtk__percent_color_snprintf(hpp->buf, hpp->size, percent); ret = __percent_color_snprintf(hpp->buf, hpp->size, percent);
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)
return ret;
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;
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
*/
ret += __percent_color_snprintf(hpp->buf + ret,
hpp->size - ret,
0.0);
}
percent = 100.0 * period / total;
ret += __percent_color_snprintf(hpp->buf + ret,
hpp->size - ret,
percent);
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
*/
ret += __percent_color_snprintf(hpp->buf + ret,
hpp->size - ret,
0.0);
}
}
return ret; return ret;
} }
...@@ -96,6 +143,7 @@ static void perf_gtk__show_hists(GtkWidget *window, struct hists *hists) ...@@ -96,6 +143,7 @@ static void perf_gtk__show_hists(GtkWidget *window, struct hists *hists)
struct perf_hpp hpp = { struct perf_hpp hpp = {
.buf = s, .buf = s,
.size = sizeof(s), .size = sizeof(s),
.ptr = hists_to_evsel(hists),
}; };
nr_cols = 0; nr_cols = 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment