Received: by 2002:a25:e74b:0:0:0:0:0 with SMTP id e72csp52699ybh; Tue, 14 Jul 2020 17:39:13 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwggrFO7Lbj1LEPJ8zaPzMYvo/k9725oMvVjJqAeMFlVI1hIjuMkFDMV0U447dnKo9hWeGZ X-Received: by 2002:a17:907:2715:: with SMTP id w21mr6537648ejk.229.1594773552835; Tue, 14 Jul 2020 17:39:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1594773552; cv=none; d=google.com; s=arc-20160816; b=EdY4A82e1Yp26ilvRYtK70ww9Jl3tyRCkfv6hgDw1CqJRpUeYw3XsdE/u7v0j1r0Q+ xuw5+7FRIJ57n/Y0m6E2PJtyDkcV5i4ueGrZbBye0aCLB+1unjo/ZO0FuJ7XiHaAz5Ho jBt4eDEm0tXluC7Veq2J3bfA9hWDKqIw6fVgmCY5uW9/W3XWCYhKWZWLgrg9fmtGB1gB ovaDUbvGoPkNKhNttIPdK5+z1eFq7v/m7GlENogcael4n0Rmp3RWpXqkBmO3A8I2HkhK F0IpfKKKaXFxlhQiVC/UFs9JTHW1H0ZpNeDbcuGvYX6iggU7lDLvBJo/S2Ams3Lq3tfl ZChg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=fyYHKBAEzWizf9raS+o1+KdK49GqNrkiRZGBEtob6wU=; b=XAh/PPzzmTQg+o/H3z+AOlEjaufkOjCDzVsvIoeuKIofwqZKOZepHL7iqCuPT1aYwi bcHUzjOojd5Hs4PCV0Fl7D2M4xCctIJ/rso11JRP2tTvB3PLriNsfSHxud5D89DwUrwp BKd5HfucYyIDM29DTYivPldXvwI23NA6NcEOx/YVxalXeUGZ8oHNnRIsh7TL4UfJqS4l Mh3O9AsxoiimHeB5M8/8CfYcspKFydS0U6taKHu7NpFVT02lSt1J8mr7bau2/aCnaISm 77TmuEnx9vVujlZEqOAvMzy7RfuAGFdIrJvpC7fd7WL9IHVbIo/EoivRPxA4Gbx0r8yy zQJQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=nQAtCVzU; 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 od19si223694ejb.581.2020.07.14.17.38.50; Tue, 14 Jul 2020 17:39:12 -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=20161025 header.b=nQAtCVzU; 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 S1727951AbgGOAhB (ORCPT + 99 others); Tue, 14 Jul 2020 20:37:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36044 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726893AbgGOAhB (ORCPT ); Tue, 14 Jul 2020 20:37:01 -0400 Received: from mail-wm1-x344.google.com (mail-wm1-x344.google.com [IPv6:2a00:1450:4864:20::344]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E161BC061755 for ; Tue, 14 Jul 2020 17:37:00 -0700 (PDT) Received: by mail-wm1-x344.google.com with SMTP id o8so2326226wmh.4 for ; Tue, 14 Jul 2020 17:37:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=fyYHKBAEzWizf9raS+o1+KdK49GqNrkiRZGBEtob6wU=; b=nQAtCVzUhpS93taxTWnLXkxMV9e8LFmbTxpMYPt3h4S9PC7WSh9WDOpFBH2ssKXCKW 1ysNRALjweghfM0buYTQz0ODi9le7f692CurPwnafhsGQcEIXOiDOnIs6ZGSjyxtPACs 1QGfzPgg9a01ouhFHRnyd9VF7slLelIIXll67D5oW+uFNFWqkLh7Axk5nzir/NKmqww8 9a2hzfW3LtdDfhEQudTbg/m12LJzChK1bj+i0RMgED4cEwCGGs82ZASilgAmT9VbKoCI pRxgPSqcJQ8LkK36otymqsFjkBYyJUlcSOZrHqXdLLRAaxndr+VeyBdrOm4Xx6FPieQE 15FA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=fyYHKBAEzWizf9raS+o1+KdK49GqNrkiRZGBEtob6wU=; b=r4K0ly/ayYWTjGCB2wF4pK9yspJEOHsAO3E5Ey+8/YbUxnB+Vz7aftrJ24WucJ8WMi 1P3zzNwrtobJwJ1w7msNC9XLUp+f7GrbtQs1fg9NypyIB+nitk8e8vBHJeRThF20/NmO v9DWBvAfBawH/M29yt0kGryxuyKxgsvZi0ikYKlZSV6K3D03G6c97YGsZaE43h+5lCRc 9IUYEVlnJuv4Qp4UQnLnKyRWHYxEIJ0JXK2FAN4r9QcB2UsxOUuzAaBCdA9as87HYMo9 3VZx/g4TWbfP5eugKjFEvi+TxaVQ8A+y5Rb1NEJNfc6tzCv57vfGsEPRJxo2LSak5VHo nw7w== X-Gm-Message-State: AOAM5303hrvuF55wEq/hans5iwSD6pLVbc/zAEjcuY0jhWvwKACQ1qE9 6ki03QtVJBoL26fx/VlRT6QAE+KLD5E58cVDSjZnaKqSbWQ= X-Received: by 2002:a1c:4e08:: with SMTP id g8mr6204312wmh.77.1594771798282; Tue, 14 Jul 2020 17:09:58 -0700 (PDT) MIME-Version: 1.0 References: <20200712132634.138901-1-jolsa@kernel.org> <20200712132634.138901-11-jolsa@kernel.org> In-Reply-To: <20200712132634.138901-11-jolsa@kernel.org> From: Ian Rogers Date: Tue, 14 Jul 2020 17:09:47 -0700 Message-ID: Subject: Re: [PATCH 10/18] perf metric: Collect referenced metrics in struct metric_expr To: Jiri Olsa Cc: Arnaldo Carvalho de Melo , lkml , Ingo Molnar , Namhyung Kim , Alexander Shishkin , Peter Zijlstra , Michael Petlan , Andi Kleen , Kajol Jain , John Garry , "Paul A. Clarke" , Stephane Eranian Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sun, Jul 12, 2020 at 6:27 AM Jiri Olsa wrote: > > Add referenced metrics into struct metric_expr object, > so they are accessible when computing the metric. > > Storing just name and expression itself, so the metric > can be resolved and computed. > > Signed-off-by: Jiri Olsa Acked-by: Ian Rogers Thanks, Ian > --- > tools/perf/util/metricgroup.c | 26 ++++++++++++++++++++++++++ > tools/perf/util/metricgroup.h | 6 ++++++ > 2 files changed, 32 insertions(+) > > diff --git a/tools/perf/util/metricgroup.c b/tools/perf/util/metricgroup.c > index 9923eef1e2d4..8cbcc5e05fef 100644 > --- a/tools/perf/util/metricgroup.c > +++ b/tools/perf/util/metricgroup.c > @@ -83,6 +83,7 @@ static void metric_event_delete(struct rblist *rblist __maybe_unused, > struct metric_expr *expr, *tmp; > > list_for_each_entry_safe(expr, tmp, &me->head, nd) { > + free(expr->metric_refs); > free(expr); > } > > @@ -243,6 +244,7 @@ static int metricgroup__setup_events(struct list_head *groups, > > list_for_each_entry (eg, groups, nd) { > struct evsel **metric_events; > + struct metric_ref *metric_refs = NULL; > > metric_events = calloc(sizeof(void *), > hashmap__size(&eg->pctx.ids) + 1); > @@ -274,6 +276,30 @@ static int metricgroup__setup_events(struct list_head *groups, > free(metric_events); > break; > } > + > + /* > + * Collect and store collected nested expressions > + * for metric processing. > + */ > + if (eg->refs_cnt) { > + struct metric_ref_node *ref; > + > + metric_refs = zalloc(sizeof(struct metric_ref) * (eg->refs_cnt + 1)); > + if (!metric_refs) { > + ret = -ENOMEM; > + free(metric_events); > + break; > + } > + > + i = 0; > + list_for_each_entry(ref, &eg->refs, list) { > + metric_refs[i].metric_name = ref->metric_name; > + metric_refs[i].metric_expr = ref->metric_expr; > + i++; > + } > + }; > + > + expr->metric_refs = metric_refs; > expr->metric_expr = eg->metric_expr; > expr->metric_name = eg->metric_name; > expr->metric_unit = eg->metric_unit; > diff --git a/tools/perf/util/metricgroup.h b/tools/perf/util/metricgroup.h > index 8315bd1a7da4..62623a39cbec 100644 > --- a/tools/perf/util/metricgroup.h > +++ b/tools/perf/util/metricgroup.h > @@ -18,12 +18,18 @@ struct metric_event { > struct list_head head; /* list of metric_expr */ > }; > > +struct metric_ref { > + const char *metric_name; > + const char *metric_expr; > +}; > + > struct metric_expr { > struct list_head nd; > const char *metric_expr; > const char *metric_name; > const char *metric_unit; > struct evsel **metric_events; > + struct metric_ref *metric_refs; > int runtime; > }; > > -- > 2.25.4 >