All of lore.kernel.org
 help / color / mirror / Atom feed
From: Namhyung Kim <namhyung@kernel.org>
To: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Ingo Molnar <mingo@kernel.org>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	Jiri Olsa <jolsa@kernel.org>, LKML <linux-kernel@vger.kernel.org>,
	David Ahern <dsahern@gmail.com>,
	Steven Rostedt <rostedt@goodmis.org>,
	Frederic Weisbecker <fweisbec@gmail.com>,
	Andi Kleen <andi@firstfloor.org>, Wang Nan <wangnan0@huawei.com>
Subject: Re: [PATCH v3 5/5] perf evlist: Add --trace-fields option to show trace fields
Date: Thu, 7 Jan 2016 08:42:05 +0900	[thread overview]
Message-ID: <20160106234205.GD8053@sejong> (raw)
In-Reply-To: <20160106232949.GD2012@kernel.org>

On Wed, Jan 06, 2016 at 08:29:49PM -0300, Arnaldo Carvalho de Melo wrote:
> Em Thu, Jan 07, 2016 at 08:21:44AM +0900, Namhyung Kim escreveu:
> > On Wed, Jan 06, 2016 at 08:10:51PM -0300, Arnaldo Carvalho de Melo wrote:
> > > Em Wed, Jan 06, 2016 at 09:55:01AM +0900, Namhyung Kim escreveu:
> > > > To use dynamic sort keys, it might be good to add an option to see the
> > > > list of field names.
> > > > 
> > > >   $ perf evlist -i perf.data.sched
> > > >   sched:sched_switch
> > > >   sched:sched_stat_wait
> > > >   sched:sched_stat_sleep
> > > >   sched:sched_stat_iowait
> > > >   sched:sched_stat_runtime
> > > >   sched:sched_process_fork
> > > >   sched:sched_wakeup
> > > >   sched:sched_wakeup_new
> > > >   sched:sched_migrate_task
> > > >   # Tip: use 'perf evlist --trace-fields' to show fields for tracepoint events
> > > 
> > > Ok, almost there, question is: if I ask explicitely for
> > > "--trace-fields", why should we have the "trace_fields=" in all lines,
> > > instead of just:
> > > 
> > >  
> > >    $ perf evlist -i perf.data.sched --trace-fields
> > >    sched:sched_switch: prev_comm,prev_pid,prev_prio,prev_state,next_comm,next_pid,next_prio
> > >    sched:sched_stat_wait: comm,pid,delay
> > > 
> > > ?
> > 
> > I made it to work with other options too, like 'perf evlist --freq --trace-fields'.
> > In that case you may want to see it. :)
> 
> I see... And then you want to show those at the same time... Would you
> have an use case for that? Or would it be better to make them mutually
> exclusive? /me unsure...

I don't have one.  But I think I sometimes want to see it with
-v/--verbose option.  Hmm.. do you think --verbose should imply
--trace-fields?

Thanks,
Namhyung


