From: Jiri Olsa <jolsa@kernel.org>
To: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: lkml <linux-kernel@vger.kernel.org>,
Ingo Molnar <mingo@kernel.org>,
Namhyung Kim <namhyung@kernel.org>,
David Ahern <dsahern@gmail.com>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
Stephane Eranian <eranian@google.com>
Subject: [PATCH 08/20] perf annotate: Switch struct annotation_data::percent to array
Date: Sat, 4 Aug 2018 15:05:09 +0200 [thread overview]
Message-ID: <20180804130521.11408-9-jolsa@kernel.org> (raw)
In-Reply-To: <20180804130521.11408-1-jolsa@kernel.org>
So we can hold multiple percent values for annotation line.
The first member of this array is current local hits percent
value (PERCENT_HITS_LOCAL index), so no functional change is
expected.
Adding annotation_data__percent function to return requested
percent value from struct annotation_data.
Link: http://lkml.kernel.org/n/tip-7y4x2ws9r6hnrb6anclj93nj@git.kernel.org
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
---
tools/perf/ui/browsers/annotate.c | 9 +++--
tools/perf/util/annotate.c | 57 ++++++++++++++++++++-----------
tools/perf/util/annotate.h | 13 ++++++-
3 files changed, 56 insertions(+), 23 deletions(-)
diff --git a/tools/perf/ui/browsers/annotate.c b/tools/perf/ui/browsers/annotate.c
index d648d1e153f3..81876c3923d2 100644
--- a/tools/perf/ui/browsers/annotate.c
+++ b/tools/perf/ui/browsers/annotate.c
@@ -315,10 +315,13 @@ static void annotate_browser__calc_percent(struct annotate_browser *browser,
}
for (i = 0; i < pos->al.data_nr; i++) {
- struct annotation_data *sample = &pos->al.data[i];
+ double percent;
- if (max_percent < sample->percent)
- max_percent = sample->percent;
+ percent = annotation_data__percent(&pos->al.data[i],
+ PERCENT_HITS_LOCAL);
+
+ if (max_percent < percent)
+ max_percent = percent;
}
if (max_percent < 0.01 && pos->al.ipc == 0) {
diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c
index 34d4bb73aa84..074adb2a831e 100644
--- a/tools/perf/util/annotate.c
+++ b/tools/perf/util/annotate.c
@@ -1310,10 +1310,13 @@ annotation_line__print(struct annotation_line *al, struct symbol *sym, u64 start
struct annotation *notes = symbol__annotation(sym);
for (i = 0; i < al->data_nr; i++) {
- struct annotation_data *data = &al->data[i];
+ double percent;
+
+ percent = annotation_data__percent(&al->data[i],
+ PERCENT_HITS_LOCAL);
- if (data->percent > max_percent)
- max_percent = data->percent;
+ if (percent > max_percent)
+ max_percent = percent;
}
if (al->data_nr > nr_percent)
@@ -1352,8 +1355,10 @@ annotation_line__print(struct annotation_line *al, struct symbol *sym, u64 start
for (i = 0; i < nr_percent; i++) {
struct annotation_data *data = &al->data[i];
+ double percent;
- color = get_percent_color(data->percent);
+ percent = annotation_data__percent(data, PERCENT_HITS_LOCAL);
+ color = get_percent_color(percent);
if (symbol_conf.show_total_period)
color_fprintf(stdout, color, " %11" PRIu64,
@@ -1362,7 +1367,7 @@ annotation_line__print(struct annotation_line *al, struct symbol *sym, u64 start
color_fprintf(stdout, color, " %7" PRIu64,
data->he.nr_samples);
else
- color_fprintf(stdout, color, " %7.2f", data->percent);
+ color_fprintf(stdout, color, " %7.2f", percent);
}
printf(" : ");
@@ -1769,7 +1774,7 @@ static void calc_percent(struct sym_hist *sym_hist,
if (sym_hist->nr_samples) {
data->he.period = period;
data->he.nr_samples = hits;
- data->percent = 100.0 * hits / sym_hist->nr_samples;
+ data->percent[PERCENT_HITS_LOCAL] = 100.0 * hits / sym_hist->nr_samples;
}
}
@@ -1862,8 +1867,10 @@ static void insert_source_line(struct rb_root *root, struct annotation_line *al)
ret = strcmp(iter->path, al->path);
if (ret == 0) {
- for (i = 0; i < al->data_nr; i++)
- iter->data[i].percent_sum += al->data[i].percent;
+ for (i = 0; i < al->data_nr; i++) {
+ iter->data[i].percent_sum += annotation_data__percent(&al->data[i],
+ PERCENT_HITS_LOCAL);
+ }
return;
}
@@ -1873,8 +1880,10 @@ static void insert_source_line(struct rb_root *root, struct annotation_line *al)
p = &(*p)->rb_right;
}
- for (i = 0; i < al->data_nr; i++)
- al->data[i].percent_sum = al->data[i].percent;
+ for (i = 0; i < al->data_nr; i++) {
+ al->data[i].percent_sum = annotation_data__percent(&al->data[i],
+ PERCENT_HITS_LOCAL);
+ }
rb_link_node(&al->rb_node, parent, p);
rb_insert_color(&al->rb_node, root);
@@ -2359,12 +2368,13 @@ static void annotation__calc_lines(struct annotation *notes, struct map *map,
int i;
for (i = 0; i < al->data_nr; i++) {
- struct annotation_data *data;
+ double percent;
- data = &al->data[i];
+ percent = annotation_data__percent(&al->data[i],
+ PERCENT_HITS_LOCAL);
- if (data->percent > percent_max)
- percent_max = data->percent;
+ if (percent > percent_max)
+ percent_max = percent;
}
if (percent_max <= 0.5)
@@ -2451,8 +2461,13 @@ static double annotation_line__max_percent(struct annotation_line *al,
int i;
for (i = 0; i < notes->nr_events; i++) {
- if (al->data[i].percent > percent_max)
- percent_max = al->data[i].percent;
+ double percent;
+
+ percent = annotation_data__percent(&al->data[i],
+ PERCENT_HITS_LOCAL);
+
+ if (percent > percent_max)
+ percent_max = percent;
}
return percent_max;
@@ -2518,15 +2533,19 @@ static void __annotation_line__write(struct annotation_line *al, struct annotati
int i;
for (i = 0; i < notes->nr_events; i++) {
- obj__set_percent_color(obj, al->data[i].percent, current_entry);
+ double percent;
+
+ percent = annotation_data__percent(&al->data[i],
+ PERCENT_HITS_LOCAL);
+
+ obj__set_percent_color(obj, percent, current_entry);
if (notes->options->show_total_period) {
obj__printf(obj, "%11" PRIu64 " ", al->data[i].he.period);
} else if (notes->options->show_nr_samples) {
obj__printf(obj, "%6" PRIu64 " ",
al->data[i].he.nr_samples);
} else {
- obj__printf(obj, "%6.2f ",
- al->data[i].percent);
+ obj__printf(obj, "%6.2f ", percent);
}
}
} else {
diff --git a/tools/perf/util/annotate.h b/tools/perf/util/annotate.h
index 58aa14c55bab..0afbf8075fca 100644
--- a/tools/perf/util/annotate.h
+++ b/tools/perf/util/annotate.h
@@ -101,8 +101,13 @@ struct sym_hist_entry {
u64 period;
};
+enum {
+ PERCENT_HITS_LOCAL,
+ PERCENT_MAX,
+};
+
struct annotation_data {
- double percent;
+ double percent[PERCENT_MAX];
double percent_sum;
struct sym_hist_entry he;
};
@@ -134,6 +139,12 @@ struct disasm_line {
struct annotation_line al;
};
+static inline double annotation_data__percent(struct annotation_data *data,
+ unsigned int which)
+{
+ return which < PERCENT_MAX ? data->percent[which] : -1;
+}
+
static inline struct disasm_line *disasm_line(struct annotation_line *al)
{
return al ? container_of(al, struct disasm_line, al) : NULL;
--
2.17.1
next prev parent reply other threads:[~2018-08-04 13:06 UTC|newest]
Thread overview: 67+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-08-04 13:05 [PATCH 00/20] perf annotate: Make symbol__annotate_fprintf2 local Jiri Olsa
2018-08-04 13:05 ` [PATCH 01/20] " Jiri Olsa
2018-08-06 15:00 ` Arnaldo Carvalho de Melo
2018-08-18 11:25 ` [tip:perf/urgent] perf annotate: Make symbol__annotate_fprintf2() local tip-bot for Jiri Olsa
2018-08-04 13:05 ` [PATCH 02/20] perf annotate: Make annotation_line__max_percent static Jiri Olsa
2018-08-06 15:01 ` Arnaldo Carvalho de Melo
2018-08-18 11:26 ` [tip:perf/urgent] " tip-bot for Jiri Olsa
2018-08-04 13:05 ` [PATCH 03/20] perf annotate: Get rid of annotation__scnprintf_samples_period Jiri Olsa
2018-08-06 15:07 ` Arnaldo Carvalho de Melo
2018-08-18 11:26 ` [tip:perf/urgent] perf annotate: Get rid of annotation__scnprintf_samples_period() tip-bot for Jiri Olsa
2018-08-04 13:05 ` [PATCH 04/20] perf annotate: Rename struct annotation_line::samples* to data* Jiri Olsa
2018-08-06 15:08 ` Arnaldo Carvalho de Melo
2018-08-18 11:27 ` [tip:perf/urgent] " tip-bot for Jiri Olsa
2018-08-04 13:05 ` [PATCH 05/20] perf annotate: Rename local sample variables to data Jiri Olsa
2018-08-06 15:09 ` Arnaldo Carvalho de Melo
2018-08-18 11:27 ` [tip:perf/urgent] " tip-bot for Jiri Olsa
2018-08-04 13:05 ` [PATCH 06/20] perf annotate: Rename hist to sym_hist in annotation__calc_percent Jiri Olsa
2018-08-06 15:10 ` Arnaldo Carvalho de Melo
2018-08-18 11:28 ` [tip:perf/urgent] " tip-bot for Jiri Olsa
2018-08-04 13:05 ` [PATCH 07/20] perf annotate: Loop group events directly " Jiri Olsa
2018-08-06 15:12 ` Arnaldo Carvalho de Melo
2018-08-18 11:28 ` [tip:perf/urgent] perf annotate: Loop group events directly in annotation__calc_percent() tip-bot for Jiri Olsa
2018-08-04 13:05 ` Jiri Olsa [this message]
2018-08-06 15:14 ` [PATCH 08/20] perf annotate: Switch struct annotation_data::percent to array Arnaldo Carvalho de Melo
2018-08-18 11:29 ` [tip:perf/urgent] " tip-bot for Jiri Olsa
2018-08-04 13:05 ` [PATCH 09/20] perf annotate: Add PERCENT_HITS_GLOBAL percent value Jiri Olsa
2018-08-06 15:15 ` Arnaldo Carvalho de Melo
2018-08-18 11:29 ` [tip:perf/urgent] " tip-bot for Jiri Olsa
2018-08-04 13:05 ` [PATCH 10/20] perf annotate: Add PERCENT_PERIOD_LOCAL " Jiri Olsa
2018-08-06 15:16 ` Arnaldo Carvalho de Melo
2018-08-18 11:30 ` [tip:perf/urgent] " tip-bot for Jiri Olsa
2018-08-04 13:05 ` [PATCH 11/20] perf annotate: Add PERCENT_PERIOD_GLOBAL " Jiri Olsa
2018-08-06 15:16 ` Arnaldo Carvalho de Melo
2018-08-18 11:30 ` [tip:perf/urgent] " tip-bot for Jiri Olsa
2018-08-04 13:05 ` [PATCH 12/20] perf annotate: Add percent_type to struct annotation_options Jiri Olsa
2018-08-06 15:17 ` Arnaldo Carvalho de Melo
2018-08-18 11:31 ` [tip:perf/urgent] " tip-bot for Jiri Olsa
2018-08-04 13:05 ` [PATCH 13/20] perf annotate: Pass struct annotation_options to symbol__calc_lines Jiri Olsa
2018-08-06 15:18 ` Arnaldo Carvalho de Melo
2018-08-18 11:32 ` [tip:perf/urgent] perf annotate: Pass struct annotation_options to symbol__calc_lines() tip-bot for Jiri Olsa
2018-08-04 13:05 ` [PATCH 14/20] perf annotate: Pass struct annotation_options to map_symbol__annotation_dump Jiri Olsa
2018-08-06 13:45 ` Namhyung Kim
2018-08-06 14:24 ` Jiri Olsa
2018-08-06 15:22 ` Arnaldo Carvalho de Melo
2018-08-06 15:29 ` Jiri Olsa
2018-08-18 11:32 ` [tip:perf/urgent] perf annotate: Pass 'struct annotation_options' to map_symbol__annotation_dump() tip-bot for Jiri Olsa
2018-08-04 13:05 ` [PATCH 15/20] perf annotate: Pass browser percent_type in annotate_browser__calc_percent Jiri Olsa
2018-08-06 15:23 ` Arnaldo Carvalho de Melo
2018-08-18 11:33 ` [tip:perf/urgent] perf annotate: Pass browser percent_type in annotate_browser__calc_percent() tip-bot for Jiri Olsa
2018-08-04 13:05 ` [PATCH 16/20] perf annotate: Add support to togle percent type Jiri Olsa
2018-08-06 18:24 ` Arnaldo Carvalho de Melo
2018-08-18 11:33 ` [tip:perf/urgent] perf annotate: Add support to toggle " tip-bot for Jiri Olsa
2018-08-04 13:05 ` [PATCH 17/20] perf annotate: Make local period the default " Jiri Olsa
2018-08-06 18:26 ` Arnaldo Carvalho de Melo
2018-08-18 11:34 ` [tip:perf/urgent] " tip-bot for Jiri Olsa
2018-08-04 13:05 ` [PATCH 18/20] perf annotate: Display percent type in stdio output Jiri Olsa
2018-08-06 18:27 ` Arnaldo Carvalho de Melo
2018-08-18 11:34 ` [tip:perf/urgent] " tip-bot for Jiri Olsa
2018-08-04 13:05 ` [PATCH 19/20] perf annotate: Add --percent-type option Jiri Olsa
2018-08-06 13:49 ` Namhyung Kim
2018-08-06 14:26 ` Jiri Olsa
2018-08-06 18:33 ` Arnaldo Carvalho de Melo
2018-08-06 18:32 ` Arnaldo Carvalho de Melo
2018-08-18 11:35 ` [tip:perf/urgent] " tip-bot for Jiri Olsa
2018-08-04 13:05 ` [PATCH 20/20] perf report: " Jiri Olsa
2018-08-06 18:48 ` Arnaldo Carvalho de Melo
2018-08-18 11:35 ` [tip:perf/urgent] " tip-bot for Jiri Olsa
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180804130521.11408-9-jolsa@kernel.org \
--to=jolsa@kernel.org \
--cc=a.p.zijlstra@chello.nl \
--cc=acme@kernel.org \
--cc=alexander.shishkin@linux.intel.com \
--cc=dsahern@gmail.com \
--cc=eranian@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=namhyung@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).