From: tip-bot for Jiri Olsa <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: eranian@google.com, alexander.shishkin@linux.intel.com,
tglx@linutronix.de, dsahern@gmail.com, mingo@kernel.org,
hpa@zytor.com, peterz@infradead.org, acme@redhat.com,
jolsa@kernel.org, namhyung@kernel.org,
linux-kernel@vger.kernel.org
Subject: [tip:perf/urgent] perf annotate: Switch struct annotation_data::percent to array
Date: Sat, 18 Aug 2018 04:29:25 -0700 [thread overview]
Message-ID: <tip-6d9f0c2d5ef7568c29fa5927748c4915a9c7760a@git.kernel.org> (raw)
In-Reply-To: <20180804130521.11408-9-jolsa@kernel.org>
Commit-ID: 6d9f0c2d5ef7568c29fa5927748c4915a9c7760a
Gitweb: https://git.kernel.org/tip/6d9f0c2d5ef7568c29fa5927748c4915a9c7760a
Author: Jiri Olsa <jolsa@kernel.org>
AuthorDate: Sat, 4 Aug 2018 15:05:09 +0200
Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Wed, 8 Aug 2018 15:55:48 -0300
perf annotate: Switch struct annotation_data::percent to array
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.
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/20180804130521.11408-9-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
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;
next prev parent reply other threads:[~2018-08-18 11:29 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 ` [PATCH 08/20] perf annotate: Switch struct annotation_data::percent to array Jiri Olsa
2018-08-06 15:14 ` Arnaldo Carvalho de Melo
2018-08-18 11:29 ` tip-bot for Jiri Olsa [this message]
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=tip-6d9f0c2d5ef7568c29fa5927748c4915a9c7760a@git.kernel.org \
--to=tipbot@zytor.com \
--cc=acme@redhat.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=dsahern@gmail.com \
--cc=eranian@google.com \
--cc=hpa@zytor.com \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.