public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Taeung Song <treeze.taeung@gmail.com>
Cc: linux-kernel@vger.kernel.org, Namhyung Kim <namhyung@kernel.org>,
	Milian Wolff <milian.wolff@kdab.com>,
	Jiri Olsa <jolsa@redhat.com>
Subject: Re: [PATCH 3/4] perf annotate: Support --show-nr-samples option
Date: Wed, 12 Jul 2017 17:13:45 -0300	[thread overview]
Message-ID: <20170712201345.GS27350@kernel.org> (raw)
In-Reply-To: <1499811254-9354-1-git-send-email-treeze.taeung@gmail.com>

Em Wed, Jul 12, 2017 at 07:14:14AM +0900, Taeung Song escreveu:
> Add --show-nr-samples option to perf-annotate
> so that it corresponds with perf-report.
> Additionally h->sum is properly renamed h->nr_samples.

Please first do a patch renaming ->sum to ->nr_samples, then a patch
supportign --show-nr-samples.

We can have this new --show-nr-samples option, but perhaps the best way
would be to have a hotkey (I guess we have for period, right) for this?

At some point would be good to have some 'S' or other hotkey to save the
current set of output modifiers (nr-samples column, period column, etc)
in the .perfconfig file.

- Arnaldo
 
> Cc: Namhyung Kim <namhyung@kernel.org>
> Cc: Milian Wolff <milian.wolff@kdab.com>
> Cc: Jiri Olsa <jolsa@redhat.com>
> Signed-off-by: Taeung Song <treeze.taeung@gmail.com>
> ---
>  tools/perf/builtin-annotate.c |  2 ++
>  tools/perf/ui/gtk/annotate.c  |  2 +-
>  tools/perf/util/annotate.c    | 30 +++++++++++++++++-------------
>  tools/perf/util/annotate.h    |  2 +-
>  4 files changed, 21 insertions(+), 15 deletions(-)
> 
> diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c
> index f314661..3cb0223 100644
> --- a/tools/perf/builtin-annotate.c
> +++ b/tools/perf/builtin-annotate.c
> @@ -444,6 +444,8 @@ int cmd_annotate(int argc, const char **argv)
>  		    "Show event group information together"),
>  	OPT_BOOLEAN(0, "show-total-period", &symbol_conf.show_total_period,
>  		    "Show a column with the sum of periods"),
> +	OPT_BOOLEAN('n', "show-nr-samples", &symbol_conf.show_nr_samples,
> +		    "Show a column with the number of samples"),
>  	OPT_CALLBACK_DEFAULT(0, "stdio-color", NULL, "mode",
>  			     "'always' (default), 'never' or 'auto' only applicable to --stdio mode",
>  			     stdio__config_color, "always"),
> diff --git a/tools/perf/ui/gtk/annotate.c b/tools/perf/ui/gtk/annotate.c
> index d736fd5..0217619 100644
> --- a/tools/perf/ui/gtk/annotate.c
> +++ b/tools/perf/ui/gtk/annotate.c
> @@ -37,7 +37,7 @@ static int perf_gtk__get_percent(char *buf, size_t size, struct symbol *sym,
>  	if (!symbol_conf.event_group && !symhist->addr[dl->offset].nr_samples)
>  		return 0;
>  
> -	percent = 100.0 * symhist->addr[dl->offset].nr_samples / symhist->sum;
> +	percent = 100.0 * symhist->addr[dl->offset].nr_samples / symhist->nr_samples;
>  
>  	markup = perf_gtk__get_percent_color(percent);
>  	if (markup)
> diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c
> index f7aeb5f..b19e734 100644
> --- a/tools/perf/util/annotate.c
> +++ b/tools/perf/util/annotate.c
> @@ -713,7 +713,7 @@ static int __symbol__inc_addr_samples(struct symbol *sym, struct map *map,
>  
>  	offset = addr - sym->start;
>  	h = annotation__histogram(notes, evidx);
> -	h->sum++;
> +	h->nr_samples++;
>  	h->addr[offset].nr_samples++;
>  
>  	pr_debug3("%#" PRIx64 " %s: period++ [addr: %#" PRIx64 ", %#" PRIx64
> @@ -837,7 +837,7 @@ int hist_entry__inc_addr_samples(struct hist_entry *he, struct perf_sample *samp
>  
>  	offset = addr - sym->start;
>  	h = annotation__histogram(notes, evidx);
> -	h->sum++;
> +	h->nr_samples++;
>  	h->addr[offset].nr_samples++;
>  	h->total_period += sample->period;
>  	h->addr[offset].period += sample->period;
> @@ -985,10 +985,10 @@ double disasm__calc_percent(struct annotation *notes, int evidx, s64 offset,
>  			p += h->addr[offset++].period;
>  		}
>  
> -		if (h->sum) {
> +		if (h->nr_samples) {
>  			*nr_samples = hits;
>  			*period = p;
> -			percent = 100.0 * hits / h->sum;
> +			percent = 100.0 * hits / h->nr_samples;
>  		}
>  	}
>  
> @@ -1165,6 +1165,9 @@ static int disasm_line__print(struct disasm_line *dl, struct symbol *sym, u64 st
>  			if (symbol_conf.show_total_period)
>  				color_fprintf(stdout, color, " %11" PRIu64,
>  					      period);
> +			else if (symbol_conf.show_nr_samples)
> +				color_fprintf(stdout, color, " %7" PRIu64,
> +					      nr_samples);
>  			else
>  				color_fprintf(stdout, color, " %7.2f", percent);
>  		}
> @@ -1711,13 +1714,13 @@ static int symbol__get_source_line(struct symbol *sym, struct map *map,
>  	struct sym_hist *h = annotation__histogram(notes, evidx);
>  	struct rb_root tmp_root = RB_ROOT;
>  	int nr_pcnt = 1;
> -	u64 h_sum = h->sum;
> +	u64 h_sum = h->nr_samples;
>  	size_t sizeof_src_line = sizeof(struct source_line);
>  
>  	if (perf_evsel__is_group_event(evsel)) {
>  		for (i = 1; i < evsel->nr_members; i++) {
>  			h = annotation__histogram(notes, evidx + i);
> -			h_sum += h->sum;
> +			h_sum += h->nr_samples;
>  		}
>  		nr_pcnt = evsel->nr_members;
>  		sizeof_src_line += (nr_pcnt - 1) * sizeof(src_line->samples);
> @@ -1743,8 +1746,8 @@ static int symbol__get_source_line(struct symbol *sym, struct map *map,
>  
>  			h = annotation__histogram(notes, evidx + k);
>  			nr_samples = h->addr[i].nr_samples;
> -			if (h->sum)
> -				percent = 100.0 * nr_samples / h->sum;
> +			if (h->nr_samples)
> +				percent = 100.0 * nr_samples / h->nr_samples;
>  
>  			if (percent > percent_max)
>  				percent_max = percent;
> @@ -1816,7 +1819,7 @@ static void symbol__annotate_hits(struct symbol *sym, struct perf_evsel *evsel)
>  		if (h->addr[offset].nr_samples != 0)
>  			printf("%*" PRIx64 ": %" PRIu64 "\n", BITS_PER_LONG / 2,
>  			       sym->start + offset, h->addr[offset].nr_samples);
> -	printf("%*s: %" PRIu64 "\n", BITS_PER_LONG / 2, "h->sum", h->sum);
> +	printf("%*s: %" PRIu64 "\n", BITS_PER_LONG / 2, "h->nr_samples", h->nr_samples);
>  }
>  
>  int symbol__annotate_printf(struct symbol *sym, struct map *map,
> @@ -1857,9 +1860,10 @@ int symbol__annotate_printf(struct symbol *sym, struct map *map,
>  
>  	graph_dotted_len = printf(" %-*.*s|	Source code & Disassembly of %s for %s (%" PRIu64 " %s)\n",
>  				  width, width,
> -				  symbol_conf.show_total_period ? "Event count" : "Percent",
> +				  symbol_conf.show_total_period ? "Event count" :
> +				  symbol_conf.show_nr_samples ? "Samples" : "Percent",
>  				  d_filename, evsel_name,
> -				  symbol_conf.show_total_period ? h->total_period : h->sum,
> +				  symbol_conf.show_total_period ? h->total_period : h->nr_samples,
>  				  symbol_conf.show_total_period ? "event count" : "samples");
>  
>  	printf("%-*.*s----\n",
> @@ -1924,10 +1928,10 @@ void symbol__annotate_decay_histogram(struct symbol *sym, int evidx)
>  	struct sym_hist *h = annotation__histogram(notes, evidx);
>  	int len = symbol__size(sym), offset;
>  
> -	h->sum = 0;
> +	h->nr_samples = 0;
>  	for (offset = 0; offset < len; ++offset) {
>  		h->addr[offset].nr_samples = h->addr[offset].nr_samples * 7 / 8;
> -		h->sum += h->addr[offset].nr_samples;
> +		h->nr_samples += h->addr[offset].nr_samples;
>  	}
>  }
>  
> diff --git a/tools/perf/util/annotate.h b/tools/perf/util/annotate.h
> index 6b2e645..e4d444a 100644
> --- a/tools/perf/util/annotate.h
> +++ b/tools/perf/util/annotate.h
> @@ -86,7 +86,7 @@ struct sym_sample {
>  };
>  
>  struct sym_hist {
> -	u64		sum;
> +	u64		nr_samples;
>  	u64		total_period;
>  	struct sym_sample addr[0];
>  };
> -- 
> 2.7.4

  reply	other threads:[~2017-07-12 20:13 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-07-11 22:14 [PATCH 3/4] perf annotate: Support --show-nr-samples option Taeung Song
2017-07-12 20:13 ` Arnaldo Carvalho de Melo [this message]
2017-07-13 13:11   ` Taeung Song
2017-07-13 17:10   ` Taeung Song

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=20170712201345.GS27350@kernel.org \
    --to=acme@kernel.org \
    --cc=jolsa@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=milian.wolff@kdab.com \
    --cc=namhyung@kernel.org \
    --cc=treeze.taeung@gmail.com \
    /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