All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Jiri Olsa <jolsa@redhat.com>, Ian Rogers <irogers@google.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@redhat.com>,
	Mark Rutland <mark.rutland@arm.com>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Namhyung Kim <namhyung@kernel.org>,
	Song Liu <songliubraving@fb.com>,
	Andrii Nakryiko <andriin@fb.com>,
	Kajol Jain <kjain@linux.ibm.com>, Andi Kleen <ak@linux.intel.com>,
	John Garry <john.garry@huawei.com>,
	Jin Yao <yao.jin@linux.intel.com>,
	Kan Liang <kan.liang@linux.intel.com>,
	Cong Wang <xiyou.wangcong@gmail.com>,
	Kim Phillips <kim.phillips@amd.com>, Paul Clarke <pc@us.ibm.com>,
	Srikar Dronamraju <srikar@linux.vnet.ibm.com>,
	linux-kernel@vger.kernel.org, netdev@vger.kernel.org,
	bpf@vger.kernel.org, linux-perf-users@vger.kernel.org,
	Vince Weaver <vincent.weaver@maine.edu>,
	Stephane Eranian <eranian@google.com>
Subject: Re: [PATCH v2 0/7] Share events between metrics
Date: Fri, 22 May 2020 11:49:08 -0300	[thread overview]
Message-ID: <20200522144908.GI14034@kernel.org> (raw)
In-Reply-To: <20200522101311.GA404187@krava>

Em Fri, May 22, 2020 at 12:13:11PM +0200, Jiri Olsa escreveu:
> On Thu, May 21, 2020 at 02:22:35PM -0300, Arnaldo Carvalho de Melo wrote:
> > Em Thu, May 21, 2020 at 01:43:25PM +0200, Jiri Olsa escreveu:
> > > On Wed, May 20, 2020 at 11:20:04AM -0700, Ian Rogers wrote:
> > > 
> > > SNIP
> > > 
> > > > There are 5 out of 12 metric groups where no events are shared, such
> > > > as Power, however, disabling grouping of events always reduces the
> > > > number of events.
> > > > 
> > > > The result for Memory_BW needs explanation:
> > > > 
> > > > Metric group: Memory_BW
> > > >  - No merging (old default, now --metric-no-merge): 9
> > > >  - Merging over metrics (new default)             : 5
> > > >  - No event groups and merging (--metric-no-group): 11
> > > > 
> > > > Both with and without merging the groups fail to be set up and so the
> > > > event counts here are for broken metrics. The --metric-no-group number
> > > > is accurate as all the events are scheduled. Ideally a constraint
> > > > would be added for these metrics in the json code to avoid grouping.
> > > > 
> > > > v2. rebases on kernel/git/acme/linux.git branch tmp.perf/core, fixes a
> > > > missing comma with metric lists (reported-by Jiri Olsa
> > > > <jolsa@redhat.com>) and adds early returns to metricgroup__add_metric
> > > > (suggested-by Jiri Olsa).
> > > 
> > > Acked-by: Jiri Olsa <jolsa@redhat.com>
> > 
> > Applied and pushed to tmp.perf/core, will move to perf/core as soon as
> > testing finishes,
> 
> I checked tmp.perf/core and I'm getting segfault for 'perf test expr'

Right, reproduced here and...
 
