lkml.org 
[lkml]   [2016]   [Feb]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [PATCH 29/48] perf record: Re-synthesize tracking events after output switching
    On Mon, Feb 22, 2016 at 09:10:56AM +0000, Wang Nan wrote:
    > Tracking events describe kernel and threads. They are generated by
    > reading /proc/kallsyms, /proc/*/maps and /proc/*/task/* during
    > initialization of 'perf record', serialized into event sequences and put
    > at the head of 'perf.data'. In case of output switching, each output
    > file should contain those events.
    >
    > This patch calls record__synthesize() during output switching, so the
    > event sequences described above can be collected again.
    >
    > Signed-off-by: Wang Nan <wangnan0@huawei.com>
    > Signed-off-by: He Kuang <hekuang@huawei.com>
    > Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    > Cc: Jiri Olsa <jolsa@kernel.org>
    > Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
    > Cc: Namhyung Kim <namhyung@kernel.org>
    > Cc: Zefan Li <lizefan@huawei.com>
    > Cc: pi3orama@163.com
    > ---
    > tools/perf/builtin-record.c | 11 +++++++++++
    > 1 file changed, 11 insertions(+)
    >
    > diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
    > index 2839715..3a11102 100644
    > --- a/tools/perf/builtin-record.c
    > +++ b/tools/perf/builtin-record.c
    > @@ -529,6 +529,8 @@ record__finish_output(struct record *rec)
    > return;
    > }
    >
    > +static int record__synthesize(struct record *rec);
    > +
    > static int
    > record__switch_output(struct record *rec, bool at_exit)
    > {
    > @@ -557,6 +559,15 @@ record__switch_output(struct record *rec, bool at_exit)
    > if (!quiet)
    > fprintf(stderr, "[ perf record: Dump %s.%s ]\n",
    > file->path, timestamp);
    > +
    > + /* Reinit machine */
    > + if (!at_exit) {
    > + machines__exit(&rec->session->machines);
    > + machines__init(&rec->session->machines);
    > + perf_session__create_kernel_maps(rec->session);
    > + perf_session__set_id_hdr_size(rec->session);

    hum, what's the reason to reinit machines data, it's still the same no?

    I'd think that onlt record__synthesize call is needed in here

    also I think we should introduce some perf_session helper
    for that.. like perf_session__init or such

    thanks,
    jirka

    > + record__synthesize(rec);
    > + }
    > return fd;
    > }
    >
    > --
    > 1.8.3.4
    >
    \
     
     \ /
      Last update: 2016-02-24 16:41    [W:3.953 / U:0.140 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site