Re: [tip:perf/core] perf script: Print comm, fork and exit events also

2013-12-02 Thread Frederic Weisbecker
On Sat, Nov 30, 2013 at 04:53:07AM -0800, tip-bot for Namhyung Kim wrote:
> Commit-ID:  ad7ebb9a48f59bad2714b64725653a73d78b686e
> Gitweb: http://git.kernel.org/tip/ad7ebb9a48f59bad2714b64725653a73d78b686e
> Author: Namhyung Kim 
> AuthorDate: Tue, 26 Nov 2013 17:51:12 +0900
> Committer:  Arnaldo Carvalho de Melo 
> CommitDate: Wed, 27 Nov 2013 14:58:38 -0300
> 
> perf script: Print comm, fork and exit events also
> 
> If --show-task-events option is given, also print internal COMM, FORK
> and EXIT events.  It would be helpful for debugging.
> 
>   $ perf script --show-task-events
>   ...
>  swapper 0 [009] 3350640.335261: sched:sched_switch: 
> prev_comm=swapper/9
>sleep  9486 [009] 3350640.335509: PERF_RECORD_COMM: sleep:9486
>sleep  9486 [009] 3350640.335806: sched:sched_stat_runtime: 
> comm=sleep pid=9486
>  firefox  2635 [003] 3350641.275896: 
> PERF_RECORD_FORK(2635:9487):(2635:2635)
>  firefox  2635 [003] 3350641.275896: sched:sched_process_fork: 
> comm=firefox pid=2635
>sleep  9486 [009] 3350641.336009: 
> PERF_RECORD_EXIT(9486:9486):(9486:9486)
> 
> Signed-off-by: Namhyung Kim 
> Suggested-by: Frederic Weisbecker 

Thanks a lot for doing this Namhyung!
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [tip:perf/core] perf script: Print comm, fork and exit events also

2013-12-02 Thread Frederic Weisbecker
On Sat, Nov 30, 2013 at 04:53:07AM -0800, tip-bot for Namhyung Kim wrote:
 Commit-ID:  ad7ebb9a48f59bad2714b64725653a73d78b686e
 Gitweb: http://git.kernel.org/tip/ad7ebb9a48f59bad2714b64725653a73d78b686e
 Author: Namhyung Kim namhy...@kernel.org
 AuthorDate: Tue, 26 Nov 2013 17:51:12 +0900
 Committer:  Arnaldo Carvalho de Melo a...@redhat.com
 CommitDate: Wed, 27 Nov 2013 14:58:38 -0300
 
 perf script: Print comm, fork and exit events also
 
 If --show-task-events option is given, also print internal COMM, FORK
 and EXIT events.  It would be helpful for debugging.
 
   $ perf script --show-task-events
   ...
  swapper 0 [009] 3350640.335261: sched:sched_switch: 
 prev_comm=swapper/9
sleep  9486 [009] 3350640.335509: PERF_RECORD_COMM: sleep:9486
sleep  9486 [009] 3350640.335806: sched:sched_stat_runtime: 
 comm=sleep pid=9486
  firefox  2635 [003] 3350641.275896: 
 PERF_RECORD_FORK(2635:9487):(2635:2635)
  firefox  2635 [003] 3350641.275896: sched:sched_process_fork: 
 comm=firefox pid=2635
sleep  9486 [009] 3350641.336009: 
 PERF_RECORD_EXIT(9486:9486):(9486:9486)
 
 Signed-off-by: Namhyung Kim namhy...@kernel.org
 Suggested-by: Frederic Weisbecker fweis...@gmail.com

Thanks a lot for doing this Namhyung!
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[tip:perf/core] perf script: Print comm, fork and exit events also

2013-11-30 Thread tip-bot for Namhyung Kim
Commit-ID:  ad7ebb9a48f59bad2714b64725653a73d78b686e
Gitweb: http://git.kernel.org/tip/ad7ebb9a48f59bad2714b64725653a73d78b686e
Author: Namhyung Kim 
AuthorDate: Tue, 26 Nov 2013 17:51:12 +0900
Committer:  Arnaldo Carvalho de Melo 
CommitDate: Wed, 27 Nov 2013 14:58:38 -0300

perf script: Print comm, fork and exit events also

If --show-task-events option is given, also print internal COMM, FORK
and EXIT events.  It would be helpful for debugging.

  $ perf script --show-task-events
  ...
 swapper 0 [009] 3350640.335261: sched:sched_switch: 
prev_comm=swapper/9
   sleep  9486 [009] 3350640.335509: PERF_RECORD_COMM: sleep:9486
   sleep  9486 [009] 3350640.335806: sched:sched_stat_runtime: 
comm=sleep pid=9486
 firefox  2635 [003] 3350641.275896: 
PERF_RECORD_FORK(2635:9487):(2635:2635)
 firefox  2635 [003] 3350641.275896: sched:sched_process_fork: 
