Re: [PATCH 1/3] perf header: Add die information in CPU topology

From: Jiri Olsa
Date: Tue May 28 2019 - 05:03:16 EST


On Thu, May 23, 2019 at 01:41:19PM -0700, kan.liang@xxxxxxxxxxxxxxx wrote:

SNIP

>
> Add cpu_map__get_die_id() in cpumap.c to fetch die id information.
>
> Signed-off-by: Kan Liang <kan.liang@xxxxxxxxxxxxxxx>
> ---
> tools/perf/Documentation/perf.data-file-format.txt | 9 +-
> tools/perf/util/cpumap.c | 7 ++
> tools/perf/util/cpumap.h | 1 +
> tools/perf/util/cputopo.c | 83 ++++++++++++++--
> tools/perf/util/cputopo.h | 7 +-
> tools/perf/util/env.c | 1 +
> tools/perf/util/env.h | 3 +
> tools/perf/util/header.c | 104 +++++++++++++++++++--
> 8 files changed, 193 insertions(+), 22 deletions(-)
>
> diff --git a/tools/perf/Documentation/perf.data-file-format.txt b/tools/perf/Documentation/perf.data-file-format.txt
> index 6967e9b..c731416 100644
> --- a/tools/perf/Documentation/perf.data-file-format.txt
> +++ b/tools/perf/Documentation/perf.data-file-format.txt
> @@ -153,7 +153,7 @@ struct {
>
> String lists defining the core and CPU threads topology.
> The string lists are followed by a variable length array
> -which contains core_id and socket_id of each cpu.
> +which contains core_id, die_id (for x86) and socket_id of each cpu.
> The number of entries can be determined by the size of the
> section minus the sizes of both string lists.
>
> @@ -162,14 +162,19 @@ struct {
> struct perf_header_string_list threads; /* Variable length */
> struct {
> uint32_t core_id;
> + uint32_t die_id;
> uint32_t socket_id;
> } cpus[nr]; /* Variable length records */
> };
>
> Example:
> - sibling cores : 0-3
> + sibling cores : 0-8
> + sibling dies : 0-3
> + sibling dies : 4-7
> sibling threads : 0-1
> sibling threads : 2-3
> + sibling threads : 4-5
> + sibling threads : 6-7
>
> HEADER_NUMA_TOPOLOGY = 14,
>
> diff --git a/tools/perf/util/cpumap.c b/tools/perf/util/cpumap.c
> index 0b59922..7db1365 100644
> --- a/tools/perf/util/cpumap.c
> +++ b/tools/perf/util/cpumap.c
> @@ -373,6 +373,13 @@ int cpu_map__build_map(struct cpu_map *cpus, struct cpu_map **res,
> return 0;
> }
>
> +int cpu_map__get_die_id(int cpu)
> +{
> + int value, ret = cpu__get_topology_int(cpu, "die_id", &value);
> +
> + return ret ?: value;
> +}

please put 'adding cpu_map__get_die_id function' into separate patch

thanks,
jirka

> +
> int cpu_map__get_core_id(int cpu)
> {
> int value, ret = cpu__get_topology_int(cpu, "core_id", &value);
> diff --git a/tools/perf/util/cpumap.h b/tools/perf/util/cpumap.h
> index f00ce62..6762ff9 100644
> --- a/tools/perf/util/cpumap.h
> +++ b/tools/perf/util/cpumap.h
> @@ -25,6 +25,7 @@ size_t cpu_map__snprint_mask(struct cpu_map *map, char *buf, size_t size);
> size_t cpu_map__fprintf(struct cpu_map *map, FILE *fp);
> int cpu_map__get_socket_id(int cpu);
> int cpu_map__get_socket(struct cpu_map *map, int idx, void *data);
> +int cpu_map__get_die_id(int cpu);
> int cpu_map__get_core_id(int cpu);
> int cpu_map__get_core(struct cpu_map *map, int idx, void *data);
> int cpu_map__build_socket_map(struct cpu_map *cpus, struct cpu_map **sockp);
> diff --git a/tools/perf/util/cputopo.c b/tools/perf/util/cputopo.c

SNIP