diff mbox

[v5,3/6] perf record: Force enable --timestamp-filename when --switch-output is provided

Message ID 1460991332-185772-4-git-send-email-wangnan0@huawei.com
State Superseded
Headers show

Commit Message

Wang Nan April 18, 2016, 2:55 p.m. UTC
Without this patch, the last output doesn't have timestamp appended if
--timestamp-filename is not explicitly provided. For example:

  # perf record -a --switch-output &
  [1] 11224
  # kill -s SIGUSR2 11224
  [ perf record: dump data: Woken up 1 times ]
  # [ perf record: Dump perf.data.2015122622372823 ]

  # fg
  perf record -a --switch-output
  ^C[ perf record: Woken up 1 times to write data ]
  [ perf record: Captured and wrote 0.027 MB perf.data (540 samples) ]

  # ls -l
  total 836
  -rw------- 1 root root  33256 Dec 26 22:37 perf.data   <---- *Odd*
  -rw------- 1 root root 817156 Dec 26 22:37 perf.data.2015122622372823

Signed-off-by: Wang Nan <wangnan0@huawei.com>

Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Zefan Li <lizefan@huawei.com>
Cc: pi3orama@163.com
Link: http://lkml.kernel.org/r/1460643725-167413-4-git-send-email-wangnan0@huawei.com
Signed-off-by: He Kuang <hekuang@huawei.com>

[ Updated man page, that also got an entry for --timestamp-filename ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

---
 tools/perf/Documentation/perf-record.txt | 5 +++++
 tools/perf/builtin-record.c              | 3 +++
 2 files changed, 8 insertions(+)

-- 
1.8.3.4

Comments

Wang Nan April 20, 2016, 8:21 a.m. UTC | #1
On 2016/4/20 15:59, Jiri Olsa wrote:
> On Mon, Apr 18, 2016 at 02:55:29PM +0000, Wang Nan wrote:

>> Without this patch, the last output doesn't have timestamp appended if

>> --timestamp-filename is not explicitly provided. For example:

>>

>>    # perf record -a --switch-output &

>>    [1] 11224

>>    # kill -s SIGUSR2 11224

>>    [ perf record: dump data: Woken up 1 times ]

>>    # [ perf record: Dump perf.data.2015122622372823 ]

>>

>>    # fg

>>    perf record -a --switch-output

>>    ^C[ perf record: Woken up 1 times to write data ]

>>    [ perf record: Captured and wrote 0.027 MB perf.data (540 samples) ]

>>

>>    # ls -l

>>    total 836

>>    -rw------- 1 root root  33256 Dec 26 22:37 perf.data   <---- *Odd*

>>    -rw------- 1 root root 817156 Dec 26 22:37 perf.data.2015122622372823

> I'm getting this:

>

> [root@krava perf]# ./perf record -a --switch-output &

> [root@krava perf]# kill -s SIGUSR2 18974

> [ perf record: dump data: Woken up 4 times ]

> [ perf record: Dump perf.data.2016042009574314 ]

>

> [root@krava perf]# ./perf report -i perf.data.2016042009574314

> perf: Segmentation fault

> -------- backtrace --------

> ./perf[0x552b0b]

> /lib64/libc.so.6(+0x34a50)[0x7f711b434a50]

> /lib64/libc.so.6(strlen+0x2a)[0x7f711b48b33a]

> ./perf(perf_hpp__reset_sort_width+0x4f)[0x4e9b1f]

> ./perf[0x54b113]

> ./perf(perf_evlist__tui_browse_hists+0x91)[0x551361]

> ./perf(cmd_report+0x1a34)[0x434b44]

> ./perf[0x485681]

> ./perf(main+0x672)[0x424382]

> /lib64/libc.so.6(__libc_start_main+0xf0)[0x7f711b420700]

> ./perf(_start+0x29)[0x4244a9]

> [0x0]


Can't reproduce... Can you get reproduce problem without this patch (3/6)?

My local tree is based on newest perf/core (commit ccd62a8 "perf trace:
Fix build when DWARF unwind isn't available"). Could you please check your
source?

Thank you.

>

> thanks,

> jirka
diff mbox

Patch

diff --git a/tools/perf/Documentation/perf-record.txt b/tools/perf/Documentation/perf-record.txt
index a77a431..79a8a14 100644
--- a/tools/perf/Documentation/perf-record.txt
+++ b/tools/perf/Documentation/perf-record.txt
@@ -347,6 +347,9 @@  Configure all used events to run in kernel space.
 --all-user::
 Configure all used events to run in user space.
 
+--timestamp-filename
+Append timestamp to output file name.
+
 --switch-output::
 Generate multiple perf.data files, timestamp prefixed, switching to a new one
 when receiving a SIGUSR2.
@@ -355,6 +358,8 @@  A possible use case is to, given an external event, slice the perf.data file
 that gets then processed, possibly via a perf script, to decide if that
 particular perf.data snapshot should be kept or not.
 
+Implies --timestamp-filename.
+
 SEE ALSO
 --------
 linkperf:perf-stat[1], linkperf:perf-list[1]
diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
index 07e57d9..13f0b9a 100644
--- a/tools/perf/builtin-record.c
+++ b/tools/perf/builtin-record.c
@@ -1347,6 +1347,9 @@  int cmd_record(int argc, const char **argv, const char *prefix __maybe_unused)
 		return -EINVAL;
 	}
 
+	if (rec->switch_output)
+		rec->timestamp_filename = true;
+
 	if (!rec->itr) {
 		rec->itr = auxtrace_record__init(rec->evlist, &err);
 		if (err)