From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754495AbbLKMpk (ORCPT ); Fri, 11 Dec 2015 07:45:40 -0500 Received: from mga11.intel.com ([192.55.52.93]:12760 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751187AbbLKMpj (ORCPT ); Fri, 11 Dec 2015 07:45:39 -0500 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.20,413,1444719600"; d="scan'208";a="839198208" Subject: Re: [PATCH 0/7] perf stat: Change event enable code To: Arnaldo Carvalho de Melo References: <1449133606-14429-1-git-send-email-jolsa@kernel.org> <20151207210908.GC11564@kernel.org> <566686EF.3040505@intel.com> <20151208135336.GE11564@kernel.org> <5668302C.3030004@intel.com> Cc: Jiri Olsa , lkml , David Ahern , Ingo Molnar , Namhyung Kim , Peter Zijlstra From: Adrian Hunter Organization: Intel Finland Oy, Registered Address: PL 281, 00181 Helsinki, Business Identity Code: 0357606 - 4, Domiciled in Helsinki Message-ID: <566AC4AE.2040304@intel.com> Date: Fri, 11 Dec 2015 14:42:22 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 MIME-Version: 1.0 In-Reply-To: <5668302C.3030004@intel.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 09/12/15 15:44, Adrian Hunter wrote: > On 08/12/15 15:53, Arnaldo Carvalho de Melo wrote: >> Em Tue, Dec 08, 2015 at 09:29:51AM +0200, Adrian Hunter escreveu: >>> On 07/12/15 23:09, Arnaldo Carvalho de Melo wrote: >>>> Em Thu, Dec 03, 2015 at 10:06:39AM +0100, Jiri Olsa escreveu: >>>>> while testing ftrace:function event I noticed we create >>>>> stat counters as enabled (except for enable_on_exec couters). >>>>> >>>>> This way we count also filter setup and other config code >>>>> which might be crucial for some events. >>>>> >>>>> Posponing the events enable once everything is ready. >>>>> >>>>> The last patch is RFC as I wasn't sure there's some hidden >>>>> catch about perf_evlist__(enable|disable)_event functions >>>>> I missed.. Adrian? >> >>>> They look the same, Adrian? >> >>>> Applied the first 6, will give some more time to Adrian to chime in. >> >>> Looks like there might already be a problem using evsel->threads instead of >>> evlist->threads with the logic relating to evsel->system_wide getting lost - >>> but that happened already in "perf evlist: Factor >>> perf_evlist__(enable|disable) functions". Probably the threads should not >>> be propagated in that case, but it needs more investigation. I will try to >>> look at it today. >> >> Thanks! Is that covered by any 'perf test' entry? Do you think having >> some sort of Intel PT test to run on capable machines would be feasible? > > There is "Test tracking with sched_switch". There was an issue where 'perf > record' was working differently to the tests. I will try to find where the > gaps are. Seems I have run out of time again today though. I was wrong about there being any problem using evsel->threads. While the patch "perf evlist: Factor perf_evlist__(enable|disable) function" changes the number of threads (from perf_evlist__nr_threads() to thread_map__nr()), the system_wide check is still done in perf_evsel__run_ioctl(), so everything is fine. WRT "[RFC 7/7] perf tools: Remove perf_evlist__(enable|disable)_event functions" it might be worth putting the evsel->fd checks that perf_evlist__[enable|disable]_event() have into perf_evsel__[enable|disable](). But otherwise it looks fine. The gap in testing that I was thinking of is below: From: Adrian Hunter Date: Fri, 11 Dec 2015 11:05:11 +0200 Subject: [PATCH] perf tools: Make perf_evlist__open() open evsels with their cpus and threads (like perf record does) 'perf record' uses perf_evsel__open() to open events and passes the evsel->cpus and evsel->threads. Many tests and some tools instead use perf_evlist__open() which passes instead evlist->cpus and evlist->threads. Make perf_evlist__open() follow the 'perf record' behaviour so that a consistent approach is taken. Signed-off-by: Adrian Hunter --- tools/perf/util/evlist.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c index d1b6c206bb93..306dacb33d8e 100644 --- a/tools/perf/util/evlist.c +++ b/tools/perf/util/evlist.c @@ -1470,7 +1470,7 @@ int perf_evlist__open(struct perf_evlist *evlist) perf_evlist__update_id_pos(evlist); evlist__for_each(evlist, evsel) { - err = perf_evsel__open(evsel, evlist->cpus, evlist->threads); + err = perf_evsel__open(evsel, evsel->cpus, evsel->threads); if (err < 0) goto out_err; } -- 1.9.1