All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] perf: change samples type to unsigned long long
@ 2015-09-29 21:49 Yang Shi
  2015-10-02 19:08 ` Arnaldo Carvalho de Melo
  2015-10-03  7:51 ` [tip:perf/core] perf record: Change 'record.samples' " tip-bot for Yang Shi
  0 siblings, 2 replies; 5+ messages in thread
From: Yang Shi @ 2015-09-29 21:49 UTC (permalink / raw)
  To: acme; +Cc: linux-kernel, linaro-kernel, yang.shi

When run "perf record -e", the number of samples showed up is wrong on some
32 bit systems, i.e. powerpc and arm.

For example, run the below commands on 32 bit powerpc:

perf probe -x /lib/libc.so.6 malloc
perf record -e probe_libc:malloc -a ls
perf.data
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.036 MB perf.data (13829241621624967218 samples) ]

Actually, "perf script" just shows 21 samples. The number of samples is also
absurd since samples is long type, but it is printed as PRIu64.

Build test is run on x86-64, x86, aarch64, arm, mips, ppc and ppc64.

Signed-off-by: Yang Shi <yang.shi@linaro.org>
---
 tools/perf/builtin-record.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
index 142eeb3..e54aa4c 100644
--- a/tools/perf/builtin-record.c
+++ b/tools/perf/builtin-record.c
@@ -49,7 +49,7 @@ struct record {
 	int			realtime_prio;
 	bool			no_buildid;
 	bool			no_buildid_cache;
-	long			samples;
+	unsigned long long	samples;
 };
 
 static int record__write(struct record *rec, void *bf, size_t size)
-- 
2.0.2


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH] perf: change samples type to unsigned long long
  2015-09-29 21:49 [PATCH] perf: change samples type to unsigned long long Yang Shi
@ 2015-10-02 19:08 ` Arnaldo Carvalho de Melo
  2015-10-02 19:10   ` Arnaldo Carvalho de Melo
  2015-10-03  7:51 ` [tip:perf/core] perf record: Change 'record.samples' " tip-bot for Yang Shi
  1 sibling, 1 reply; 5+ messages in thread
From: Arnaldo Carvalho de Melo @ 2015-10-02 19:08 UTC (permalink / raw)
  To: Yang Shi; +Cc: linux-kernel, linaro-kernel, acme

Em Tue, Sep 29, 2015 at 02:49:43PM -0700, Yang Shi escreveu:
> When run "perf record -e", the number of samples showed up is wrong on some
> 32 bit systems, i.e. powerpc and arm.
> 
> For example, run the below commands on 32 bit powerpc:
> 
> perf probe -x /lib/libc.so.6 malloc
> perf record -e probe_libc:malloc -a ls
> perf.data
> [ perf record: Woken up 1 times to write data ]
> [ perf record: Captured and wrote 0.036 MB perf.data (13829241621624967218 samples) ]
> 
> Actually, "perf script" just shows 21 samples. The number of samples is also
> absurd since samples is long type, but it is printed as PRIu64.
> 
> Build test is run on x86-64, x86, aarch64, arm, mips, ppc and ppc64.

Sure?

  AR       /tmp/build/perf/libperf.a
builtin-record.c: In function ‘__cmd_record’:
builtin-record.c:689:12: error: comparison between signed and unsigned
integer expressions [-Werror=sign-compare]

- Arnaldo
 
> Signed-off-by: Yang Shi <yang.shi@linaro.org>
> ---
>  tools/perf/builtin-record.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
> index 142eeb3..e54aa4c 100644
> --- a/tools/perf/builtin-record.c
> +++ b/tools/perf/builtin-record.c
> @@ -49,7 +49,7 @@ struct record {
>  	int			realtime_prio;
>  	bool			no_buildid;
>  	bool			no_buildid_cache;
> -	long			samples;
> +	unsigned long long	samples;
>  };
>  
>  static int record__write(struct record *rec, void *bf, size_t size)
> -- 
> 2.0.2

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] perf: change samples type to unsigned long long
  2015-10-02 19:08 ` Arnaldo Carvalho de Melo
