[PATCH 13/19] perf metric: Add cache_miss_cycles to metric parse test

2020-07-29 Thread Jiri Olsa
Adding test that compute metric with other metrics in it.

  cache_miss_cycles = metric:dcache_miss_cpi + metric:icache_miss_cycles

Signed-off-by: Jiri Olsa 
Reviewed-by: Kajol Jain 
Acked-by: Ian Rogers 
Cc: Alexander Shishkin 
Cc: Andi Kleen 
Cc: John Garry 
Cc: Michael Petlan 
Cc: Namhyung Kim 
Cc: Paul Clarke 
Cc: Peter Zijlstra 
Cc: Stephane Eranian 
Link: http://lore.kernel.org/lkml/20200719181320.785305-14-jo...@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo 
---
 tools/perf/tests/parse-metric.c | 33 +
 1 file changed, 33 insertions(+)

diff --git a/tools/perf/tests/parse-metric.c b/tools/perf/tests/parse-metric.c
index 8c48251425e1..28f33893338b 100644
--- a/tools/perf/tests/parse-metric.c
+++ b/tools/perf/tests/parse-metric.c
@@ -11,6 +11,8 @@
 #include "debug.h"
 #include "expr.h"
 #include "stat.h"
+#include 
+#include 
 
 static struct pmu_event pme_test[] = {
 {
@@ -22,6 +24,18 @@ static struct pmu_event pme_test[] = {
  "( 1 + cpu_clk_unhalted.one_thread_active / 
cpu_clk_unhalted.ref_xclk ) )))",
.metric_name= "Frontend_Bound_SMT",
 },
+{
+   .metric_expr= "l1d\\-loads\\-misses / inst_retired.any",
+   .metric_name= "dcache_miss_cpi",
+},
+{
+   .metric_expr= "l1i\\-loads\\-misses / inst_retired.any",
+   .metric_name= "icache_miss_cycles",
+},
+{
+   .metric_expr= "(dcache_miss_cpi + icache_miss_cycles)",
+   .metric_name= "cache_miss_cycles",
+},
 };
 
 static struct pmu_events_map map = {
@@ -162,9 +176,28 @@ static int test_frontend(void)
return 0;
 }
 
+static int test_cache_miss_cycles(void)
+{
+   double ratio;
+   struct value vals[] = {
+   { .event = "l1d-loads-misses",  .val = 300 },
+   { .event = "l1i-loads-misses",  .val = 200 },
+   { .event = "inst_retired.any",  .val = 400 },
+   { 0 },
+   };
+
+   TEST_ASSERT_VAL("failed to compute metric",
+   compute_metric("cache_miss_cycles", vals, ) == 0);
+
+   TEST_ASSERT_VAL("cache_miss_cycles failed, wrong ratio",
+   ratio == 1.25);
+   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);
+   TEST_ASSERT_VAL("cache_miss_cycles failed", test_cache_miss_cycles() == 
0);
return 0;
 }
-- 
2.25.4



Re: [PATCH 13/19] perf metric: Add cache_miss_cycles to metric parse test

2020-07-28 Thread Arnaldo Carvalho de Melo
Em Sun, Jul 26, 2020 at 02:49:35PM +0530, kajoljain escreveu:
> 
> 
> On 7/19/20 11:43 PM, Jiri Olsa wrote:
> > Adding test that compute metric with other metrics in it.
> > 
> >   cache_miss_cycles = metric:dcache_miss_cpi + metric:icache_miss_cycles
> > 
> > Acked-by: Ian Rogers 
> > Signed-off-by: Jiri Olsa 
> 
> Reviewed-By : Kajol Jain

Thanks, applied.

- Arnaldo
 
