Received: by 2002:a25:e74b:0:0:0:0:0 with SMTP id e72csp1188821ybh; Sun, 19 Jul 2020 11:14:11 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwCCgM48ADcx0ddwr+uAFs90itraGMexIRjDu6s2IqGu9T5NR5zRQxdCBTViivMBY6pLxGJ X-Received: by 2002:a05:6402:1ac4:: with SMTP id ba4mr17683967edb.60.1595182451152; Sun, 19 Jul 2020 11:14:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1595182451; cv=none; d=google.com; s=arc-20160816; b=YoXqcJ1DhsYB1otXYO5Vl7PLQtTSv+bEPuXQykmIaUj8Qu0s32Z/KAolC4UuDgQIQg 943yABu74xBzgmwtsQ/9R8hgOE8gTLst905L6n9vNDgpP8Ib4h9QtVXwSsZqNUH79WnF TvtIMF3Y4ghmtVaHDwOJHnyuShyirMCGlxORTNsfS23wKiShQh7sr+ug38P8xsY3P2lK QPD3Z/nkjpEpQmBoAKZpIT+iQfZIF4S2vYDisEcJ8V+kYJYeufMgheG3lMFD1JriAaeN dESe+WfrvIa7xZpBi/QPhNLyqbh26/fX+okFunBTPjEVa5BRgrwVayD72alv4ad4tsyF NQYw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=KwIfbjSOdA/YnN5SYIWOc/3F5ZKhcwFdZySfuM/8u0g=; b=KA+LZQIKdg4WYRP+9rmOhh7oVeJ+JvCz89DFgCC1lJ4ZpvO2e6jrB47tlUf/QKGWxM avXoQ3xnq0Lu9H6Ni8fb4LGxidZhN4ms/p2yTezSgtiN8pmNEGcOwi378rdWc2boTCyn FUnOaO1jS/HEUu57a88n6HEJC5NA7/gggWfmY9KsdPoCdMWhEcQSwd9zxl7yaGz7sqTY 7iPLmzr2UFP5TpJfb4PNXx8Rgp++hPAUbgjldbKSzwLtBwuvHa24KllKnF2UcA+A5+nN f1k/J23RradopPzf6uw5TH4xIaUM2PF76NTYh/jINNLX5dMnwXJb0JDp5I4sZU6hxiOJ CrTw== ARC-Authentication-Results: i=1; mx.google.com; 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=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id n8si9515023edi.222.2020.07.19.11.13.48; Sun, 19 Jul 2020 11:14:11 -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; 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=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726577AbgGSSNc convert rfc822-to-8bit (ORCPT + 99 others); Sun, 19 Jul 2020 14:13:32 -0400 Received: from us-smtp-delivery-1.mimecast.com ([205.139.110.120]:22867 "EHLO us-smtp-1.mimecast.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726009AbgGSSNc (ORCPT ); Sun, 19 Jul 2020 14:13:32 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-304-oHUPqxUTOvKjM4sB-CXu5A-1; Sun, 19 Jul 2020 14:13:26 -0400 X-MC-Unique: oHUPqxUTOvKjM4sB-CXu5A-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id CF8431083; Sun, 19 Jul 2020 18:13:24 +0000 (UTC) Received: from krava.redhat.com (unknown [10.40.192.53]) by smtp.corp.redhat.com (Postfix) with ESMTP id C784F74F6C; Sun, 19 Jul 2020 18:13:21 +0000 (UTC) From: Jiri Olsa To: Arnaldo Carvalho de Melo Cc: lkml , Ingo Molnar , Namhyung Kim , Alexander Shishkin , Peter Zijlstra , Michael Petlan , Andi Kleen , Kajol Jain , John Garry , "Paul A. Clarke" , Stephane Eranian , Ian Rogers Subject: [PATCHv3 00/19] perf metric: Add support to reuse metric Date: Sun, 19 Jul 2020 20:13:01 +0200 Message-Id: <20200719181320.785305-1-jolsa@kernel.org> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: kernel.org Content-Type: text/plain; charset=WINDOWS-1252 Content-Transfer-Encoding: 8BIT Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org hi, this patchset is adding the support to reused metric in another metric. For example, to define IPC by using CPI with change like: { "BriefDescription": "Instructions Per Cycle (per Logical Processor)", - "MetricExpr": "INST_RETIRED.ANY / CPU_CLK_UNHALTED.THREAD", + "MetricExpr": "1/CPI", "MetricGroup": "TopDownL1", "MetricName": "IPC" }, I won't be able to find all the possible places we could use this at, so I wonder you guys (who was asking for this) would try it and come up with comments if there's something missing or we could already use it at some places. It's based on Arnaldo's tmp.perf/core. v3 changes: - added some acks - some patches got merged - added missing zalloc include [John Garry] - added ids array outside the egroup object [Ian] - removed wrong m->has_constraint assignment [Ian] - renamed 'list' to 'metric_list' [Ian] - fixed group metric and added test for it [Paul A. Clarke] - fixed memory leak [Arnaldo] - using lowercase keys for metrics in hashmap, because jevents converts metric_expr to lowercase Also available in here: git://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git perf/metric thanks, jirka --- Jiri Olsa (19): perf metric: Fix memory leak in expr__add_id function perf metric: Add expr__add_id function perf metric: Change expr__get_id to return struct expr_id_data perf metric: Add expr__del_id function perf metric: Add macros for iterating map events perf metric: Add add_metric function perf metric: Rename __metricgroup__add_metric to __add_metric perf metric: Collect referenced metrics in struct metric_ref_node perf metric: Collect referenced metrics in struct metric_expr perf metric: Add referenced metrics to hash data perf metric: Compute referenced metrics perf metric: Add events for the current list perf metric: Add cache_miss_cycles to metric parse test perf metric: Add DCache_L2 to metric parse test perf metric: Add recursion check when processing nested metrics perf metric: Make compute_single function more precise perf metric: Add metric group test perf metric: Rename struct egroup to metric perf metric: Rename group_list to metric_list tools/perf/tests/parse-metric.c | 206 +++++++++++++++++++++++++++++++++++++++++++++++++---- tools/perf/util/expr.c | 143 ++++++++++++++++++++++++++++++++----- tools/perf/util/expr.h | 30 +++++++- tools/perf/util/expr.y | 16 +++-- tools/perf/util/metricgroup.c | 466 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------ tools/perf/util/metricgroup.h | 6 ++ tools/perf/util/stat-shadow.c | 20 ++++-- 7 files changed, 751 insertions(+), 136 deletions(-)