> 	 7: Simple expression parser                              :
> 	Program received signal SIGSEGV, Segmentation fault.
> 	0x000000000067841e in hashmap_find_entry (map=0x7fffffffd0c0, key=0xc83b30, hash=9893851511679796638, pprev=0x0, entry=0x7fffffffc658) at hashmap.c:131
> 	131             for (prev_ptr = &map->buckets[hash], cur = *prev_ptr;
> 	(gdb) bt
> 	#0  0x000000000067841e in hashmap_find_entry (map=0x7fffffffd0c0, key=0xc83b30, hash=9893851511679796638, pprev=0x0, entry=0x7fffffffc658) at hashmap.c:131
> 	#1  0x000000000067853a in hashmap__insert (map=0x7fffffffd0c0, key=0xc83b30, value=0x0, strategy=HASHMAP_SET, old_key=0x7fffffffc718, 
> 	    old_value=0x7fffffffc710) at hashmap.c:160
> 	#2  0x00000000005d3209 in hashmap__set (map=0x7fffffffd0c0, key=0xc83b30, value=0x0, old_key=0x7fffffffc718, old_value=0x7fffffffc710)
> 	    at /home/jolsa/kernel/linux-perf/tools/perf/util/hashmap.h:107
> 	#3  0x00000000005d3386 in expr__add_id (ctx=0x7fffffffd0c0, name=0xc83b30 "FOO", val=0) at util/expr.c:45
> 	#4  0x00000000005d27ee in expr_parse (final_val=0x0, ctx=0x7fffffffd0c0, scanner=0xc87990) at util/expr.y:63
> 	#5  0x00000000005d35b7 in __expr__parse (val=0x0, ctx=0x7fffffffd0c0, expr=0x75a84b "FOO + BAR + BAZ + BOZO", start=259, runtime=1) at util/expr.c:102
> 	#6  0x00000000005d36c6 in expr__find_other (expr=0x75a84b "FOO + BAR + BAZ + BOZO", one=0x75a791 "FOO", ctx=0x7fffffffd0c0, runtime=1) at util/expr.c:121
> 	#7  0x00000000004e3aaf in test__expr (t=0xa7bd40 <generic_tests+384>, subtest=-1) at tests/expr.c:55
> 	#8  0x00000000004b5651 in run_test (test=0xa7bd40 <generic_tests+384>, subtest=-1) at tests/builtin-test.c:393
> 	#9  0x00000000004b5787 in test_and_print (t=0xa7bd40 <generic_tests+384>, force_skip=false, subtest=-1) at tests/builtin-test.c:423
> 	#10 0x00000000004b61c4 in __cmd_test (argc=1, argv=0x7fffffffd7f0, skiplist=0x0) at tests/builtin-test.c:628
> 	#11 0x00000000004b6911 in cmd_test (argc=1, argv=0x7fffffffd7f0) at tests/builtin-test.c:772
> 	#12 0x00000000004e977b in run_builtin (p=0xa7eee8 <commands+552>, argc=3, argv=0x7fffffffd7f0) at perf.c:312
> 	#13 0x00000000004e99e8 in handle_internal_command (argc=3, argv=0x7fffffffd7f0) at perf.c:364
> 	#14 0x00000000004e9b2f in run_argv (argcp=0x7fffffffd64c, argv=0x7fffffffd640) at perf.c:408
> 	#15 0x00000000004e9efb in main (argc=3, argv=0x7fffffffd7f0) at perf.c:538
> 
> attached patch fixes it for me, but I'm not sure this
> should be necessary

... applying the patch below makes the segfault go away. Ian, Ack? I can
fold it into the patch introducing the problem.

- Arnaldo
 
> jirka
> 
> 
> ---
> diff --git a/tools/perf/tests/expr.c b/tools/perf/tests/expr.c
> index 1cb02ca2b15f..21693fe516c1 100644
> --- a/tools/perf/tests/expr.c
> +++ b/tools/perf/tests/expr.c
> @@ -52,6 +52,7 @@ int test__expr(struct test *t __maybe_unused, int subtest __maybe_unused)
>  	TEST_ASSERT_VAL("missing operand", ret == -1);
>  
>  	expr__ctx_clear(&ctx);
> +	expr__ctx_init(&ctx);
>  	TEST_ASSERT_VAL("find other",
>  			expr__find_other("FOO + BAR + BAZ + BOZO", "FOO",
>  					 &ctx, 1) == 0);
> @@ -64,6 +65,7 @@ int test__expr(struct test *t __maybe_unused, int subtest __maybe_unused)
>  						    (void **)&val_ptr));
>  
>  	expr__ctx_clear(&ctx);
> +	expr__ctx_init(&ctx);
>  	TEST_ASSERT_VAL("find other",
>  			expr__find_other("EVENT1\\,param\\=?@ + EVENT2\\,param\\=?@",
>  					 NULL, &ctx, 3) == 0);
> 
> 

