All of lore.kernel.org
 help / color / mirror / Atom feed
From: Namhyung Kim <namhyung@kernel.org>
To: Jiri Olsa <jolsa@kernel.org>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>,
	lkml <linux-kernel@vger.kernel.org>,
	Ingo Molnar <mingo@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>,
	kernel-team@lge.com
Subject: Re: [PATCH 19/20] perf annotate: Add --percent-type option
Date: Mon, 6 Aug 2018 22:49:12 +0900	[thread overview]
Message-ID: <20180806134912.GB6983@danjae.aot.lge.com> (raw)
In-Reply-To: <20180804130521.11408-20-jolsa@kernel.org>

On Sat, Aug 04, 2018 at 03:05:20PM +0200, Jiri Olsa wrote:
> Adding --percent-type option to set annotation percent type
> from following choices:
>   global-period, local-period, global-hits, local-hits
> 
> Examples:
>   $ perf annotate --percent-type period-local --stdio | head -1
>    Percent         |      Source code ... es, percent: local period)
>   $ perf annotate --percent-type hits-local --stdio | head -1
>    Percent         |      Source code ... es, percent: local hits)
>   $ perf annotate --percent-type hits-global --stdio | head -1
>    Percent         |      Source code ... es, percent: global hits)
>   $ perf annotate --percent-type period-global --stdio | head -1
>    Percent         |      Source code ... es, percent: global period)
> 
> The local/global keywords set if the percentage is computed
> in the scope of the function (local) or the whole data (global).
> 
> The period/hits keywords set the base the percentage is computed
> on - the samples period or the number of samples (hits).

What about adding "period" as an alias to "local-period" (and same for
"hits" as well)?

Thanks,
Namhyung


> 
> Link: http://lkml.kernel.org/n/tip-ahnswy1p9rnjlkudhl2ig3gc@git.kernel.org
> Signed-off-by: Jiri Olsa <jolsa@kernel.org>
> ---
>  tools/perf/Documentation/perf-annotate.txt |  9 ++++
>  tools/perf/builtin-annotate.c              |  4 ++
>  tools/perf/util/annotate.c                 | 53 ++++++++++++++++++++++
>  tools/perf/util/annotate.h                 |  3 ++
>  4 files changed, 69 insertions(+)
> 
> diff --git a/tools/perf/Documentation/perf-annotate.txt b/tools/perf/Documentation/perf-annotate.txt
> index 749cc6055dac..e8c972f89357 100644
> --- a/tools/perf/Documentation/perf-annotate.txt
> +++ b/tools/perf/Documentation/perf-annotate.txt
> @@ -118,6 +118,15 @@ OPTIONS
>  --group::
>  	Show event group information together
>  
> +--percent-type::
> +	Set annotation percent type from following choices:
> +	  global-period, local-period, global-hits, local-hits
> +
> +	The local/global keywords set if the percentage is computed
> +	in the scope of the function (local) or the whole data (global).
> +	The period/hits keywords set the base the percentage is computed
> +	on - the samples period or the number of samples (hits).
> +
>  SEE ALSO
>  --------
>  linkperf:perf-record[1], linkperf:perf-report[1]
> diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c
> index 8180319285af..830481b8db26 100644
> --- a/tools/perf/builtin-annotate.c
> +++ b/tools/perf/builtin-annotate.c
> @@ -542,6 +542,10 @@ int cmd_annotate(int argc, const char **argv)
>  	OPT_CALLBACK_DEFAULT(0, "stdio-color", NULL, "mode",
>  			     "'always' (default), 'never' or 'auto' only applicable to --stdio mode",
>  			     stdio__config_color, "always"),
> +	OPT_CALLBACK(0, "percent-type", &annotate.opts, "local-period",
> +		     "Set percent type local/global-period/hits",
> +		     annotate_parse_percent_type),
> +
>  	OPT_END()
>  	};
>  	int ret;
> diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c
> index 6316fa96d984..f68636c0d95a 100644
> --- a/tools/perf/util/annotate.c
> +++ b/tools/perf/util/annotate.c
> @@ -2799,3 +2799,56 @@ void annotation_config__init(void)
>  	annotation__default_options.show_total_period = symbol_conf.show_total_period;
>  	annotation__default_options.show_nr_samples   = symbol_conf.show_nr_samples;
>  }
> +
> +static unsigned int parse_percent_type(char *str1, char *str2)
> +{
> +	unsigned int type = (unsigned int) -1;
> +
> +	if (!strcmp("period", str1)) {
> +		if (!strcmp("local", str2))
> +			type = PERCENT_PERIOD_LOCAL;
> +		else if (!strcmp("global", str2))
> +			type = PERCENT_PERIOD_GLOBAL;
> +	}
> +
> +	if (!strcmp("hits", str1)) {
> +		if (!strcmp("local", str2))
> +			type = PERCENT_HITS_LOCAL;
> +		else if (!strcmp("global", str2))
> +			type = PERCENT_HITS_GLOBAL;
> +	}
> +
> +	return type;
> +}
> +
> +int
> +annotate_parse_percent_type(const struct option *opt, const char *_str,
> +			    int unset __maybe_unused)
> +{
> +	struct annotation_options *opts = opt->value;
> +	unsigned int type;
> +	char *str1, *str2;
> +	int err = -1;
> +
> +	str1 = strdup(_str);
> +	if (!str1)
> +		return -ENOMEM;
> +
> +	str2 = strchr(str1, '-');
> +	if (!str2)
> +		goto out;
> +
> +	*str2++ = 0;
> +
> +	type = parse_percent_type(str1, str2);
> +	if (type == (unsigned int) -1)
> +		type = parse_percent_type(str2, str1);
> +	if (type != (unsigned int) -1) {
> +		opts->percent_type = type;
> +		err = 0;
> +	}
> +
> +out:
> +	free(str1);
> +	return err;
> +}
> diff --git a/tools/perf/util/annotate.h b/tools/perf/util/annotate.h
> index 760a6678edff..c7337f0a1823 100644
> --- a/tools/perf/util/annotate.h
> +++ b/tools/perf/util/annotate.h
> @@ -397,4 +397,7 @@ static inline int symbol__tui_annotate(struct symbol *sym __maybe_unused,
>  
>  void annotation_config__init(void);
>  
> +int
> +annotate_parse_percent_type(const struct option *opt, const char *_str,
> +			    int unset);
>  #endif	/* __PERF_ANNOTATE_H */
> -- 
> 2.17.1
> 

  reply	other threads:[~2018-08-06 13:54 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: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 [this message]
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=20180806134912.GB6983@danjae.aot.lge.com \
    --to=namhyung@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=jolsa@kernel.org \
    --cc=kernel-team@lge.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@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 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.