Re: [PATCH] perf evsel: Fix incorrect precise_ip in default event name
Hi Namhyung, Yeah, you are right. I'll send a new patch later. Thanks, Mengting Zhang On 2017/11/10 14:30, Namhyung Kim wrote: Hello, On Fri, Nov 10, 2017 at 01:49:06PM +0800, Mengting Zhang wrote: When no event is specified with -e option, perf will specify a "cycles" event with the highest level of precision available in perf_event_attr.precise_ip as the default event. But the evsel name shows an incorrect precise ip, fix it. For example, with a highest precision perf_event_attr.precise_ip = 2, the evsel name "cycles:ppp" shows a wrong precision available. Before: $./perf record sleep 1 [ perf record: Woken up 1 times to write data ] [ perf record: Captured and wrote 0.014 MB perf.data (21 samples) ] $./perf evlist -v cycles:ppp: size: 112, { sample_period, sample_freq }: 4000, sample_type: IP|TID|TIME|PERIOD, disabled: 1, inherit: 1, mmap: 1, comm: 1, freq: 1, enable_on_exec: 1, task: 1, precise_ip: 2, sample_id_all: 1, exclude_guest: 1, mmap2: 1, comm_exec: 1 After: $./perf record sleep 1 [ perf record: Woken up 1 times to write data ] [ perf record: Captured and wrote 0.014 MB perf.data (16 samples) ] $./perf evlist -v cycles:pp: size: 112, { sample_period, sample_freq }: 4000, sample_type: IP|TID|TIME|PERIOD, disabled: 1, inherit: 1, mmap: 1, comm: 1, freq: 1, enable_on_exec: 1, task: 1, precise_ip: 2, sample_id_all: 1, exclude_guest: 1, mmap2: 1, comm_exec: 1 Signed-off-by: Mengting Zhang--- tools/perf/util/evsel.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c index 0dccdb8..94cf11d 100644 --- a/tools/perf/util/evsel.c +++ b/tools/perf/util/evsel.c @@ -312,7 +312,7 @@ struct perf_evsel *perf_evsel__new_cycles(bool precise) if (asprintf(>name, "cycles%s%s%.*s", (attr.precise_ip || attr.exclude_kernel) ? ":" : "", attr.exclude_kernel ? "u" : "", -attr.precise_ip ? attr.precise_ip + 1 : 0, "ppp") < 0) +attr.precise_ip ? attr.precise_ip : 0, "ppp") < 0) I think you don't need to check value of the precise_ip anymore. The following should be ok: attr.precise_ip, "ppp") < 0) Thanks, Namhyung .
Re: [PATCH] perf evsel: Fix incorrect precise_ip in default event name
Hi Namhyung, Yeah, you are right. I'll send a new patch later. Thanks, Mengting Zhang On 2017/11/10 14:30, Namhyung Kim wrote: Hello, On Fri, Nov 10, 2017 at 01:49:06PM +0800, Mengting Zhang wrote: When no event is specified with -e option, perf will specify a "cycles" event with the highest level of precision available in perf_event_attr.precise_ip as the default event. But the evsel name shows an incorrect precise ip, fix it. For example, with a highest precision perf_event_attr.precise_ip = 2, the evsel name "cycles:ppp" shows a wrong precision available. Before: $./perf record sleep 1 [ perf record: Woken up 1 times to write data ] [ perf record: Captured and wrote 0.014 MB perf.data (21 samples) ] $./perf evlist -v cycles:ppp: size: 112, { sample_period, sample_freq }: 4000, sample_type: IP|TID|TIME|PERIOD, disabled: 1, inherit: 1, mmap: 1, comm: 1, freq: 1, enable_on_exec: 1, task: 1, precise_ip: 2, sample_id_all: 1, exclude_guest: 1, mmap2: 1, comm_exec: 1 After: $./perf record sleep 1 [ perf record: Woken up 1 times to write data ] [ perf record: Captured and wrote 0.014 MB perf.data (16 samples) ] $./perf evlist -v cycles:pp: size: 112, { sample_period, sample_freq }: 4000, sample_type: IP|TID|TIME|PERIOD, disabled: 1, inherit: 1, mmap: 1, comm: 1, freq: 1, enable_on_exec: 1, task: 1, precise_ip: 2, sample_id_all: 1, exclude_guest: 1, mmap2: 1, comm_exec: 1 Signed-off-by: Mengting Zhang --- tools/perf/util/evsel.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c index 0dccdb8..94cf11d 100644 --- a/tools/perf/util/evsel.c +++ b/tools/perf/util/evsel.c @@ -312,7 +312,7 @@ struct perf_evsel *perf_evsel__new_cycles(bool precise) if (asprintf(>name, "cycles%s%s%.*s", (attr.precise_ip || attr.exclude_kernel) ? ":" : "", attr.exclude_kernel ? "u" : "", -attr.precise_ip ? attr.precise_ip + 1 : 0, "ppp") < 0) +attr.precise_ip ? attr.precise_ip : 0, "ppp") < 0) I think you don't need to check value of the precise_ip anymore. The following should be ok: attr.precise_ip, "ppp") < 0) Thanks, Namhyung .
Re: [PATCH] perf evsel: Fix incorrect precise_ip in default event name
Hello, On Fri, Nov 10, 2017 at 01:49:06PM +0800, Mengting Zhang wrote: > When no event is specified with -e option, perf will specify a > "cycles" event with the highest level of precision available in > perf_event_attr.precise_ip as the default event. But the evsel name > shows an incorrect precise ip, fix it. > > For example, with a highest precision perf_event_attr.precise_ip = 2, > the evsel name "cycles:ppp" shows a wrong precision available. > > Before: > $./perf record sleep 1 > [ perf record: Woken up 1 times to write data ] > [ perf record: Captured and wrote 0.014 MB perf.data (21 samples) ] > $./perf evlist -v > cycles:ppp: size: 112, { sample_period, sample_freq }: 4000, > sample_type: IP|TID|TIME|PERIOD, disabled: 1, inherit: 1, mmap: 1, > comm: 1, freq: 1, enable_on_exec: 1, task: 1, precise_ip: 2, > sample_id_all: 1, exclude_guest: 1, mmap2: 1, comm_exec: 1 > > After: > $./perf record sleep 1 > [ perf record: Woken up 1 times to write data ] > [ perf record: Captured and wrote 0.014 MB perf.data (16 samples) ] > $./perf evlist -v > cycles:pp: size: 112, { sample_period, sample_freq }: 4000, > sample_type: IP|TID|TIME|PERIOD, disabled: 1, inherit: 1, mmap: 1, > comm: 1, freq: 1, enable_on_exec: 1, task: 1, precise_ip: 2, > sample_id_all: 1, exclude_guest: 1, mmap2: 1, comm_exec: 1 > > Signed-off-by: Mengting Zhang> --- > tools/perf/util/evsel.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c > index 0dccdb8..94cf11d 100644 > --- a/tools/perf/util/evsel.c > +++ b/tools/perf/util/evsel.c > @@ -312,7 +312,7 @@ struct perf_evsel *perf_evsel__new_cycles(bool precise) > if (asprintf(>name, "cycles%s%s%.*s", >(attr.precise_ip || attr.exclude_kernel) ? ":" : "", >attr.exclude_kernel ? "u" : "", > - attr.precise_ip ? attr.precise_ip + 1 : 0, "ppp") < 0) > + attr.precise_ip ? attr.precise_ip : 0, "ppp") < 0) I think you don't need to check value of the precise_ip anymore. The following should be ok: attr.precise_ip, "ppp") < 0) Thanks, Namhyung
Re: [PATCH] perf evsel: Fix incorrect precise_ip in default event name
Hello, On Fri, Nov 10, 2017 at 01:49:06PM +0800, Mengting Zhang wrote: > When no event is specified with -e option, perf will specify a > "cycles" event with the highest level of precision available in > perf_event_attr.precise_ip as the default event. But the evsel name > shows an incorrect precise ip, fix it. > > For example, with a highest precision perf_event_attr.precise_ip = 2, > the evsel name "cycles:ppp" shows a wrong precision available. > > Before: > $./perf record sleep 1 > [ perf record: Woken up 1 times to write data ] > [ perf record: Captured and wrote 0.014 MB perf.data (21 samples) ] > $./perf evlist -v > cycles:ppp: size: 112, { sample_period, sample_freq }: 4000, > sample_type: IP|TID|TIME|PERIOD, disabled: 1, inherit: 1, mmap: 1, > comm: 1, freq: 1, enable_on_exec: 1, task: 1, precise_ip: 2, > sample_id_all: 1, exclude_guest: 1, mmap2: 1, comm_exec: 1 > > After: > $./perf record sleep 1 > [ perf record: Woken up 1 times to write data ] > [ perf record: Captured and wrote 0.014 MB perf.data (16 samples) ] > $./perf evlist -v > cycles:pp: size: 112, { sample_period, sample_freq }: 4000, > sample_type: IP|TID|TIME|PERIOD, disabled: 1, inherit: 1, mmap: 1, > comm: 1, freq: 1, enable_on_exec: 1, task: 1, precise_ip: 2, > sample_id_all: 1, exclude_guest: 1, mmap2: 1, comm_exec: 1 > > Signed-off-by: Mengting Zhang > --- > tools/perf/util/evsel.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c > index 0dccdb8..94cf11d 100644 > --- a/tools/perf/util/evsel.c > +++ b/tools/perf/util/evsel.c > @@ -312,7 +312,7 @@ struct perf_evsel *perf_evsel__new_cycles(bool precise) > if (asprintf(>name, "cycles%s%s%.*s", >(attr.precise_ip || attr.exclude_kernel) ? ":" : "", >attr.exclude_kernel ? "u" : "", > - attr.precise_ip ? attr.precise_ip + 1 : 0, "ppp") < 0) > + attr.precise_ip ? attr.precise_ip : 0, "ppp") < 0) I think you don't need to check value of the precise_ip anymore. The following should be ok: attr.precise_ip, "ppp") < 0) Thanks, Namhyung
[PATCH] perf evsel: Fix incorrect precise_ip in default event name
When no event is specified with -e option, perf will specify a "cycles" event with the highest level of precision available in perf_event_attr.precise_ip as the default event. But the evsel name shows an incorrect precise ip, fix it. For example, with a highest precision perf_event_attr.precise_ip = 2, the evsel name "cycles:ppp" shows a wrong precision available. Before: $./perf record sleep 1 [ perf record: Woken up 1 times to write data ] [ perf record: Captured and wrote 0.014 MB perf.data (21 samples) ] $./perf evlist -v cycles:ppp: size: 112, { sample_period, sample_freq }: 4000, sample_type: IP|TID|TIME|PERIOD, disabled: 1, inherit: 1, mmap: 1, comm: 1, freq: 1, enable_on_exec: 1, task: 1, precise_ip: 2, sample_id_all: 1, exclude_guest: 1, mmap2: 1, comm_exec: 1 After: $./perf record sleep 1 [ perf record: Woken up 1 times to write data ] [ perf record: Captured and wrote 0.014 MB perf.data (16 samples) ] $./perf evlist -v cycles:pp: size: 112, { sample_period, sample_freq }: 4000, sample_type: IP|TID|TIME|PERIOD, disabled: 1, inherit: 1, mmap: 1, comm: 1, freq: 1, enable_on_exec: 1, task: 1, precise_ip: 2, sample_id_all: 1, exclude_guest: 1, mmap2: 1, comm_exec: 1 Signed-off-by: Mengting Zhang--- tools/perf/util/evsel.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c index 0dccdb8..94cf11d 100644 --- a/tools/perf/util/evsel.c +++ b/tools/perf/util/evsel.c @@ -312,7 +312,7 @@ struct perf_evsel *perf_evsel__new_cycles(bool precise) if (asprintf(>name, "cycles%s%s%.*s", (attr.precise_ip || attr.exclude_kernel) ? ":" : "", attr.exclude_kernel ? "u" : "", -attr.precise_ip ? attr.precise_ip + 1 : 0, "ppp") < 0) +attr.precise_ip ? attr.precise_ip : 0, "ppp") < 0) goto error_free; out: return evsel; -- 1.7.12.4
[PATCH] perf evsel: Fix incorrect precise_ip in default event name
When no event is specified with -e option, perf will specify a "cycles" event with the highest level of precision available in perf_event_attr.precise_ip as the default event. But the evsel name shows an incorrect precise ip, fix it. For example, with a highest precision perf_event_attr.precise_ip = 2, the evsel name "cycles:ppp" shows a wrong precision available. Before: $./perf record sleep 1 [ perf record: Woken up 1 times to write data ] [ perf record: Captured and wrote 0.014 MB perf.data (21 samples) ] $./perf evlist -v cycles:ppp: size: 112, { sample_period, sample_freq }: 4000, sample_type: IP|TID|TIME|PERIOD, disabled: 1, inherit: 1, mmap: 1, comm: 1, freq: 1, enable_on_exec: 1, task: 1, precise_ip: 2, sample_id_all: 1, exclude_guest: 1, mmap2: 1, comm_exec: 1 After: $./perf record sleep 1 [ perf record: Woken up 1 times to write data ] [ perf record: Captured and wrote 0.014 MB perf.data (16 samples) ] $./perf evlist -v cycles:pp: size: 112, { sample_period, sample_freq }: 4000, sample_type: IP|TID|TIME|PERIOD, disabled: 1, inherit: 1, mmap: 1, comm: 1, freq: 1, enable_on_exec: 1, task: 1, precise_ip: 2, sample_id_all: 1, exclude_guest: 1, mmap2: 1, comm_exec: 1 Signed-off-by: Mengting Zhang --- tools/perf/util/evsel.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c index 0dccdb8..94cf11d 100644 --- a/tools/perf/util/evsel.c +++ b/tools/perf/util/evsel.c @@ -312,7 +312,7 @@ struct perf_evsel *perf_evsel__new_cycles(bool precise) if (asprintf(>name, "cycles%s%s%.*s", (attr.precise_ip || attr.exclude_kernel) ? ":" : "", attr.exclude_kernel ? "u" : "", -attr.precise_ip ? attr.precise_ip + 1 : 0, "ppp") < 0) +attr.precise_ip ? attr.precise_ip : 0, "ppp") < 0) goto error_free; out: return evsel; -- 1.7.12.4