-- 

- Arnaldo

WARNING: multiple messages have this Message-ID (diff)
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Jiri Olsa <jolsa@redhat.com>, Ian Rogers <irogers@google.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@redhat.com>,
	Mark Rutland <mark.rutland@arm.com>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Namhyung Kim <namhyung@kernel.org>,
	Song Liu <songliubraving@fb.com>,
	Andrii Nakryiko <andriin@fb.com>,
	Kajol Jain <kjain@linux.ibm.com>, Andi Kleen <ak@linux.intel.com>,
	John Garry <john.garry@huawei.com>,
	Jin Yao <yao.jin@linux.intel.com>,
	Kan Liang <kan.liang@linux.intel.com>,
	Cong Wang <xiyou.wangcong@gmail.com>,
	Kim Phillips <kim.phillips@amd.com>, Paul Clarke <pc@us.ibm.com>,
	Srikar Dronamraju <srikar@linux.vnet.ibm.com>,
	linux-kernel@vger.kernel.org, netdev@vger.kernel.org,
	bpf@vger.kernel.org, linux-perf-users@vger.kernel.org,
	Vince Weaver <vincent.weaver@maine.edu>
Subject: Re: [PATCH v2 0/7] Share events between metrics
Date: Fri, 22 May 2020 11:49:08 -0300	[thread overview]
Message-ID: <20200522144908.GI14034@kernel.org> (raw)
In-Reply-To: <20200522101311.GA404187@krava>

Em Fri, May 22, 2020 at 12:13:11PM +0200, Jiri Olsa escreveu:
> On Thu, May 21, 2020 at 02:22:35PM -0300, Arnaldo Carvalho de Melo wrote:
> > Em Thu, May 21, 2020 at 01:43:25PM +0200, Jiri Olsa escreveu:
> > > On Wed, May 20, 2020 at 11:20:04AM -0700, Ian Rogers wrote:
> > > 
> > > SNIP
> > > 
> > > > There are 5 out of 12 metric groups where no events are shared, such
> > > > as Power, however, disabling grouping of events always reduces the
> > > > number of events.
> > > > 
> > > > The result for Memory_BW needs explanation:
> > > > 
> > > > Metric group: Memory_BW
> > > >  - No merging (old default, now --metric-no-merge): 9
> > > >  - Merging over metrics (new default)             : 5
> > > >  - No event groups and merging (--metric-no-group): 11
> > > > 
> > > > Both with and without merging the groups fail to be set up and so the
> > > > event counts here are for broken metrics. The --metric-no-group number
> > > > is accurate as all the events are scheduled. Ideally a constraint
> > > > would be added for these metrics in the json code to avoid grouping.
> > > > 
> > > > v2. rebases on kernel/git/acme/linux.git branch tmp.perf/core, fixes a
> > > > missing comma with metric lists (reported-by Jiri Olsa
> > > > <jolsa@redhat.com>) and adds early returns to metricgroup__add_metric
> > > > (suggested-by Jiri Olsa).
> > > 
> > > Acked-by: Jiri Olsa <jolsa@redhat.com>
> > 
> > Applied and pushed to tmp.perf/core, will move to perf/core as soon as
> > testing finishes,
> 
> I checked tmp.perf/core and I'm getting segfault for 'perf test expr'

Right, reproduced here and...
 