comm=firefox pid=2635
   sleep  9486 [009] 3350641.336009: 
PERF_RECORD_EXIT(9486:9486):(9486:9486)

Signed-off-by: Namhyung Kim 
Suggested-by: Frederic Weisbecker 
Reviewed-by: David Ahern 
Cc: Ingo Molnar 
Cc: Namhyung Kim 
Cc: Paul Mackerras 
Cc: Peter Zijlstra 
Link: 
http://lkml.kernel.org/r/1385455873-25865-1-git-send-email-namhy...@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo 
---
 tools/perf/Documentation/perf-script.txt |   3 +
 tools/perf/builtin-script.c  | 105 +++
 2 files changed, 108 insertions(+)

diff --git a/tools/perf/Documentation/perf-script.txt 
b/tools/perf/Documentation/perf-script.txt
index e9cbfcd..67af9b7 100644
--- a/tools/perf/Documentation/perf-script.txt
+++ b/tools/perf/Documentation/perf-script.txt
@@ -203,6 +203,9 @@ OPTIONS
 --show-kernel-path::
Try to resolve the path of [kernel.kallsyms]
 
+--show-task-events
+   Display task related events (e.g. FORK, COMM, EXIT).
+
 SEE ALSO
 
 linkperf:perf-record[1], linkperf:perf-script-perl[1],
diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c
index 9f3ba44..e2b9aff 100644
--- a/tools/perf/builtin-script.c
+++ b/tools/perf/builtin-script.c
@@ -572,6 +572,7 @@ static int process_sample_event(struct perf_tool *tool 
__maybe_unused,
 struct perf_script {
struct perf_tooltool;
struct perf_session *session;
+   boolshow_task_events;
 };
 
 static int process_attr(struct perf_tool *tool, union perf_event *event,
@@ -602,6 +603,101 @@ static int process_attr(struct perf_tool *tool, union 
perf_event *event,
return perf_evsel__check_attr(evsel, scr->session);
 }
 
+static int process_comm_event(struct perf_tool *tool,
+ union perf_event *event,
+ struct perf_sample *sample,
+ struct machine *machine)
+{
+   struct thread *thread;
+   struct perf_script *script = container_of(tool, struct perf_script, 
tool);
+   struct perf_session *session = script->session;
+   struct perf_evsel *evsel = perf_evlist__first(session->evlist);
+   int ret = -1;
+
+   thread = machine__findnew_thread(machine, event->comm.pid, 
event->comm.tid);
+   if (thread == NULL) {
+   pr_debug("problem processing COMM event, skipping it.\n");
+   return -1;
+   }
+
+   if (perf_event__process_comm(tool, event, sample, machine) < 0)
+   goto out;
+
+   if (!evsel->attr.sample_id_all) {
+   sample->cpu = 0;
+   sample->time = 0;
+   sample->tid = event->comm.tid;
+   sample->pid = event->comm.pid;
+   }
+   print_sample_start(sample, thread, evsel);
+   perf_event__fprintf(event, stdout);
+   ret = 0;
+
+out:
+   return ret;
+}
+
+static int process_fork_event(struct perf_tool *tool,
+ union perf_event *event,
+ struct perf_sample *sample,
+ struct machine *machine)
+{
+   struct thread *thread;
+   struct perf_script *script = container_of(tool, struct perf_script, 
tool);
+   struct perf_session *session = script->session;
+   struct perf_evsel *evsel = perf_evlist__first(session->evlist);
+
+   if (perf_event__process_fork(tool, event, sample, machine) < 0)
+   return -1;
+
+   thread = machine__findnew_thread(machine, event->fork.pid, 
event->fork.tid);
+   if (thread == NULL) {
+   pr_debug("problem processing FORK event, skipping it.\n");
+   return -1;
+   }
+
+   if (!evsel->attr.sample_id_all) {
+   sample->cpu = 0;
+   sample->time = event->fork.time;
+   sample->tid = event->fork.tid;
+   sample->pid = event->fork.pid;
+   }
+   print_sample_start(sample, thread, evsel);
+   perf_event__fprintf(event, stdout);
+
+   return 0;
+}
+static int process_exit_event(struct 

[tip:perf/core] perf script: Print comm, fork and exit events also

2013-11-30 Thread tip-bot for Namhyung Kim
Commit-ID:  ad7ebb9a48f59bad2714b64725653a73d78b686e
Gitweb: http://git.kernel.org/tip/ad7ebb9a48f59bad2714b64725653a73d78b686e
Author: Namhyung Kim namhy...@kernel.org
AuthorDate: Tue, 26 Nov 2013 17:51:12 +0900
Committer:  Arnaldo Carvalho de Melo a...@redhat.com
CommitDate: Wed, 27 Nov 2013 14:58:38 -0300

perf script: Print comm, fork and exit events also

If --show-task-events option is given, also print internal COMM, FORK
and EXIT events.  It would be helpful for debugging.

  $ perf script --show-task-events
  ...
 swapper 0 [009] 3350640.335261: sched:sched_switch: 
prev_comm=swapper/9
   sleep  9486 [009] 3350640.335509: PERF_RECORD_COMM: sleep:9486
   sleep  9486 [009] 3350640.335806: sched:sched_stat_runtime: 
comm=sleep pid=9486
 firefox  2635 [003] 3350641.275896: 
PERF_RECORD_FORK(2635:9487):(2635:2635)
 firefox  2635 [003] 3350641.275896: sched:sched_process_fork: 
comm=firefox pid=2635
   sleep  9486 [009] 3350641.336009: 
PERF_RECORD_EXIT(9486:9486):(9486:9486)

Signed-off-by: Namhyung Kim namhy...@kernel.org
Suggested-by: Frederic Weisbecker fweis...@gmail.com
Reviewed-by: David Ahern dsah...@gmail.com
Cc: Ingo Molnar mi...@kernel.org
Cc: Namhyung Kim namhyung@lge.com
Cc: Paul Mackerras pau...@samba.org
Cc: Peter Zijlstra a.p.zijls...@chello.nl
Link: 
http://lkml.kernel.org/r/1385455873-25865-1-git-send-email-namhy...@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo a...@redhat.com
---
 tools/perf/Documentation/perf-script.txt |   3 +
 tools/perf/builtin-script.c  | 105 +++
 2 files changed, 108 insertions(+)

diff --git a/tools/perf/Documentation/perf-script.txt 
b/tools/perf/Documentation/perf-script.txt
index e9cbfcd..67af9b7 100644
--- a/tools/perf/Documentation/perf-script.txt
+++ b/tools/perf/Documentation/perf-script.txt
@@ -203,6 +203,9 @@ OPTIONS
 --show-kernel-path::
Try to resolve the path of [kernel.kallsyms]
 
+--show-task-events
+   Display task related events (e.g. FORK, COMM, EXIT).
+
 SEE ALSO
 
 linkperf:perf-record[1], linkperf:perf-script-perl[1],
diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c
index 9f3ba44..e2b9aff 100644
--- a/tools/perf/builtin-script.c
+++ b/tools/perf/builtin-script.c
@@ -572,6 +572,7 @@ static int process_sample_event(struct perf_tool *tool 
__maybe_unused,
 struct perf_script {
struct perf_tooltool;
struct perf_session *session;
+   boolshow_task_events;
 };
 
 static int process_attr(struct perf_tool *tool, union perf_event *event,
@@ -602,6 +603,101 @@ static int process_attr(struct perf_tool *tool, union 
perf_event *event,
return perf_evsel__check_attr(evsel, scr-session);
 }
 
+static int process_comm_event(struct perf_tool *tool,
+ union perf_event *event,
+ struct perf_sample *sample,
+ struct machine *machine)
+{
+   struct thread *thread;
+   struct perf_script *script = container_of(tool, struct perf_script, 
tool);
+   struct perf_session *session = script-session;
+   struct perf_evsel *evsel = perf_evlist__first(session-evlist);
+   int ret = -1;
+
+   thread = machine__findnew_thread(machine, event-comm.pid, 
event-comm.tid);
+   if (thread == NULL) {
+   pr_debug(problem processing COMM event, skipping it.\n);
+   return -1;
+   }
+
+   if (perf_event__process_comm(tool, event, sample, machine)  0)
+   goto out;
+
+   if (!evsel-attr.sample_id_all) {
+   sample-cpu = 0;
+   sample-time = 0;
+   sample-tid = event-comm.tid;
+   sample-pid = event-comm.pid;
+   }
+   print_sample_start(sample, thread, evsel);
+   perf_event__fprintf(event, stdout);
+   ret = 0;
+
+out:
+   return ret;
+}
+
+static int process_fork_event(struct perf_tool *tool,
+ union perf_event *event,
+ struct perf_sample *sample,
+ struct machine *machine)
+{
+   struct thread *thread;
+   struct perf_script *script = container_of(tool, struct perf_script, 
tool);
+   struct perf_session *session = script-session;
+   struct perf_evsel *evsel = perf_evlist__first(session-evlist);
+
+   if (perf_event__process_fork(tool, event, sample, machine)  0)
+   return -1;
+
+   thread = machine__findnew_thread(machine, event-fork.pid, 
event-fork.tid);
+   if (thread == NULL) {
+   pr_debug(problem processing FORK event, skipping it.\n);
+   return -1;
+   }
+
+   if (!evsel-attr.sample_id_all) {
+   sample-cpu = 0;
+   sample-time = event-fork.time;
+   sample-tid = event-fork.tid;
+   sample-pid = event-fork.pid;
+   }
+