From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 08AD7C04A95 for ; Thu, 29 Sep 2022 08:48:44 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234994AbiI2Isl (ORCPT ); Thu, 29 Sep 2022 04:48:41 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53710 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235458AbiI2Isg (ORCPT ); Thu, 29 Sep 2022 04:48:36 -0400 Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2E645AC3B1; Thu, 29 Sep 2022 01:48:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1664441315; x=1695977315; h=message-id:date:mime-version:subject:to:cc:references: from:in-reply-to:content-transfer-encoding; bh=UF7SBK5fl8dfoc9PAQ181e/4kWiETwF7OwgO7tV4u/I=; b=imfrlLppFb1GaYmixMmHU17tdcFmaV8aF7fFaw+nWjEl5LWyfoK5gOSf iM773myt+pzLwfGEU/ZdSTEqX4+tEx6NKUQ0XIRdubS80HmURJEKklIo/ q0905wBMHjDy2ZoCzT3rorSkldlqUEJd3clajk+dTNxOehT/sGe/UC+vU iFwOZ9+orBwVeB0Hd1d+Xq8kWT8lNzdHr+WQYJTYGwPSMmlwRwFVN1kEq qOZ2VU8mbASWvxUDZs77NTT/d++s6xv1d+n3zFM9+X+r+FeabP0dHPLQX zxwUhhsR8VN+hoRJNPdN0qqjYfFnw6SJ1tD3Jp3dQo0as9Ll+T0TWqbm1 g==; X-IronPort-AV: E=McAfee;i="6500,9779,10484"; a="281550047" X-IronPort-AV: E=Sophos;i="5.93,354,1654585200"; d="scan'208";a="281550047" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Sep 2022 01:48:34 -0700 X-IronPort-AV: E=McAfee;i="6500,9779,10484"; a="867306615" X-IronPort-AV: E=Sophos;i="5.93,354,1654585200"; d="scan'208";a="867306615" Received: from xingzhen-mobl.ccr.corp.intel.com (HELO [10.238.4.231]) ([10.238.4.231]) by fmsmga006-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Sep 2022 01:48:23 -0700 Message-ID: Date: Thu, 29 Sep 2022 16:48:21 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.3.0 Subject: Re: [PATCH v1 03/22] perf metrics: Don't scale counts going into metrics Content-Language: en-US To: Ian Rogers , Kan Liang , Andi Kleen , perry.taylor@intel.com, caleb.biggers@intel.com, kshipra.bopardikar@intel.com, samantha.alt@intel.com, ahmad.yasin@intel.com, Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , John Garry , James Clark , Kajol Jain , Thomas Richter , Miaoqian Lin , Florian Fischer , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Stephane Eranian References: <20220928072204.1613330-1-irogers@google.com> <20220928072204.1613330-4-irogers@google.com> From: Xing Zhengjun In-Reply-To: <20220928072204.1613330-4-irogers@google.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-perf-users@vger.kernel.org On 9/28/2022 3:21 PM, Ian Rogers wrote: > Counts are scaled prior to going into saved_value, reverse the scaling > so that metrics don't double scale values. > > Signed-off-by: Ian Rogers > --- > tools/perf/util/stat-shadow.c | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/tools/perf/util/stat-shadow.c b/tools/perf/util/stat-shadow.c > index 9e1eddeff21b..b5cedd37588f 100644 > --- a/tools/perf/util/stat-shadow.c > +++ b/tools/perf/util/stat-shadow.c > @@ -865,11 +865,16 @@ static int prepare_metric(struct evsel **metric_events, > if (!v) > break; > stats = &v->stats; > - scale = 1.0; > + /* > + * If an event was scaled during stat gathering, reverse > + * the scale before computing the metric. > + */ > + scale = 1.0 / metric_events[i]->scale; > + This look likes not work for kernel side events like /sys/devices/uncore_imc_*/events/cas_count_read(write). > source_count = evsel__source_count(metric_events[i]); > > if (v->metric_other) > - metric_total = v->metric_total; > + metric_total = v->metric_total * scale; > } > n = strdup(evsel__metric_id(metric_events[i])); > if (!n) -- Zhengjun Xing