> > > 
> > > I like the lack of spaces after commans, this way we can double click
> > > and select the whole list, then edit it, etc.
> > > 
> > > - Arnaldo
> > >  
> > > >   $ perf evlist -i perf.data.sched --trace-fields
> > > >   sched:sched_switch: trace_fields=prev_comm,prev_pid,prev_prio,prev_state,next_comm,next_pid,next_prio
> > > >   sched:sched_stat_wait: trace_fields=comm,pid,delay
> > > >   sched:sched_stat_sleep: trace_fields=comm,pid,delay
> > > >   sched:sched_stat_iowait: trace_fields=comm,pid,delay
> > > >   sched:sched_stat_runtime: trace_fields=comm,pid,runtime,vruntime
> > > >   sched:sched_process_fork: trace_fields=parent_comm,parent_pid,child_comm,child_pid
> > > >   sched:sched_wakeup: trace_fields=comm,pid,prio,success,target_cpu
> > > >   sched:sched_wakeup_new: trace_fields=comm,pid,prio,success,target_cpu
> > > >   sched:sched_migrate_task: trace_fields=comm,pid,prio,orig_cpu,dest_cpu
> > > > 
> > > > Signed-off-by: Namhyung Kim <namhyung@kernel.org>
> > > > ---
> > > >  tools/perf/Documentation/perf-evlist.txt |  3 +++
> > > >  tools/perf/builtin-evlist.c              | 11 ++++++++++-
> > > >  tools/perf/util/evsel.c                  | 23 +++++++++++++++++++++++
> > > >  tools/perf/util/evsel.h                  |  1 +
> > > >  4 files changed, 37 insertions(+), 1 deletion(-)
> > > > 
> > > > diff --git a/tools/perf/Documentation/perf-evlist.txt b/tools/perf/Documentation/perf-evlist.txt
> > > > index 1ceb3700ffbb..6f7200fb85cf 100644
> > > > --- a/tools/perf/Documentation/perf-evlist.txt
> > > > +++ b/tools/perf/Documentation/perf-evlist.txt
> > > > @@ -32,6 +32,9 @@ OPTIONS
> > > >  --group::
> > > >  	Show event group information.
> > > >  
> > > > +--trace-fields::
> > > > +	Show tracepoint field names.
> > > > +
> > > >  SEE ALSO
> > > >  --------
> > > >  linkperf:perf-record[1], linkperf:perf-list[1],
> > > > diff --git a/tools/perf/builtin-evlist.c b/tools/perf/builtin-evlist.c
> > > > index 08a7d36a2cf8..8a31f511e1a0 100644
> > > > --- a/tools/perf/builtin-evlist.c
> > > > +++ b/tools/perf/builtin-evlist.c
> > > > @@ -26,14 +26,22 @@ static int __cmd_evlist(const char *file_name, struct perf_attr_details *details
> > > >  		.mode = PERF_DATA_MODE_READ,
> > > >  		.force = details->force,
> > > >  	};
> > > > +	bool has_tracepoint = false;
> > > >  
> > > >  	session = perf_session__new(&file, 0, NULL);
> > > >  	if (session == NULL)
> > > >  		return -1;
> > > >  
> > > > -	evlist__for_each(session->evlist, pos)
> > > > +	evlist__for_each(session->evlist, pos) {
> > > >  		perf_evsel__fprintf(pos, details, stdout);
> > > >  
> > > > +		if (pos->attr.type == PERF_TYPE_TRACEPOINT)
> > > > +			has_tracepoint = true;
> > > > +	}
> > > > +
> > > > +	if (has_tracepoint && !details->trace_fields)
> > > > +		printf("# Tip: use 'perf evlist --trace-fields' to show fields for tracepoint events\n");
> > > > +
> > > >  	perf_session__delete(session);
> > > >  	return 0;
> > > >  }
> > > > @@ -49,6 +57,7 @@ int cmd_evlist(int argc, const char **argv, const char *prefix __maybe_unused)
> > > >  	OPT_BOOLEAN('g', "group", &details.event_group,
> > > >  		    "Show event group information"),
> > > >  	OPT_BOOLEAN('f', "force", &details.force, "don't complain, do it"),
> > > > +	OPT_BOOLEAN(0, "trace-fields", &details.trace_fields, "Show tracepoint fields"),
> > > >  	OPT_END()
> > > >  	};
> > > >  	const char * const evlist_usage[] = {
> > > > diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
> > > > index 544e4400de13..b7822c98fcca 100644
> > > > --- a/tools/perf/util/evsel.c
> > > > +++ b/tools/perf/util/evsel.c
> > > > @@ -2298,6 +2298,29 @@ int perf_evsel__fprintf(struct perf_evsel *evsel,
> > > >  		printed += comma_fprintf(fp, &first, " %s=%" PRIu64,
> > > >  					 term, (u64)evsel->attr.sample_freq);
> > > >  	}
> > > > +
> > > > +	if (details->trace_fields) {
> > > > +		struct format_field *field;
> > > > +
> > > > +		if (evsel->attr.type != PERF_TYPE_TRACEPOINT) {
> > > > +			printed += comma_fprintf(fp, &first, " (not a tracepoint)");
> > > > +			goto out;
> > > > +		}
> > > > +
> > > > +		field = evsel->tp_format->format.fields;
> > > > +		if (field == NULL) {
> > > > +			printed += comma_fprintf(fp, &first, " (no trace field)");
> > > > +			goto out;
> > > > +		}
> > > > +
> > > > +		printed += comma_fprintf(fp, &first, " trace_fields=%s", field->name);
> > > > +
> > > > +		field = field->next;
> > > > +		while (field) {
> > > > +			printed += comma_fprintf(fp, &first, "%s", field->name);
> > > > +			field = field->next;
> > > > +		}
> > > > +	}
> > > >  out:
> > > >  	fputc('\n', fp);
> > > >  	return ++printed;
> > > > diff --git a/tools/perf/util/evsel.h b/tools/perf/util/evsel.h
> > > > index 5ded1fc0341e..8e75434bd01c 100644
> > > > --- a/tools/perf/util/evsel.h
> > > > +++ b/tools/perf/util/evsel.h
> > > > @@ -369,6 +369,7 @@ struct perf_attr_details {
> > > >  	bool verbose;
> > > >  	bool event_group;
> > > >  	bool force;
> > > > +	bool trace_fields;
> > > >  };
> > > >  
> > > >  int perf_evsel__fprintf(struct perf_evsel *evsel,
> > > > -- 
> > > > 2.6.4

  reply	other threads:[~2016-01-06 23:42 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-06  0:54 [PATCH v3 1/5] perf tools: Add all matching dynamic sort keys for field name Namhyung Kim
2016-01-06  0:54 ` [PATCH v3 2/5] perf tools: Add document for dynamic sort keys Namhyung Kim
2016-01-06  0:54 ` [PATCH v3 3/5] perf tools: Fix dynamic sort keys to sort properly Namhyung Kim
2016-01-06 23:06   ` Arnaldo Carvalho de Melo
2016-01-06 23:26     ` Namhyung Kim
2016-01-06 23:31       ` Arnaldo Carvalho de Melo
2016-01-06 23:43         ` Namhyung Kim
2016-01-06 23:50         ` Arnaldo Carvalho de Melo
2016-01-07  0:07           ` Namhyung Kim
2016-01-06  0:55 ` [PATCH v3 4/5] perf tools: Support dynamic sort keys for -F/--fields Namhyung Kim
2016-01-06  0:55 ` [PATCH v3 5/5] perf evlist: Add --trace-fields option to show trace fields Namhyung Kim
2016-01-06 23:10   ` Arnaldo Carvalho de Melo
2016-01-06 23:21     ` Namhyung Kim
2016-01-06 23:29       ` Arnaldo Carvalho de Melo
2016-01-06 23:42         ` Namhyung Kim [this message]
2016-01-06 11:19 ` [PATCH v3 1/5] perf tools: Add all matching dynamic sort keys for field name Jiri Olsa
2016-01-06 16:29   ` Arnaldo Carvalho de Melo
2016-01-06 23:09     ` Namhyung Kim

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=20160106234205.GD8053@sejong \
    --to=namhyung@kernel.org \
    --cc=a.p.zijlstra@chello.nl \
    --cc=acme@kernel.org \
    --cc=andi@firstfloor.org \
    --cc=dsahern@gmail.com \
    --cc=fweisbec@gmail.com \
    --cc=jolsa@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=rostedt@goodmis.org \
    --cc=wangnan0@huawei.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 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.