Messages in this thread | | | Date | Mon, 1 Jun 2020 12:08:52 -0300 | From | Arnaldo Carvalho de Melo <> | Subject | Re: [PATCH 14/14] perf tests: Add parse metric test for frontend metric |
| |
Em Mon, Jun 01, 2020 at 01:06:01AM -0700, Ian Rogers escreveu: > 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>
Ditto.
- Arnaldo
> 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 > >
--
- Arnaldo
| |