From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752822AbdJaJk6 (ORCPT ); Tue, 31 Oct 2017 05:40:58 -0400 Received: from mail-wr0-f181.google.com ([209.85.128.181]:54469 "EHLO mail-wr0-f181.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751378AbdJaJk5 (ORCPT ); Tue, 31 Oct 2017 05:40:57 -0400 X-Google-Smtp-Source: ABhQp+Qv1pbjSZRG8fKC/1XOIS9QRmREq5vVkTT2Bki8Zjjr0MZKRyuEr0B6ABo4d0Lp3wAWGcFiaA== Date: Tue, 31 Oct 2017 10:40:54 +0100 From: Ingo Molnar To: Jiri Olsa Cc: Arnaldo Carvalho de Melo , lkml , Namhyung Kim , David Ahern , Peter Zijlstra Subject: Re: [PATCH 5/7] perf tools: Optimize sample parsing for ordered events Message-ID: <20171031094053.iblfii2hzz7keujh@gmail.com> References: <20171031092947.19410-1-jolsa@kernel.org> <20171031092947.19410-6-jolsa@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20171031092947.19410-6-jolsa@kernel.org> User-Agent: NeoMutt/20170609 (1.8.3) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org * Jiri Olsa wrote: > Currently when using ordered events we parse the sample > twice (the perf_evlist__parse_sample function). Once > before we queue the sample for sorting: > > perf_session__process_event > perf_evlist__parse_sample(sample) > perf_session__queue_event(sample.time) > > And then when we deliver the sorted sample: > > ordered_events__deliver_event > perf_evlist__parse_sample > perf_session__deliver_event > > We can skip the initial full sample parsing by using > perf_evlist__parse_sample_timestamp function, which > got introduced earlier. The new path looks like: > > perf_session__process_event > perf_evlist__parse_sample_timestamp > perf_session__queue_event > > ordered_events__deliver_event > perf_session__deliver_event > perf_evlist__parse_sample > > It saves some instructions and is slightly faster: > > Before: > Performance counter stats for './perf.old report --stdio' (5 runs): > > 64,396,007,225 cycles:u ( +- 0.97% ) > 105,882,112,735 instructions:u # 1.64 insn per cycle ( +- 0.00% ) > > 21.618103465 seconds time elapsed ( +- 1.12% ) > > After: > Performance counter stats for './perf report --stdio' (5 runs): > > 60,567,807,182 cycles:u ( +- 0.40% ) > 104,853,333,514 instructions:u # 1.73 insn per cycle ( +- 0.00% ) > > 20.168895243 seconds time elapsed ( +- 0.32% ) That's a 7% speedup, not bad! Thanks, Ingo