@ 2015-10-02 19:10   ` Arnaldo Carvalho de Melo
  2015-10-02 21:25     ` Shi, Yang
  0 siblings, 1 reply; 5+ messages in thread
From: Arnaldo Carvalho de Melo @ 2015-10-02 19:10 UTC (permalink / raw)
  To: Yang Shi; +Cc: linux-kernel, linaro-kernel

Em Fri, Oct 02, 2015 at 04:08:38PM -0300, Arnaldo Carvalho de Melo escreveu:
> Em Tue, Sep 29, 2015 at 02:49:43PM -0700, Yang Shi escreveu:
> > When run "perf record -e", the number of samples showed up is wrong on some
> > 32 bit systems, i.e. powerpc and arm.
> > 
> > For example, run the below commands on 32 bit powerpc:
> > 
> > perf probe -x /lib/libc.so.6 malloc
> > perf record -e probe_libc:malloc -a ls
> > perf.data
> > [ perf record: Woken up 1 times to write data ]
> > [ perf record: Captured and wrote 0.036 MB perf.data (13829241621624967218 samples) ]
> > 
> > Actually, "perf script" just shows 21 samples. The number of samples is also
> > absurd since samples is long type, but it is printed as PRIu64.
> > 
> > Build test is run on x86-64, x86, aarch64, arm, mips, ppc and ppc64.
> 
> Sure?
> 
>   AR       /tmp/build/perf/libperf.a
> builtin-record.c: In function ‘__cmd_record’:
> builtin-record.c:689:12: error: comparison between signed and unsigned
> integer expressions [-Werror=sign-compare]

You missed something important, I am fixing this and applying your
patch:

diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
index 974065f8ce80..24ace2f318c1 100644
--- a/tools/perf/builtin-record.c
+++ b/tools/perf/builtin-record.c
@@ -667,7 +667,7 @@ static int __cmd_record(struct record *rec, int argc, const char **argv)
 
 	auxtrace_snapshot_enabled = 1;
 	for (;;) {
-		int hits = rec->samples;
+		unsigned long long hits = rec->samples;
 
 		if (record__mmap_read_all(rec) < 0) {
 			auxtrace_snapshot_enabled = 0;

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH] perf: change samples type to unsigned long long
  2015-10-02 19:10   ` Arnaldo Carvalho de Melo
@ 2015-10-02 21:25     ` Shi, Yang
  0 siblings, 0 replies; 5+ messages in thread
From: Shi, Yang @ 2015-10-02 21:25 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo; +Cc: linux-kernel, linaro-kernel

On 10/2/2015 12:10 PM, Arnaldo Carvalho de Melo wrote:
> Em Fri, Oct 02, 2015 at 04:08:38PM -0300, Arnaldo Carvalho de Melo escreveu:
>> Em Tue, Sep 29, 2015 at 02:49:43PM -0700, Yang Shi escreveu:
>>> When run "perf record -e", the number of samples showed up is wrong on some
>>> 32 bit systems, i.e. powerpc and arm.
>>>
>>> For example, run the below commands on 32 bit powerpc:
>>>
>>> perf probe -x /lib/libc.so.6 malloc
>>> perf record -e probe_libc:malloc -a ls
>>> perf.data
>>> [ perf record: Woken up 1 times to write data ]
>>> [ perf record: Captured and wrote 0.036 MB perf.data (13829241621624967218 samples) ]
>>>
>>> Actually, "perf script" just shows 21 samples. The number of samples is also
>>> absurd since samples is long type, but it is printed as PRIu64.
>>>
>>> Build test is run on x86-64, x86, aarch64, arm, mips, ppc and ppc64.
>>
>> Sure?
>>
>>    AR       /tmp/build/perf/libperf.a
>> builtin-record.c: In function ‘__cmd_record’:
>> builtin-record.c:689:12: error: comparison between signed and unsigned
>> integer expressions [-Werror=sign-compare]
>
> You missed something important, I am fixing this and applying your
> patch:

Thanks a lot. Yes, it was wrong, however, my compiler just throws a 
warning instead of an error. And, the warning was hidden by my OE build 
environment.

Regards,
Yang

>
> diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
> index 974065f8ce80..24ace2f318c1 100644
> --- a/tools/perf/builtin-record.c
> +++ b/tools/perf/builtin-record.c
> @@ -667,7 +667,7 @@ static int __cmd_record(struct record *rec, int argc, const char **argv)
>
>   	auxtrace_snapshot_enabled = 1;
>   	for (;;) {
> -		int hits = rec->samples;
> +		unsigned long long hits = rec->samples;
>
>   		if (record__mmap_read_all(rec) < 0) {
>   			auxtrace_snapshot_enabled = 0;
>


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [tip:perf/core] perf record: Change 'record.samples' type to unsigned long long
  2015-09-29 21:49 [PATCH] perf: change samples type to unsigned long long Yang Shi
  2015-10-02 19:08 ` Arnaldo Carvalho de Melo
@ 2015-10-03  7:51 ` tip-bot for Yang Shi
  1 sibling, 0 replies; 5+ messages in thread
From: tip-bot for Yang Shi @ 2015-10-03  7:51 UTC (permalink / raw)
  To: linux-tip-commits; +Cc: hpa, mingo, yang.shi, linux-kernel, tglx, acme

Commit-ID:  9f065194e2a505bb6fd23946b410a0036e9de2ca
Gitweb:     http://git.kernel.org/tip/9f065194e2a505bb6fd23946b410a0036e9de2ca
Author:     Yang Shi <yang.shi@linaro.org>
AuthorDate: Tue, 29 Sep 2015 14:49:43 -0700
Committer:  Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Fri, 2 Oct 2015 16:11:08 -0300

perf record: Change 'record.samples' type to unsigned long long

When run "perf record -e", the number of samples showed up is wrong on some
32 bit systems, i.e. powerpc and arm.

For example, run the below commands on 32 bit powerpc:

  perf probe -x /lib/libc.so.6 malloc
  perf record -e probe_libc:malloc -a ls perf.data
  [ perf record: Woken up 1 times to write data ]
  [ perf record: Captured and wrote 0.036 MB perf.data (13829241621624967218 samples) ]

Actually, "perf script" just shows 21 samples. The number of samples is also
absurd since samples is long type, but it is printed as PRIu64.

Build test ran on x86-64, x86, aarch64, arm, mips, ppc and ppc64.

Signed-off-by: Yang Shi <yang.shi@linaro.org>
Cc: linaro-kernel@lists.linaro.org
Link: http://lkml.kernel.org/r/1443563383-4064-1-git-send-email-yang.shi@linaro.org
[ Bumped the 'hits' var used together with record.samples to 'unsigned long long' too ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/builtin-record.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
index 5e01c07..24ace2f 100644
--- a/tools/perf/builtin-record.c
+++ b/tools/perf/builtin-record.c
@@ -49,7 +49,7 @@ struct record {
 	int			realtime_prio;
 	bool			no_buildid;
 	bool			no_buildid_cache;
-	long			samples;
+	unsigned long long	samples;
 };
 
 static int record__write(struct record *rec, void *bf, size_t size)
@@ -667,7 +667,7 @@ static int __cmd_record(struct record *rec, int argc, const char **argv)
 
 	auxtrace_snapshot_enabled = 1;
 	for (;;) {
-		int hits = rec->samples;
+		unsigned long long hits = rec->samples;
 
 		if (record__mmap_read_all(rec) < 0) {
 			auxtrace_snapshot_enabled = 0;

^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2015-10-03  7:51 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-09-29 21:49 [PATCH] perf: change samples type to unsigned long long Yang Shi
2015-10-02 19:08 ` Arnaldo Carvalho de Melo
2015-10-02 19:10   ` Arnaldo Carvalho de Melo
2015-10-02 21:25     ` Shi, Yang
2015-10-03  7:51 ` [tip:perf/core] perf record: Change 'record.samples' " tip-bot for Yang Shi

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.