> Thanks,
> Kajol Jain
> > ---
> >  tools/perf/tests/parse-metric.c | 33 +
> >  1 file changed, 33 insertions(+)
> > 
> > diff --git a/tools/perf/tests/parse-metric.c 
> > b/tools/perf/tests/parse-metric.c
> > index 8c48251425e1..28f33893338b 100644
> > --- a/tools/perf/tests/parse-metric.c
> > +++ b/tools/perf/tests/parse-metric.c
> > @@ -11,6 +11,8 @@
> >  #include "debug.h"
> >  #include "expr.h"
> >  #include "stat.h"
> > +#include 
> > +#include 
> >  
> >  static struct pmu_event pme_test[] = {
> >  {
> > @@ -22,6 +24,18 @@ static struct pmu_event pme_test[] = {
> >   "( 1 + cpu_clk_unhalted.one_thread_active / 
> > cpu_clk_unhalted.ref_xclk ) )))",
> > .metric_name= "Frontend_Bound_SMT",
> >  },
> > +{
> > +   .metric_expr= "l1d\\-loads\\-misses / inst_retired.any",
> > +   .metric_name= "dcache_miss_cpi",
> > +},
> > +{
> > +   .metric_expr= "l1i\\-loads\\-misses / inst_retired.any",
> > +   .metric_name= "icache_miss_cycles",
> > +},
> > +{
> > +   .metric_expr= "(dcache_miss_cpi + icache_miss_cycles)",
> > +   .metric_name= "cache_miss_cycles",
> > +},
> >  };
> >  
> >  static struct pmu_events_map map = {
> > @@ -162,9 +176,28 @@ static int test_frontend(void)
> > return 0;
> >  }
> >  
> > +static int test_cache_miss_cycles(void)
> > +{
> > +   double ratio;
> > +   struct value vals[] = {
> > +   { .event = "l1d-loads-misses",  .val = 300 },
> > +   { .event = "l1i-loads-misses",  .val = 200 },
> > +   { .event = "inst_retired.any",  .val = 400 },
> > +   { 0 },
> > +   };
> > +
> > +   TEST_ASSERT_VAL("failed to compute metric",
> > +   compute_metric("cache_miss_cycles", vals, ) == 0);
> > +
> > +   TEST_ASSERT_VAL("cache_miss_cycles failed, wrong ratio",
> > +   ratio == 1.25);
> > +   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);
> > +   TEST_ASSERT_VAL("cache_miss_cycles failed", test_cache_miss_cycles() == 
> > 0);
> > return 0;
> >  }
> > 

-- 

- Arnaldo


Re: [PATCH 13/19] perf metric: Add cache_miss_cycles to metric parse test

2020-07-26 Thread kajoljain



On 7/19/20 11:43 PM, Jiri Olsa wrote:
> Adding test that compute metric with other metrics in it.
> 
>   cache_miss_cycles = metric:dcache_miss_cpi + metric:icache_miss_cycles
> 
> Acked-by: Ian Rogers 
> Signed-off-by: Jiri Olsa 

Reviewed-By : Kajol Jain

