Received: by 2002:a05:6a10:5bc5:0:0:0:0 with SMTP id os5csp2122076pxb; Sun, 17 Oct 2021 06:27:01 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwSMz9SpVK0eG69c0pvwJSun7d1ELnVhtr09V4Ne/O0w2BWogOMUA4nOkZRbqiq++aW+SFG X-Received: by 2002:a17:902:ab97:b0:13f:98f5:3a6 with SMTP id f23-20020a170902ab9700b0013f98f503a6mr11070325plr.33.1634477221344; Sun, 17 Oct 2021 06:27:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1634477221; cv=none; d=google.com; s=arc-20160816; b=k0Pln959KRMpPTXZW6Los9XnJMhHnHY6f4k7m/8zQuqEGzKoVUVJyUHMW0owNahPy6 ruY6ixGQMPIuu6yBqIAPPvEABfatKoyPBwkx6A6j+90OGkYxTZjOt3iFvtgwcCJ083jE 7tNidQsSkEVBEgg+N+KRJfitAQrIlqCdcjnVbPApRYS+dL/sb44y/xOUJoUUQ2AyrQv5 ByfHt67j1x4WNf8yVJKRrnSxldirz0A/nZuyRXeXPKTyuZnJt7JuD6UkTbIn8i0vYJf1 J9prlaXuBAyLiYrRWYArN8CDrP3GGPBtJ/l2Py9ZAFbHDkppI3+NNYGJuHPLNvaQOKOQ PlEg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:references:mime-version :message-id:in-reply-to:date:dkim-signature; bh=saTdX1OS8/RkEbmI7IafbCeo19AfbaExGBL4qsFfKCI=; b=huobT8Lt266oTjOOlb59sgC35X2m8M8wU6q4x/STaA1WaMZiwdX0o7bhh+w5blu+tb jmzqh3VIx5cTdwkZZHN3dFUg+TVHiYBCmf3Ftziq1FxheP5tngGEryQLPCaDSX/dp1GS LRhjfstD5sZJosYnV7f1gjPMVwaU7LTmQOhnATt1ELs1gbQloOUi4pMHyJPmgncPoXUT /0Q4h1bHeqF6aWqB538PpSZEztp0n/JF0NFSTO2ZfH5mMWOu7KZlxb1/idGOkTvmmb+d sUjDDuu0O4mL4/HtDf1bfe5tyIeMwre07A7r2QyM03mmqW2Zc+jIHsuwU2V1PveXSHpy fbVQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=CTTi5a4C; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id r10si15960090pfh.141.2021.10.17.06.26.33; Sun, 17 Oct 2021 06:27:01 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=CTTi5a4C; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242300AbhJORYR (ORCPT + 99 others); Fri, 15 Oct 2021 13:24:17 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40186 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242242AbhJORYE (ORCPT ); Fri, 15 Oct 2021 13:24:04 -0400 Received: from mail-qv1-xf49.google.com (mail-qv1-xf49.google.com [IPv6:2607:f8b0:4864:20::f49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 50827C061764 for ; Fri, 15 Oct 2021 10:21:58 -0700 (PDT) Received: by mail-qv1-xf49.google.com with SMTP id s12-20020ad44b2c000000b00383ab64e632so8791050qvw.17 for ; Fri, 15 Oct 2021 10:21:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=saTdX1OS8/RkEbmI7IafbCeo19AfbaExGBL4qsFfKCI=; b=CTTi5a4CTUhk7/nowaumv7wyLcNPBLya+Q23bqT+fZEPGNpSvRZiuvdGzljb3SS9VA m701i4VunyWbOOemrneCmI6yzgfMhNJU9uofenMBzA2bcuXysuzfeqtyoW7d/czifCd5 KEgcvZOnFpP6FTkmXZj0cGwiXZUpKPNL+GTVQWmIeTlaAShfNWrGTaLOW9I8i21MiPBU uRlzphCv8QrGjerccmW1ThgqFs2YgLpCEqf6tVJk541kBIKc9QEHJy2SzaVSc5B3xwMj vzasiC1KinsV78RiZ0dD/dKXCE++0roP6JzFPw8M9P5ZNpYB77FGr9sZ+/bamPe1H44H iUeQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=saTdX1OS8/RkEbmI7IafbCeo19AfbaExGBL4qsFfKCI=; b=YO3JxfVHWgKzZ4KdcFlAyB8tZQ6gi8sZ9LMCmV5Z/9lsFNz1o9xO4Gk4PT+kC3resJ 5X5baJK02LsxHHaxLzlu4ApX+xNG5d8RIXwJjsz5N70/SiBtzEU+vdsNkzzUrZYb+YGK hSFbeXtnhZGMsXpPyI4GhW/rP0ng0t+FizIZjHYIRU/lma6AG2Pb5lRYcKr9IM/DWsW/ YyW3ptoOEf1d29EHSUoFnnW06W/FHRaX2ReLzWqLxhvewnXe2SUnd05W6wphaeMblu4H ozsfQd7vsiTYxRMMzYsPlTETcA3mVtGJULM7x6IvVkZis/Q7pQU5+pv0y9VNvDSNFAa5 X6aA== X-Gm-Message-State: AOAM531Zho7gOS2wKxvW2FrVpcb/W1ARhW+COvqG+tqEv/xivT5FS48f Ghf14kN8eCD8aGtdvQc29qgk5/s2xa23 X-Received: from irogers.svl.corp.google.com ([2620:15c:2cd:202:69bc:7451:58ad:6585]) (user=irogers job=sendgmr) by 2002:a05:622a:1a90:: with SMTP id s16mr11710297qtc.97.1634318517388; Fri, 15 Oct 2021 10:21:57 -0700 (PDT) Date: Fri, 15 Oct 2021 10:21:19 -0700 In-Reply-To: <20211015172132.1162559-1-irogers@google.com> Message-Id: <20211015172132.1162559-9-irogers@google.com> Mime-Version: 1.0 References: <20211015172132.1162559-1-irogers@google.com> X-Mailer: git-send-email 2.33.0.1079.g6e70778dc9-goog Subject: [PATCH v2 08/21] perf metric: Only add a referenced metric once From: Ian Rogers To: Andi Kleen , Jiri Olsa , Jin Yao , Namhyung Kim , John Garry , Kajol Jain , "Paul A . Clarke" , Arnaldo Carvalho de Melo , Riccardo Mancini , Kan Liang , Peter Zijlstra , Ingo Molnar , Mark Rutland , Alexander Shishkin , Kees Cook , Sami Tolvanen , Nick Desaulniers , Andrew Morton , Jacob Keller , Zhen Lei , ToastC , Joakim Zhang , Felix Fietkau , Jiapeng Chong , Song Liu , Fabian Hemmer , Alexander Antonov , Nicholas Fraser , Adrian Hunter , Denys Zagorui , Wan Jiabing , Thomas Richter , Sumanth Korikkar , Heiko Carstens , Changbin Du , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, Andrew Kilroy Cc: Stephane Eranian , Ian Rogers Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org If a metric references other metrics then the same other metrics may be referenced more than once, but the events and metric ref are only needed once. An example of this is in tests/parse-metric.c where DCache_L2_Hits references the metric DCache_L2_All_Hits twice, once directly and once through DCache_L2_All. Acked-by: Andi Kleen Signed-off-by: Ian Rogers --- tools/perf/util/metricgroup.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/tools/perf/util/metricgroup.c b/tools/perf/util/metricgroup.c index e4ce19389258..6c4c51e35aa7 100644 --- a/tools/perf/util/metricgroup.c +++ b/tools/perf/util/metricgroup.c @@ -870,12 +870,18 @@ static int __add_metric(struct list_head *metric_list, *mp = m; } else { /* - * We got here for the referenced metric, via the - * recursive metricgroup__add_metric call, add - * it to the parent group. + * This metric was referenced in a metric higher in the + * tree. Check if the same metric is already resolved in the + * metric_refs list. */ m = *mp; + list_for_each_entry(ref, &m->metric_refs, list) { + if (!strcmp(pe->metric_name, ref->metric_name)) + return 0; + } + + /*Add the new referenced metric to the pare the parent group. */ ref = malloc(sizeof(*ref)); if (!ref) return -ENOMEM; -- 2.33.0.1079.g6e70778dc9-goog