aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnaldo Carvalho de Melo <acme@redhat.com>2016-10-18 10:28:32 -0400
committerArnaldo Carvalho de Melo <acme@redhat.com>2016-10-24 10:07:46 -0400
commitecf1e2253ea79c6204f4d6a5e756e8fb4aed5a7e (patch)
treef9e32f7b85ff2cacc974145d65e09bd6b36be399
parent1f36946019ee6a24bbbf807eb7e9ba6d4912793b (diff)
perf trace: Use the syscall raw_syscalls:sys_enter timestamp
Instead of the one when another syscall takes place while another is being processed (in another CPU, but we show it serialized, so need to "interrupt" the other), and also when finally showing the sys_enter + sys_exit + duration, where we were showing the sample->time for the sys_exit, duh. Before: # perf trace sleep 1 <SNIP> 0.373 ( 0.001 ms): close(fd: 3 ) = 0 1000.626 (1000.211 ms): nanosleep(rqtp: 0x7ffd6ddddfb0) = 0 1000.653 ( 0.003 ms): close(fd: 1 ) = 0 1000.657 ( 0.002 ms): close(fd: 2 ) = 0 1000.667 ( 0.000 ms): exit_group( ) # After: # perf trace sleep 1 <SNIP> 0.336 ( 0.001 ms): close(fd: 3 ) = 0 0.373 (1000.086 ms): nanosleep(rqtp: 0x7ffe303e9550) = 0 1000.481 ( 0.002 ms): close(fd: 1 ) = 0 1000.485 ( 0.001 ms): close(fd: 2 ) = 0 1000.494 ( 0.000 ms): exit_group( ) [root@jouet linux]# Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: David Ahern <dsahern@gmail.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Wang Nan <wangnan0@huawei.com> Link: http://lkml.kernel.org/n/tip-ecbzgmu2ni6glc6zkw8p1zmx@git.kernel.org Fixes: 752fde44fd1c ("perf trace: Support interrupted syscalls") Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
-rw-r--r--tools/perf/builtin-trace.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c
index c72a92c6d9c4..5f45166c892d 100644
--- a/tools/perf/builtin-trace.c
+++ b/tools/perf/builtin-trace.c
@@ -1451,7 +1451,7 @@ static int trace__printf_interrupted_entry(struct trace *trace, struct perf_samp
1451 1451
1452 duration = sample->time - ttrace->entry_time; 1452 duration = sample->time - ttrace->entry_time;
1453 1453
1454 printed = trace__fprintf_entry_head(trace, trace->current, duration, sample->time, trace->output); 1454 printed = trace__fprintf_entry_head(trace, trace->current, duration, ttrace->entry_time, trace->output);
1455 printed += fprintf(trace->output, "%-70s) ...\n", ttrace->entry_str); 1455 printed += fprintf(trace->output, "%-70s) ...\n", ttrace->entry_str);
1456 ttrace->entry_pending = false; 1456 ttrace->entry_pending = false;
1457 1457
@@ -1498,7 +1498,7 @@ static int trace__sys_enter(struct trace *trace, struct perf_evsel *evsel,
1498 1498
1499 if (sc->is_exit) { 1499 if (sc->is_exit) {
1500 if (!(trace->duration_filter || trace->summary_only || trace->min_stack)) { 1500 if (!(trace->duration_filter || trace->summary_only || trace->min_stack)) {
1501 trace__fprintf_entry_head(trace, thread, 1, sample->time, trace->output); 1501 trace__fprintf_entry_head(trace, thread, 1, ttrace->entry_time, trace->output);
1502 fprintf(trace->output, "%-70s)\n", ttrace->entry_str); 1502 fprintf(trace->output, "%-70s)\n", ttrace->entry_str);
1503 } 1503 }
1504 } else { 1504 } else {
@@ -1589,7 +1589,7 @@ static int trace__sys_exit(struct trace *trace, struct perf_evsel *evsel,
1589 if (trace->summary_only) 1589 if (trace->summary_only)
1590 goto out; 1590 goto out;
1591 1591
1592 trace__fprintf_entry_head(trace, thread, duration, sample->time, trace->output); 1592 trace__fprintf_entry_head(trace, thread, duration, ttrace->entry_time, trace->output);
1593 1593
1594 if (ttrace->entry_pending) { 1594 if (ttrace->entry_pending) {
1595 fprintf(trace->output, "%-70s", ttrace->entry_str); 1595 fprintf(trace->output, "%-70s", ttrace->entry_str);