Messages in this thread | | | From | Ian Rogers <> | Date | Mon, 1 Jun 2020 01:06:01 -0700 | Subject | Re: [PATCH 14/14] perf tests: Add parse metric test for frontend metric |
| |
On Sun, May 24, 2020 at 3:43 PM Jiri Olsa <jolsa@kernel.org> wrote: > > Adding new metri test for frontend metric. It's stolen
s/metri/metric/
> from x86 pmu events. > > Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Acked-by: Ian Rogers <irogers@google.com>
Thanks, Ian
> --- > tools/perf/tests/parse-metric.c | 46 +++++++++++++++++++++++++++++++++ > 1 file changed, 46 insertions(+) > > diff --git a/tools/perf/tests/parse-metric.c b/tools/perf/tests/parse-metric.c > index 3005d27c5c48..38f20850bba3 100644 > --- a/tools/perf/tests/parse-metric.c > +++ b/tools/perf/tests/parse-metric.c > @@ -15,6 +15,11 @@ static struct pmu_event pme_test[] = { > .metric_expr = "inst_retired.any / cpu_clk_unhalted.thread", > .metric_name = "IPC", > }, > +{ > + .metric_expr = "idq_uops_not_delivered.core / (4 * (( ( cpu_clk_unhalted.thread / 2 ) * " > + "( 1 + cpu_clk_unhalted.one_thread_active / cpu_clk_unhalted.ref_xclk ) )))", > + .metric_name = "Frontend_Bound_SMT", > +}, > }; > > static struct pmu_events_map map = { > @@ -110,8 +115,49 @@ static int test_ipc(void) > return 0; > } > > +static int test_frontend(void) > +{ > + double ratio; > + struct rblist metric_events = { 0 }; > + struct evlist *evlist; > + struct evsel *evsel; > + struct value vals[] = { > + { .event = "idq_uops_not_delivered.core", .val = 300 }, > + { .event = "cpu_clk_unhalted.thread", .val = 200 }, > + { .event = "cpu_clk_unhalted.one_thread_active", .val = 400 }, > + { .event = "cpu_clk_unhalted.ref_xclk", .val = 600 }, > + { 0 }, > + }; > + struct runtime_stat st; > + int err; > + > + evlist = evlist__new(); > + if (!evlist) > + return -1; > + > + err = metricgroup__parse_groups_test(evlist, &map, > + "Frontend_Bound_SMT", > + false, false, > + &metric_events); > + > + TEST_ASSERT_VAL("failed to parse metrics", err == 0); > + > + runtime_stat__init(&st); > + load_runtime_stat(&st, evlist, vals); > + > + evsel = evlist__first(evlist); > + ratio = compute_single(&metric_events, evsel, &st); > + > + TEST_ASSERT_VAL("Frontend_Bound_SMT failed, wrong ratio", ratio == 0.45); > + > + runtime_stat__exit(&st); > + evlist__delete(evlist); > + return 0; > +} > + > int test__parse_metric(struct test *test __maybe_unused, int subtest __maybe_unused) > { > TEST_ASSERT_VAL("IPC failed", test_ipc() == 0); > + TEST_ASSERT_VAL("frontend failed", test_frontend() == 0); > return 0; > } > -- > 2.25.4 >
| |