From patchwork Wed Dec 21 22:34:16 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ian Rogers X-Patchwork-Id: 35551 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:8188:b0:89:790f:f786 with SMTP id m8csp4950526dye; Wed, 21 Dec 2022 14:37:08 -0800 (PST) X-Google-Smtp-Source: AMrXdXsF/j8YWjWojL2q8c/THl5NzM+wn4/OYEn4Tcku9PVl//h26BvO+NMFfyzxJXixJGodneqM X-Received: by 2002:a17:906:cd1a:b0:801:d0bc:f616 with SMTP id oz26-20020a170906cd1a00b00801d0bcf616mr3584380ejb.62.1671662228174; Wed, 21 Dec 2022 14:37:08 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1671662228; cv=none; d=google.com; s=arc-20160816; b=EyRHyf2ki1dXl9FQ9+g511J/sOMtSE+DmDQJBKABmvlc5qQMi/6A2nq33+luReU7I4 fki48A/fw2CAnQQ79Vmgh4xwD9Q9Olj0QqmKfj2T4aVzyLvzCOBGD0LHQPykBexcHcGb VH+pZTk4QtbQ/hiyDfAPy4svVmNZsC02Y04la4zCD127CcLbYMF1vwGZWF9+Zi4n2xcj orpfYGjF6EZgx5sMqr4kRfFSyhb9V98cOGoSD+6cOchbZGHm7C1V2DGjDkIuehI/cZ/L XjhaBBYq65iu4YHBnYSV0jkfNguIp05G6Wt/P8nu40ilWbQ1wFwCt21zQEzQkxQancAl V7FQ== 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=A5e+q2J2T13Zjvz/NSuIdISxQnXr8PJB3Wc0tTKT5vY=; b=SbKnvb1KBzk/KiarFxfkRPUB69DF49J2PTB3oUDF50C5LyED6c3nueYnKnOgmbFkzB 7z9Zx6GyUmXY2qT4Rx5zl0gpyLiWeG//wE3mMnU66uO9vfAhg2iqYfkZfgyuslwBRF8Y ERrXZnih9u+FXk7xfWVvFNzdIT818eg//kf4kElCcYrABnc0JIaG1RPQqgqqj8QXI3yt hv3T6paW9cUAsEyfoCUGb/S4muICtXxFxR8Mr/puKfbw3cFmUf0VG2yjnhgXq3Thh2vG 4rXwqoTAuGJz7mJXqzX8+/LfDmVFsGurr6UOvW4Idsd3uHLBESThi53+mjXClehC4N3N Vvbw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=aFZ+LpBP; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id oz42-20020a1709077daa00b007ad69eba328si15960654ejc.539.2022.12.21.14.36.44; Wed, 21 Dec 2022 14:37:08 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=aFZ+LpBP; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S235158AbiLUWgF (ORCPT + 99 others); Wed, 21 Dec 2022 17:36:05 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46620 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235031AbiLUWfc (ORCPT ); Wed, 21 Dec 2022 17:35:32 -0500 Received: from mail-yw1-x114a.google.com (mail-yw1-x114a.google.com [IPv6:2607:f8b0:4864:20::114a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1C55ABE26 for ; Wed, 21 Dec 2022 14:35:09 -0800 (PST) Received: by mail-yw1-x114a.google.com with SMTP id 00721157ae682-460ab8a327eso3224237b3.23 for ; Wed, 21 Dec 2022 14:35:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=A5e+q2J2T13Zjvz/NSuIdISxQnXr8PJB3Wc0tTKT5vY=; b=aFZ+LpBPBWHwljcXxvgoSkrKpfn4vq/pAQhTdoqJDKJ3/jamd3650pn5kRPZwfutSb ypM+VTaEjb+lF3d6L6CzC6xarC2kUModgKntYDc1H/CnF5tU//k8jgSDginpbcEzhCTk raCv9myav/YWCpJOwFwwfrAseUyq9csf+wPfOgd+4Gm89Z7zLPY+6GEvzXwI2gvUHCBD IhoaCG1QlP/t/0Jspj5M/vWTONQbBobmtCGieH6iSkVVY4wWzqNPzuErZrx31m7UAxmI T7Ia7YYec8Wf/fMD1Ywjs3LYt8JekMUoHdLHt7FXEywrAsQ26CVb61W2bxfZjW11bb1i PEkg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=A5e+q2J2T13Zjvz/NSuIdISxQnXr8PJB3Wc0tTKT5vY=; b=Rx7/OU36owBWv/8yBAxPtjZx+9gS1PhvF9Mj8WzB87B/f153dWh5rFH2r3ppJFWD9F Ytchmv+kxlkk30CjbNPl4TND8zPki/b9O4aIGeoO59koc0aOYk4OXulciMD4pSicQWRe ycGe9nE4aTcFmukgKsIrOpk5aHO/V6/gTkml2qHTfUTf3ohyKAHumCy9Mh6xnjqoElbF S3Vb38vy4rhcQdDI1pQ9Xh4Eoc9YLNaAJgJghnfqRHmD5ilTl1Zlr1w9viDeb0vHlgBQ wwuZb/QPQ1jgSbTw65HxnGQdVXyXL0H29RHbQSPW2P8xi/73eIwSEgPAi5J0kp8yZ8QP aF8A== X-Gm-Message-State: AFqh2koH6xTHtcKheplrJ/DcX0voGj6uIcBe54CJIUlN3MTDIr3vhjzV p39FEmDLna1wzSH4E9BDGtRU/g7amqN0 X-Received: from irogers.svl.corp.google.com ([2620:15c:2d4:203:62bd:f120:1fd8:1d21]) (user=irogers job=sendgmr) by 2002:a05:6902:3ce:b0:6f8:92de:92e3 with SMTP id g14-20020a05690203ce00b006f892de92e3mr350895ybs.105.1671662108352; Wed, 21 Dec 2022 14:35:08 -0800 (PST) Date: Wed, 21 Dec 2022 14:34:16 -0800 In-Reply-To: <20221221223420.2157113-1-irogers@google.com> Message-Id: <20221221223420.2157113-6-irogers@google.com> Mime-Version: 1.0 References: <20221221223420.2157113-1-irogers@google.com> X-Mailer: git-send-email 2.39.0.314.g84b9a713c41-goog Subject: [PATCH v2 5/9] perf stat: Remove evsel metric_name/expr From: Ian Rogers To: John Garry , Will Deacon , James Clark , Mike Leach , Leo Yan , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Adrian Hunter , Kan Liang , Kim Phillips , Florian Fischer , Ravi Bangoria , Xing Zhengjun , Rob Herring , Kang Minchul , linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, Sandipan Das , Jing Zhang , linuxppc-dev@lists.ozlabs.org, Kajol Jain Cc: Stephane Eranian , Perry Taylor , Caleb Biggers , Ian Rogers X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1752864892640267761?= X-GMAIL-MSGID: =?utf-8?q?1752864892640267761?= Metrics are their own unit and these variables held broken metrics previously and now just hold the value NULL. Remove code that used these variables. Signed-off-by: Ian Rogers Reviewed-by: John Garry --- tools/perf/builtin-stat.c | 1 - tools/perf/util/cgroup.c | 1 - tools/perf/util/evsel.c | 2 - tools/perf/util/evsel.h | 2 - tools/perf/util/python.c | 7 --- tools/perf/util/stat-shadow.c | 112 ---------------------------------- tools/perf/util/stat.h | 1 - 7 files changed, 126 deletions(-) diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c index 9f3e4b257516..5d18a5a6f662 100644 --- a/tools/perf/builtin-stat.c +++ b/tools/perf/builtin-stat.c @@ -2524,7 +2524,6 @@ int cmd_stat(int argc, const char **argv) &stat_config.metric_events); zfree(&metrics); } - perf_stat__collect_metric_expr(evsel_list); perf_stat__init_shadow_stats(); if (add_default_attributes()) diff --git a/tools/perf/util/cgroup.c b/tools/perf/util/cgroup.c index e99b41f9be45..dc2db0ff7ab4 100644 --- a/tools/perf/util/cgroup.c +++ b/tools/perf/util/cgroup.c @@ -468,7 +468,6 @@ int evlist__expand_cgroup(struct evlist *evlist, const char *str, nr_cgroups++; if (metric_events) { - perf_stat__collect_metric_expr(tmp_list); if (metricgroup__copy_metric_events(tmp_list, cgrp, metric_events, &orig_metric_events) < 0) diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c index 999dd1700502..4d198529911a 100644 --- a/tools/perf/util/evsel.c +++ b/tools/perf/util/evsel.c @@ -285,8 +285,6 @@ void evsel__init(struct evsel *evsel, evsel->sample_size = __evsel__sample_size(attr->sample_type); evsel__calc_id_pos(evsel); evsel->cmdline_group_boundary = false; - evsel->metric_expr = NULL; - evsel->metric_name = NULL; evsel->metric_events = NULL; evsel->per_pkg_mask = NULL; evsel->collect_stat = false; diff --git a/tools/perf/util/evsel.h b/tools/perf/util/evsel.h index d572be41b960..24cb807ef6ce 100644 --- a/tools/perf/util/evsel.h +++ b/tools/perf/util/evsel.h @@ -105,8 +105,6 @@ struct evsel { * metric fields are similar, but needs more care as they can have * references to other metric (evsel). */ - const char * metric_expr; - const char * metric_name; struct evsel **metric_events; struct evsel *metric_leader; diff --git a/tools/perf/util/python.c b/tools/perf/util/python.c index 212031b97910..8c450b3d0080 100644 --- a/tools/perf/util/python.c +++ b/tools/perf/util/python.c @@ -75,13 +75,6 @@ const char *perf_env__arch(struct perf_env *env __maybe_unused) return NULL; } -/* - * Add this one here not to drag util/stat-shadow.c - */ -void perf_stat__collect_metric_expr(struct evlist *evsel_list) -{ -} - /* * This one is needed not to drag the PMU bandwagon, jevents generated * pmu_sys_event_tables, etc and evsel__find_pmu() is used so far just for diff --git a/tools/perf/util/stat-shadow.c b/tools/perf/util/stat-shadow.c index cadb2df23c87..35ea4813f468 100644 --- a/tools/perf/util/stat-shadow.c +++ b/tools/perf/util/stat-shadow.c @@ -346,114 +346,6 @@ static const char *get_ratio_color(enum grc_type type, double ratio) return color; } -static struct evsel *perf_stat__find_event(struct evlist *evsel_list, - const char *name) -{ - struct evsel *c2; - - evlist__for_each_entry (evsel_list, c2) { - if (!strcasecmp(c2->name, name) && !c2->collect_stat) - return c2; - } - return NULL; -} - -/* Mark MetricExpr target events and link events using them to them. */ -void perf_stat__collect_metric_expr(struct evlist *evsel_list) -{ - struct evsel *counter, *leader, **metric_events, *oc; - bool found; - struct expr_parse_ctx *ctx; - struct hashmap_entry *cur; - size_t bkt; - int i; - - ctx = expr__ctx_new(); - if (!ctx) { - pr_debug("expr__ctx_new failed"); - return; - } - evlist__for_each_entry(evsel_list, counter) { - bool invalid = false; - - leader = evsel__leader(counter); - if (!counter->metric_expr) - continue; - - expr__ctx_clear(ctx); - metric_events = counter->metric_events; - if (!metric_events) { - if (expr__find_ids(counter->metric_expr, - counter->name, - ctx) < 0) - continue; - - metric_events = calloc(sizeof(struct evsel *), - hashmap__size(ctx->ids) + 1); - if (!metric_events) { - expr__ctx_free(ctx); - return; - } - counter->metric_events = metric_events; - } - - i = 0; - hashmap__for_each_entry(ctx->ids, cur, bkt) { - const char *metric_name = cur->pkey; - - found = false; - if (leader) { - /* Search in group */ - for_each_group_member (oc, leader) { - if (!strcasecmp(oc->name, - metric_name) && - !oc->collect_stat) { - found = true; - break; - } - } - } - if (!found) { - /* Search ignoring groups */ - oc = perf_stat__find_event(evsel_list, - metric_name); - } - if (!oc) { - /* Deduping one is good enough to handle duplicated PMUs. */ - static char *printed; - - /* - * Adding events automatically would be difficult, because - * it would risk creating groups that are not schedulable. - * perf stat doesn't understand all the scheduling constraints - * of events. So we ask the user instead to add the missing - * events. - */ - if (!printed || - strcasecmp(printed, metric_name)) { - fprintf(stderr, - "Add %s event to groups to get metric expression for %s\n", - metric_name, - counter->name); - free(printed); - printed = strdup(metric_name); - } - invalid = true; - continue; - } - metric_events[i++] = oc; - oc->collect_stat = true; - } - metric_events[i] = NULL; - if (invalid) { - free(metric_events); - counter->metric_events = NULL; - counter->metric_expr = NULL; - } - } - expr__ctx_free(ctx); -} - static double runtime_stat_avg(struct runtime_stat *st, enum stat_type type, int map_idx, struct runtime_stat_data *rsd) @@ -1299,10 +1191,6 @@ void perf_stat__print_shadow_stats(struct perf_stat_config *config, color = NULL; print_metric(config, ctxp, color, "%8.1f%%", "Core Bound", core_bound * 100.); - } else if (evsel->metric_expr) { - generic_metric(config, evsel->metric_expr, evsel->metric_events, NULL, - evsel->name, evsel->metric_name, NULL, 1, - map_idx, out, st); } else if (runtime_stat_n(st, STAT_NSECS, map_idx, &rsd) != 0) { char unit = ' '; char unit_buf[10] = "/sec"; diff --git a/tools/perf/util/stat.h b/tools/perf/util/stat.h index 499c3bf81333..b1c29156c560 100644 --- a/tools/perf/util/stat.h +++ b/tools/perf/util/stat.h @@ -257,7 +257,6 @@ void perf_stat__print_shadow_stats(struct perf_stat_config *config, struct perf_stat_output_ctx *out, struct rblist *metric_events, struct runtime_stat *st); -void perf_stat__collect_metric_expr(struct evlist *); int evlist__alloc_stats(struct perf_stat_config *config, struct evlist *evlist, bool alloc_raw);