> 	 7: Simple expression parser                              :
> 	Program received signal SIGSEGV, Segmentation fault.
> 	0x000000000067841e in hashmap_find_entry (map=0x7fffffffd0c0, key=0xc83b30, hash=9893851511679796638, pprev=0x0, entry=0x7fffffffc658) at hashmap.c:131
> 	131             for (prev_ptr = &map->buckets[hash], cur = *prev_ptr;
> 	(gdb) bt
> 	#0  0x000000000067841e in hashmap_find_entry (map=0x7fffffffd0c0, key=0xc83b30, hash=9893851511679796638, pprev=0x0, entry=0x7fffffffc658) at hashmap.c:131
> 	#1  0x000000000067853a in hashmap__insert (map=0x7fffffffd0c0, key=0xc83b30, value=0x0, strategy=HASHMAP_SET, old_key=0x7fffffffc718, 
> 	    old_value=0x7fffffffc710) at hashmap.c:160
> 	#2  0x00000000005d3209 in hashmap__set (map=0x7fffffffd0c0, key=0xc83b30, value=0x0, old_key=0x7fffffffc718, old_value=0x7fffffffc710)
> 	    at /home/jolsa/kernel/linux-perf/tools/perf/util/hashmap.h:107
> 	#3  0x00000000005d3386 in expr__add_id (ctx=0x7fffffffd0c0, name=0xc83b30 "FOO", val=0) at util/expr.c:45
> 	#4  0x00000000005d27ee in expr_parse (final_val=0x0, ctx=0x7fffffffd0c0, scanner=0xc87990) at util/expr.y:63
> 	#5  0x00000000005d35b7 in __expr__parse (val=0x0, ctx=0x7fffffffd0c0, expr=0x75a84b "FOO + BAR + BAZ + BOZO", start=259, runtime=1) at util/expr.c:102
> 	#6  0x00000000005d36c6 in expr__find_other (expr=0x75a84b "FOO + BAR + BAZ + BOZO", one=0x75a791 "FOO", ctx=0x7fffffffd0c0, runtime=1) at util/expr.c:121
> 	#7  0x00000000004e3aaf in test__expr (t=0xa7bd40 <generic_tests+384>, subtest=-1) at tests/expr.c:55
> 	#8  0x00000000004b5651 in run_test (test=0xa7bd40 <generic_tests+384>, subtest=-1) at tests/builtin-test.c:393
> 	#9  0x00000000004b5787 in test_and_print (t=0xa7bd40 <generic_tests+384>, force_skip=false, subtest=-1) at tests/builtin-test.c:423
> 	#10 0x00000000004b61c4 in __cmd_test (argc=1, argv=0x7fffffffd7f0, skiplist=0x0) at tests/builtin-test.c:628
> 	#11 0x00000000004b6911 in cmd_test (argc=1, argv=0x7fffffffd7f0) at tests/builtin-test.c:772
> 	#12 0x00000000004e977b in run_builtin (p=0xa7eee8 <commands+552>, argc=3, argv=0x7fffffffd7f0) at perf.c:312
> 	#13 0x00000000004e99e8 in handle_internal_command (argc=3, argv=0x7fffffffd7f0) at perf.c:364
> 	#14 0x00000000004e9b2f in run_argv (argcp=0x7fffffffd64c, argv=0x7fffffffd640) at perf.c:408
> 	#15 0x00000000004e9efb in main (argc=3, argv=0x7fffffffd7f0) at perf.c:538
> 
> attached patch fixes it for me, but I'm not sure this
> should be necessary

... applying the patch below makes the segfault go away. Ian, Ack? I can
fold it into the patch introducing the problem.

- Arnaldo
 
