From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752692AbcBXO5U (ORCPT ); Wed, 24 Feb 2016 09:57:20 -0500 Received: from mx1.redhat.com ([209.132.183.28]:58186 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750831AbcBXO5T (ORCPT ); Wed, 24 Feb 2016 09:57:19 -0500 Date: Wed, 24 Feb 2016 15:57:10 +0100 From: Jiri Olsa To: Wang Nan Cc: Alexei Starovoitov , Arnaldo Carvalho de Melo , Arnaldo Carvalho de Melo , Brendan Gregg , Adrian Hunter , Cody P Schafer , "David S. Miller" , He Kuang , =?iso-8859-1?Q?J=E9r=E9mie?= Galarneau , Jiri Olsa , Kirill Smelkov , Li Zefan , Masami Hiramatsu , Namhyung Kim , Peter Zijlstra , pi3orama@163.com, linux-kernel@vger.kernel.org Subject: Re: [PATCH 29/48] perf record: Re-synthesize tracking events after output switching Message-ID: <20160224145710.GB12114@krava.redhat.com> References: <1456132275-98875-1-git-send-email-wangnan0@huawei.com> <1456132275-98875-30-git-send-email-wangnan0@huawei.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1456132275-98875-30-git-send-email-wangnan0@huawei.com> User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 > Signed-off-by: He Kuang > Cc: Arnaldo Carvalho de Melo > Cc: Jiri Olsa > Cc: Masami Hiramatsu > Cc: Namhyung Kim > Cc: Zefan Li > 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 >