2019-08-02 03:08:53

by Tan Xiaojun

[permalink] [raw]
Subject: [PATCH] perf record: Support aarch64 random socket_id assignment

Same as the commit 01766229533f ("perf record: Support s390 random
socket_id assignment"), aarch64 also have this problem.

Without this fix:
[root@localhost perf]# ./perf report --header -I -v
...
socket_id number is too big.You may need to upgrade the perf tool.

# ========
# captured on : Thu Aug 1 22:58:38 2019
# header version : 1
...
# Core ID and Socket ID information is not available
...

With this fix:
[root@localhost perf]# ./perf report --header -I -v
...
cpumask list: 0-31
cpumask list: 32-63
cpumask list: 64-95
cpumask list: 96-127

# ========
# captured on : Thu Aug 1 22:58:38 2019
# header version : 1
...
# CPU 0: Core ID 0, Socket ID 36
# CPU 1: Core ID 1, Socket ID 36
...
# CPU 126: Core ID 126, Socket ID 8442
# CPU 127: Core ID 127, Socket ID 8442
...

Signed-off-by: Tan Xiaojun <[email protected]>
---
tools/perf/util/header.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c
index 20111f8..d57fb74 100644
--- a/tools/perf/util/header.c
+++ b/tools/perf/util/header.c
@@ -2251,8 +2251,10 @@ static int process_cpu_topology(struct feat_fd *ff, void *data __maybe_unused)
/* On s390 the socket_id number is not related to the numbers of cpus.
* The socket_id number might be higher than the numbers of cpus.
* This depends on the configuration.
+ * AArch64 is the same.
*/
- if (ph->env.arch && !strncmp(ph->env.arch, "s390", 4))
+ if (ph->env.arch && (!strncmp(ph->env.arch, "s390", 4)
+ || !strncmp(ph->env.arch, "aarch64", 7)))
do_core_id_test = false;

for (i = 0; i < (u32)cpu_nr; i++) {
--
2.7.4


2019-08-03 06:27:28

by Jiri Olsa

[permalink] [raw]
Subject: Re: [PATCH] perf record: Support aarch64 random socket_id assignment

On Fri, Aug 02, 2019 at 11:48:57AM +0800, Tan Xiaojun wrote:
> Same as the commit 01766229533f ("perf record: Support s390 random
> socket_id assignment"), aarch64 also have this problem.
>
> Without this fix:
> [root@localhost perf]# ./perf report --header -I -v
> ...
> socket_id number is too big.You may need to upgrade the perf tool.
>
> # ========
> # captured on : Thu Aug 1 22:58:38 2019
> # header version : 1
> ...
> # Core ID and Socket ID information is not available
> ...
>
> With this fix:
> [root@localhost perf]# ./perf report --header -I -v
> ...
> cpumask list: 0-31
> cpumask list: 32-63
> cpumask list: 64-95
> cpumask list: 96-127
>
> # ========
> # captured on : Thu Aug 1 22:58:38 2019
> # header version : 1
> ...
> # CPU 0: Core ID 0, Socket ID 36
> # CPU 1: Core ID 1, Socket ID 36
> ...
> # CPU 126: Core ID 126, Socket ID 8442
> # CPU 127: Core ID 127, Socket ID 8442
> ...
>
> Signed-off-by: Tan Xiaojun <[email protected]>

Acked-by: Jiri Olsa <[email protected]>

thanks,
jirka

> ---
> tools/perf/util/header.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c
> index 20111f8..d57fb74 100644
> --- a/tools/perf/util/header.c
> +++ b/tools/perf/util/header.c
> @@ -2251,8 +2251,10 @@ static int process_cpu_topology(struct feat_fd *ff, void *data __maybe_unused)
> /* On s390 the socket_id number is not related to the numbers of cpus.
> * The socket_id number might be higher than the numbers of cpus.
> * This depends on the configuration.
> + * AArch64 is the same.
> */
> - if (ph->env.arch && !strncmp(ph->env.arch, "s390", 4))
> + if (ph->env.arch && (!strncmp(ph->env.arch, "s390", 4)
> + || !strncmp(ph->env.arch, "aarch64", 7)))
> do_core_id_test = false;
>
> for (i = 0; i < (u32)cpu_nr; i++) {
> --
> 2.7.4
>

2019-08-13 14:25:14

by Arnaldo Carvalho de Melo

[permalink] [raw]
Subject: Re: [PATCH] perf record: Support aarch64 random socket_id assignment

Em Fri, Aug 02, 2019 at 03:09:26PM +0200, Jiri Olsa escreveu:
> On Fri, Aug 02, 2019 at 11:48:57AM +0800, Tan Xiaojun wrote:
> > Same as the commit 01766229533f ("perf record: Support s390 random
> > socket_id assignment"), aarch64 also have this problem.
> >
> > Without this fix:
> > [root@localhost perf]# ./perf report --header -I -v
> > ...
> > socket_id number is too big.You may need to upgrade the perf tool.
> >
> > # ========
> > # captured on : Thu Aug 1 22:58:38 2019
> > # header version : 1
> > ...
> > # Core ID and Socket ID information is not available
> > ...
> >
> > With this fix:
> > [root@localhost perf]# ./perf report --header -I -v

Thanks, applied.

- Arnaldo

Subject: [tip:perf/core] perf record: Support aarch64 random socket_id assignment

Commit-ID: 0a4d8fb229dd78f9e0752817339e19e903b37a60
Gitweb: https://git.kernel.org/tip/0a4d8fb229dd78f9e0752817339e19e903b37a60
Author: Tan Xiaojun <[email protected]>
AuthorDate: Fri, 2 Aug 2019 11:48:57 +0800
Committer: Arnaldo Carvalho de Melo <[email protected]>
CommitDate: Wed, 14 Aug 2019 11:00:00 -0300

perf record: Support aarch64 random socket_id assignment

Same as in the commit 01766229533f ("perf record: Support s390 random
socket_id assignment"), aarch64 also have this problem.

Without this fix:

[root@localhost perf]# ./perf report --header -I -v
...
socket_id number is too big.You may need to upgrade the perf tool.

# ========
# captured on : Thu Aug 1 22:58:38 2019
# header version : 1
...
# Core ID and Socket ID information is not available
...

With this fix:
[root@localhost perf]# ./perf report --header -I -v
...
cpumask list: 0-31
cpumask list: 32-63
cpumask list: 64-95
cpumask list: 96-127

# ========
# captured on : Thu Aug 1 22:58:38 2019
# header version : 1
...
# CPU 0: Core ID 0, Socket ID 36
# CPU 1: Core ID 1, Socket ID 36
...
# CPU 126: Core ID 126, Socket ID 8442
# CPU 127: Core ID 127, Socket ID 8442
...

Signed-off-by: Tan Xiaojun <[email protected]>
Acked-by: Jiri Olsa <[email protected]>
Cc: Alexander Shishkin <[email protected]>
Cc: Alexey Budankov <[email protected]>
Cc: Kan Liang <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Song Liu <[email protected]>
Cc: Steven Rostedt (VMware) <[email protected]>
Cc: Tzvetomir Stoyanov (VMware) <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
---
tools/perf/util/header.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c
index b04c2b6b28b3..1f2965a07bef 100644
--- a/tools/perf/util/header.c
+++ b/tools/perf/util/header.c
@@ -2252,8 +2252,10 @@ static int process_cpu_topology(struct feat_fd *ff, void *data __maybe_unused)
/* On s390 the socket_id number is not related to the numbers of cpus.
* The socket_id number might be higher than the numbers of cpus.
* This depends on the configuration.
+ * AArch64 is the same.
*/
- if (ph->env.arch && !strncmp(ph->env.arch, "s390", 4))
+ if (ph->env.arch && (!strncmp(ph->env.arch, "s390", 4)
+ || !strncmp(ph->env.arch, "aarch64", 7)))
do_core_id_test = false;

for (i = 0; i < (u32)cpu_nr; i++) {