Thanks,
Kajol Jain
> ---
>  tools/perf/tests/parse-metric.c | 33 +
>  1 file changed, 33 insertions(+)
> 
> diff --git a/tools/perf/tests/parse-metric.c b/tools/perf/tests/parse-metric.c
> index 8c48251425e1..28f33893338b 100644
> --- a/tools/perf/tests/parse-metric.c
> +++ b/tools/perf/tests/parse-metric.c
> @@ -11,6 +11,8 @@
>  #include "debug.h"
>  #include "expr.h"
>  #include "stat.h"
> +#include 
> +#include 
>  
>  static struct pmu_event pme_test[] = {
>  {
> @@ -22,6 +24,18 @@ static struct pmu_event pme_test[] = {
> "( 1 + cpu_clk_unhalted.one_thread_active / 
> cpu_clk_unhalted.ref_xclk ) )))",
>   .metric_name= "Frontend_Bound_SMT",
>  },
> +{
> + .metric_expr= "l1d\\-loads\\-misses / inst_retired.any",
> + .metric_name= "dcache_miss_cpi",
> +},
> +{
> + .metric_expr= "l1i\\-loads\\-misses / inst_retired.any",
> + .metric_name= "icache_miss_cycles",
> +},
> +{
> + .metric_expr= "(dcache_miss_cpi + icache_miss_cycles)",
> + .metric_name= "cache_miss_cycles",
> +},
>  };
>  
>  static struct pmu_events_map map = {
> @@ -162,9 +176,28 @@ static int test_frontend(void)
>   return 0;
>  }
>  
> +static int test_cache_miss_cycles(void)
> +{
> + double ratio;
> + struct value vals[] = {
> + { .event = "l1d-loads-misses",  .val = 300 },
> + { .event = "l1i-loads-misses",  .val = 200 },
> + { .event = "inst_retired.any",  .val = 400 },
> + { 0 },
> + };
> +
> + TEST_ASSERT_VAL("failed to compute metric",
> + compute_metric("cache_miss_cycles", vals, ) == 0);
> +
> + TEST_ASSERT_VAL("cache_miss_cycles failed, wrong ratio",
> + ratio == 1.25);
> + 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);
> + TEST_ASSERT_VAL("cache_miss_cycles failed", test_cache_miss_cycles() == 
> 0);
>   return 0;
>  }
> 


[PATCH 13/19] perf metric: Add cache_miss_cycles to metric parse test

2020-07-19 Thread Jiri Olsa
Adding test that compute metric with other metrics in it.

  cache_miss_cycles = metric:dcache_miss_cpi + metric:icache_miss_cycles

Acked-by: Ian Rogers 
Signed-off-by: Jiri Olsa 
---
 tools/perf/tests/parse-metric.c | 33 +
 1 file changed, 33 insertions(+)

diff --git a/tools/perf/tests/parse-metric.c b/tools/perf/tests/parse-metric.c
index 8c48251425e1..28f33893338b 100644
--- a/tools/perf/tests/parse-metric.c
+++ b/tools/perf/tests/parse-metric.c
@@ -11,6 +11,8 @@
 #include "debug.h"
 #include "expr.h"
 #include "stat.h"
+#include 
+#include 
 
 static struct pmu_event pme_test[] = {
 {
@@ -22,6 +24,18 @@ static struct pmu_event pme_test[] = {
  "( 1 + cpu_clk_unhalted.one_thread_active / 
cpu_clk_unhalted.ref_xclk ) )))",
.metric_name= "Frontend_Bound_SMT",
 },
+{
+   .metric_expr= "l1d\\-loads\\-misses / inst_retired.any",
+   .metric_name= "dcache_miss_cpi",
+},
+{
+   .metric_expr= "l1i\\-loads\\-misses / inst_retired.any",
+   .metric_name= "icache_miss_cycles",
+},
+{
+   .metric_expr= "(dcache_miss_cpi + icache_miss_cycles)",
+   .metric_name= "cache_miss_cycles",
+},
 };
 
 static struct pmu_events_map map = {
@@ -162,9 +176,28 @@ static int test_frontend(void)
return 0;
 }
 
+static int test_cache_miss_cycles(void)
+{
+   double ratio;
+   struct value vals[] = {
+   { .event = "l1d-loads-misses",  .val = 300 },
+   { .event = "l1i-loads-misses",  .val = 200 },
+   { .event = "inst_retired.any",  .val = 400 },
+   { 0 },
+   };
+
+   TEST_ASSERT_VAL("failed to compute metric",
+   compute_metric("cache_miss_cycles", vals, ) == 0);
+
+   TEST_ASSERT_VAL("cache_miss_cycles failed, wrong ratio",
+   ratio == 1.25);
+   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);
+   TEST_ASSERT_VAL("cache_miss_cycles failed", test_cache_miss_cycles() == 
0);
return 0;
 }
-- 
2.25.4