> jirka
> 
> 
> ---
> diff --git a/tools/perf/tests/expr.c b/tools/perf/tests/expr.c
> index 1cb02ca2b15f..21693fe516c1 100644
> --- a/tools/perf/tests/expr.c
> +++ b/tools/perf/tests/expr.c
> @@ -52,6 +52,7 @@ int test__expr(struct test *t __maybe_unused, int subtest __maybe_unused)
>  	TEST_ASSERT_VAL("missing operand", ret == -1);
>  
>  	expr__ctx_clear(&ctx);
> +	expr__ctx_init(&ctx);
>  	TEST_ASSERT_VAL("find other",
>  			expr__find_other("FOO + BAR + BAZ + BOZO", "FOO",
>  					 &ctx, 1) == 0);
> @@ -64,6 +65,7 @@ int test__expr(struct test *t __maybe_unused, int subtest __maybe_unused)
>  						    (void **)&val_ptr));
>  
>  	expr__ctx_clear(&ctx);
> +	expr__ctx_init(&ctx);
>  	TEST_ASSERT_VAL("find other",
>  			expr__find_other("EVENT1\\,param\\=?@ + EVENT2\\,param\\=?@",
>  					 NULL, &ctx, 3) == 0);
> 
> 

-- 

- Arnaldo

  reply	other threads:[~2020-05-22 14:49 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-20 18:20 [PATCH v2 0/7] Share events between metrics Ian Rogers
2020-05-20 18:20 ` [PATCH v2 1/7] perf metricgroup: Always place duration_time last Ian Rogers
2020-05-20 18:20 ` [PATCH v2 2/7] perf metricgroup: Use early return in add_metric Ian Rogers
2020-05-20 18:20 ` [PATCH v2 3/7] perf metricgroup: Delay events string creation Ian Rogers
2020-05-20 18:20 ` [PATCH v2 4/7] perf metricgroup: Order event groups by size Ian Rogers
2020-05-20 18:20 ` [PATCH v2 5/7] perf metricgroup: Remove duped metric group events Ian Rogers
2020-05-20 18:20 ` [PATCH v2 6/7] perf metricgroup: Add options to not group or merge Ian Rogers
2020-05-20 18:20 ` [PATCH v2 7/7] perf metricgroup: Remove unnecessary ',' from events Ian Rogers
2020-05-21 11:43 ` [PATCH v2 0/7] Share events between metrics Jiri Olsa
2020-05-21 11:43   ` Jiri Olsa
2020-05-21 17:22   ` Arnaldo Carvalho de Melo
2020-05-21 17:22     ` Arnaldo Carvalho de Melo
2020-05-22 10:13     ` Jiri Olsa
2020-05-22 10:13       ` Jiri Olsa
2020-05-22 14:49       ` Arnaldo Carvalho de Melo [this message]
2020-05-22 14:49         ` Arnaldo Carvalho de Melo
     [not found]         ` <CAP-5=fUaaNpi3RZd9-Q-uCaudop0tU5NN8HFek5e2XLoBZqt6w@mail.gmail.com>
2020-05-22 17:56           ` Ian Rogers
2020-05-22 17:56             ` Ian Rogers
2020-05-23 22:19             ` Jiri Olsa
2020-05-23 22:19               ` Jiri Olsa
2020-05-25 13:34               ` Arnaldo Carvalho de Melo
2020-05-25 13:34                 ` Arnaldo Carvalho de Melo
2020-05-22  9:25 ` kajoljain
2020-05-22 14:31   ` Arnaldo Carvalho de Melo
2020-05-22 14:31     ` Arnaldo Carvalho de Melo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200522144908.GI14034@kernel.org \
    --to=acme@kernel.org \
    --cc=ak@linux.intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=andriin@fb.com \
    --cc=bpf@vger.kernel.org \
    --cc=eranian@google.com \
    --cc=irogers@google.com \
    --cc=john.garry@huawei.com \
    --cc=jolsa@redhat.com \
    --cc=kan.liang@linux.intel.com \
    --cc=kim.phillips@amd.com \
    --cc=kjain@linux.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mingo@redhat.com \
    --cc=namhyung@kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pc@us.ibm.com \
    --cc=peterz@infradead.org \
    --cc=songliubraving@fb.com \
    --cc=srikar@linux.vnet.ibm.com \
    --cc=vincent.weaver@maine.edu \
    --cc=xiyou.wangcong@gmail.com \
    --cc=yao.jin@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.