Message ID | 1460991332-185772-4-git-send-email-wangnan0@huawei.com |
---|---|
State | Superseded |
Headers | show |
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 --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)