Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1210309 > unrolled thread
| Started by | Jiri Olsa <jolsa@redhat.com> |
|---|---|
| First post | 2015-08-20 11:10 +0200 |
| Last post | 2015-08-24 16:30 +0200 |
| Articles | 9 — 2 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
Re: [PATCH RFC 02/10] perf,tools: Support new sort type --socket Jiri Olsa <jolsa@redhat.com> - 2015-08-20 11:10 +0200
RE: [PATCH RFC 02/10] perf,tools: Support new sort type --socket "Liang, Kan" <kan.liang@intel.com> - 2015-08-21 22:30 +0200
Re: [PATCH RFC 02/10] perf,tools: Support new sort type --socket Jiri Olsa <jolsa@redhat.com> - 2015-08-24 00:10 +0200
Re: [PATCH RFC 02/10] perf,tools: Support new sort type --socket Jiri Olsa <jolsa@redhat.com> - 2015-08-24 16:30 +0200
RE: [PATCH RFC 02/10] perf,tools: Support new sort type --socket "Liang, Kan" <kan.liang@intel.com> - 2015-08-24 18:50 +0200
Re: [PATCH RFC 02/10] perf,tools: Support new sort type --socket Jiri Olsa <jolsa@redhat.com> - 2015-08-24 21:40 +0200
RE: [PATCH RFC 02/10] perf,tools: Support new sort type --socket "Liang, Kan" <kan.liang@intel.com> - 2015-08-27 20:30 +0200
Re: [PATCH RFC 02/10] perf,tools: Support new sort type --socket Jiri Olsa <jolsa@redhat.com> - 2015-08-27 20:30 +0200
RE: [PATCH RFC 02/10] perf,tools: Support new sort type --socket "Liang, Kan" <kan.liang@intel.com> - 2015-08-24 16:30 +0200
| From | Jiri Olsa <jolsa@redhat.com> |
|---|---|
| Date | 2015-08-20 11:10 +0200 |
| Subject | Re: [PATCH RFC 02/10] perf,tools: Support new sort type --socket |
| Message-ID | <pZu1c-l9-11@gated-at.bofh.it> |
On Tue, Aug 18, 2015 at 05:25:38AM -0400, kan.liang@intel.com wrote:
> From: Kan Liang <kan.liang@intel.com>
>
> This patch enable perf report to sort by socket
>
SNIP
> diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c
> index 7e38716..245e254 100644
> --- a/tools/perf/util/sort.c
> +++ b/tools/perf/util/sort.c
> @@ -421,6 +421,33 @@ struct sort_entry sort_cpu = {
> .se_width_idx = HISTC_CPU,
> };
>
> +/* --sort socket */
> +
> +static int64_t
> +sort__socket_cmp(struct hist_entry *left, struct hist_entry *right)
> +{
> + int r_socket, l_socket;
> +
> + r_socket = cpu__get_socket(right->cpu);
> + l_socket = cpu__get_socket(left->cpu);
> + return r_socket - l_socket;
we need global topology information in perf.data and use
the mapping from there, we can't use current server info
we currently store core_siblings_list and thread_siblings_list,
in topology FEATURE, which is probably not enough
I think we need new feature that stores topology info and
new interface that will provide all useful mappings:
idx -> cpu
cpu -> core
cpu -> socket
cpu -> node
in another patchset I used new CPUMAP event:
https://git.kernel.org/cgit/linux/kernel/git/jolsa/perf.git/commit/?h=perf/stat_script_3&id=37b7b8449aa23acdfe9dec5a7a371e91c5323da5
we might need both ways (new FEATURE and event) to support pipe reports
jirka
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [next] | [standalone]
| From | "Liang, Kan" <kan.liang@intel.com> |
|---|---|
| Date | 2015-08-21 22:30 +0200 |
| Message-ID | <q016P-5Vh-31@gated-at.bofh.it> |
| In reply to | #1210309 |
> On Tue, Aug 18, 2015 at 05:25:38AM -0400, kan.liang@intel.com wrote:
> > From: Kan Liang <kan.liang@intel.com>
> >
> > This patch enable perf report to sort by socket
> >
>
> SNIP
>
> > diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c index
> > 7e38716..245e254 100644
> > --- a/tools/perf/util/sort.c
> > +++ b/tools/perf/util/sort.c
> > @@ -421,6 +421,33 @@ struct sort_entry sort_cpu = {
> > .se_width_idx = HISTC_CPU,
> > };
> >
> > +/* --sort socket */
> > +
> > +static int64_t
> > +sort__socket_cmp(struct hist_entry *left, struct hist_entry *right) {
> > + int r_socket, l_socket;
> > +
> > + r_socket = cpu__get_socket(right->cpu);
> > + l_socket = cpu__get_socket(left->cpu);
> > + return r_socket - l_socket;
>
> we need global topology information in perf.data and use the mapping
> from there, we can't use current server info
>
> we currently store core_siblings_list and thread_siblings_list, in topology
> FEATURE, which is probably not enough
>
core_siblings_list includes the cpu list in the same socket.
thread_siblings_list includes the cpu list in the same core.
numa_nodes includes the cpu list for each node.
It looks we have enough data from topology FEATURE.
What do you think about the function as below?
It gets the socket id from env.
+int
+perf_env_get_socket(struct perf_session_env *env, int cpu)
+{
+ int socket_nr, cpu_nr, i, j;
+ struct cpu_map *socket_map = NULL;
+ char *str;
+
+ if (env == NULL)
+ return -1;
+
+ socket_nr = env->nr_sibling_cores;
+ str = env->sibling_cores;
+
+ for (i = 0; i < socket_nr; i++) {
+ socket_map = cpu_map__new(str);
+ str += strlen(str) + 1;
+ if (!socket_map)
+ continue;
+ cpu_nr = socket_map->nr;
+ for (j = 0; j < cpu_nr; j++) {
+ if (cpu == socket_map->map[j]) {
+ free(socket_map);
+ return i;
+ }
+ }
+ free(socket_map);
+ }
+
+ return -1;
+}
Thanks,
Kan
> I think we need new feature that stores topology info and new interface
> that will provide all useful mappings:
> idx -> cpu
> cpu -> core
> cpu -> socket
> cpu -> node
>
> in another patchset I used new CPUMAP event:
> https://git.kernel.org/cgit/linux/kernel/git/jolsa/perf.git/commit/?h=perf/
> stat_script_3&id=37b7b8449aa23acdfe9dec5a7a371e91c5323da5
>
> we might need both ways (new FEATURE and event) to support pipe
> reports
>
> jirka
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Jiri Olsa <jolsa@redhat.com> |
|---|---|
| Date | 2015-08-24 00:10 +0200 |
| Message-ID | <q0LCG-5k6-25@gated-at.bofh.it> |
| In reply to | #1211317 |
On Fri, Aug 21, 2015 at 08:25:24PM +0000, Liang, Kan wrote:
SNIP
> >
> > we need global topology information in perf.data and use the mapping
> > from there, we can't use current server info
> >
> > we currently store core_siblings_list and thread_siblings_list, in topology
> > FEATURE, which is probably not enough
> >
>
> core_siblings_list includes the cpu list in the same socket.
> thread_siblings_list includes the cpu list in the same core.
> numa_nodes includes the cpu list for each node.
>
> It looks we have enough data from topology FEATURE.
hum, haven't hecked deeply.. how will you get core id for cpu?
>
> What do you think about the function as below?
> It gets the socket id from env.
some sort of caching would be nice, I guess we could
store those cpumap objects within perf_session_env
jirka
>
> +int
> +perf_env_get_socket(struct perf_session_env *env, int cpu)
> +{
> + int socket_nr, cpu_nr, i, j;
> + struct cpu_map *socket_map = NULL;
> + char *str;
> +
> + if (env == NULL)
> + return -1;
> +
> + socket_nr = env->nr_sibling_cores;
> + str = env->sibling_cores;
> +
> + for (i = 0; i < socket_nr; i++) {
> + socket_map = cpu_map__new(str);
> + str += strlen(str) + 1;
> + if (!socket_map)
> + continue;
> + cpu_nr = socket_map->nr;
> + for (j = 0; j < cpu_nr; j++) {
> + if (cpu == socket_map->map[j]) {
> + free(socket_map);
> + return i;
> + }
> + }
> + free(socket_map);
> + }
> +
> + return -1;
> +}
>
> Thanks,
> Kan
>
> > I think we need new feature that stores topology info and new interface
> > that will provide all useful mappings:
> > idx -> cpu
> > cpu -> core
> > cpu -> socket
> > cpu -> node
> >
> > in another patchset I used new CPUMAP event:
> > https://git.kernel.org/cgit/linux/kernel/git/jolsa/perf.git/commit/?h=perf/
> > stat_script_3&id=37b7b8449aa23acdfe9dec5a7a371e91c5323da5
> >
> > we might need both ways (new FEATURE and event) to support pipe
> > reports
> >
> > jirka
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Jiri Olsa <jolsa@redhat.com> |
|---|---|
| Date | 2015-08-24 16:30 +0200 |
| Message-ID | <q10V4-1Sr-15@gated-at.bofh.it> |
| In reply to | #1211674 |
On Mon, Aug 24, 2015 at 02:22:08PM +0000, Liang, Kan wrote: > > > > On Fri, Aug 21, 2015 at 08:25:24PM +0000, Liang, Kan wrote: > > > > SNIP > > > > > > > > > > we need global topology information in perf.data and use the mapping > > > > from there, we can't use current server info > > > > > > > > we currently store core_siblings_list and thread_siblings_list, in > > > > topology FEATURE, which is probably not enough > > > > > > > > > > core_siblings_list includes the cpu list in the same socket. > > > thread_siblings_list includes the cpu list in the same core. > > > numa_nodes includes the cpu list for each node. > > > > > > It looks we have enough data from topology FEATURE. > > > > hum, haven't hecked deeply.. how will you get core id for cpu? > > > > from thread_siblings_list. > I just noticed that svg_build_topology_map did the similar thing to > get topology map for timechart from perf header. could you please provide both functions then cpu -> core, cpu -> socket thanks, jirka -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | "Liang, Kan" <kan.liang@intel.com> |
|---|---|
| Date | 2015-08-24 18:50 +0200 |
| Message-ID | <q136y-4Vw-7@gated-at.bofh.it> |
| In reply to | #1212238 |
> On Mon, Aug 24, 2015 at 02:22:08PM +0000, Liang, Kan wrote:
> > >
> > > On Fri, Aug 21, 2015 at 08:25:24PM +0000, Liang, Kan wrote:
> > >
> > > SNIP
> > >
> > > > >
> > > > > we need global topology information in perf.data and use the
> > > > > mapping from there, we can't use current server info
> > > > >
> > > > > we currently store core_siblings_list and thread_siblings_list,
> > > > > in topology FEATURE, which is probably not enough
> > > > >
> > > >
> > > > core_siblings_list includes the cpu list in the same socket.
> > > > thread_siblings_list includes the cpu list in the same core.
> > > > numa_nodes includes the cpu list for each node.
> > > >
> > > > It looks we have enough data from topology FEATURE.
> > >
> > > hum, haven't hecked deeply.. how will you get core id for cpu?
> > >
> >
> > from thread_siblings_list.
> > I just noticed that svg_build_topology_map did the similar thing to
> > get topology map for timechart from perf header.
>
> could you please provide both functions then cpu -> core, cpu -> socket
>
Do you mean something like this?
Store cpu->socket and cpu->core in perf_session_env.
diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c
index 179b2bd..a01c603 100644
--- a/tools/perf/util/header.c
+++ b/tools/perf/util/header.c
@@ -1590,10 +1596,17 @@ static int process_cpu_topology(struct perf_file_section *section __maybe_unused
u32 nr, i;
char *str;
struct strbuf sb;
+ int cpu_nr = ph->env.nr_cpus_online;
+ struct cpu_map *map;
+ int j;
+
+ ph->env.cpu = calloc(cpu_nr, sizeof(*ph->env.cpu));
+ if (!ph->env.cpu)
+ return -1;
ret = readn(fd, &nr, sizeof(nr));
if (ret != sizeof(nr))
- return -1;
+ goto free_cpu;
if (ph->needs_swap)
nr = bswap_32(nr);
@@ -1608,6 +1621,14 @@ static int process_cpu_topology(struct perf_file_section *section __maybe_unused
/* include a NULL character at the end */
strbuf_add(&sb, str, strlen(str) + 1);
+
+ map = cpu_map__new(str);
+ if (!map)
+ goto error;
+ for (j = 0; j < map->nr; j++) {
+ ph->env.cpu[map->map[j]].socket_id = i;
+ }
+ cpu_map__put(map);
free(str);
}
ph->env.sibling_cores = strbuf_detach(&sb, NULL);
@@ -1628,6 +1649,14 @@ static int process_cpu_topology(struct perf_file_section *section __maybe_unused
/* include a NULL character at the end */
strbuf_add(&sb, str, strlen(str) + 1);
+
+ map = cpu_map__new(str);
+ if (!map)
+ goto error;
+ for (j = 0; j < map->nr; j++) {
+ ph->env.cpu[map->map[j]].core_id = i;
+ }
+ cpu_map__put(map);
free(str);
}
ph->env.sibling_threads = strbuf_detach(&sb, NULL);
@@ -1635,6 +1664,8 @@ static int process_cpu_topology(struct perf_file_section *section __maybe_unused
error:
strbuf_release(&sb);
+free_cpu:
+ free(ph->env.cpu);
return -1;
}
diff --git a/tools/perf/util/header.h b/tools/perf/util/header.h
index 9b53b65..8b8c4fc 100644
--- a/tools/perf/util/header.h
+++ b/tools/perf/util/header.h
@@ -66,6 +66,11 @@ struct perf_header;
int perf_file_header__read(struct perf_file_header *header,
struct perf_header *ph, int fd);
+struct cpu_topology_map {
+ int socket_id;
+ int core_id;
+};
+
struct perf_session_env {
char *hostname;
char *os_release;
@@ -89,6 +94,7 @@ struct perf_session_env {
char *sibling_threads;
char *numa_nodes;
char *pmu_mappings;
+ struct cpu_topology_map *cpu;
};
struct perf_header {
diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c
index 18722e7..51b4d5a 100644
--- a/tools/perf/util/session.c
+++ b/tools/perf/util/session.c
@@ -185,6 +185,7 @@ static void perf_session_env__exit(struct perf_session_env *env)
zfree(&env->sibling_threads);
zfree(&env->numa_nodes);
zfree(&env->pmu_mappings);
+ zfree(&env->cpu);
}
void perf_session__delete(struct perf_session *session)
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Jiri Olsa <jolsa@redhat.com> |
|---|---|
| Date | 2015-08-24 21:40 +0200 |
| Message-ID | <q15L4-tl-29@gated-at.bofh.it> |
| In reply to | #1212342 |
On Mon, Aug 24, 2015 at 04:47:12PM +0000, Liang, Kan wrote:
>
>
> > On Mon, Aug 24, 2015 at 02:22:08PM +0000, Liang, Kan wrote:
> > > >
> > > > On Fri, Aug 21, 2015 at 08:25:24PM +0000, Liang, Kan wrote:
> > > >
> > > > SNIP
> > > >
> > > > > >
> > > > > > we need global topology information in perf.data and use the
> > > > > > mapping from there, we can't use current server info
> > > > > >
> > > > > > we currently store core_siblings_list and thread_siblings_list,
> > > > > > in topology FEATURE, which is probably not enough
> > > > > >
> > > > >
> > > > > core_siblings_list includes the cpu list in the same socket.
> > > > > thread_siblings_list includes the cpu list in the same core.
> > > > > numa_nodes includes the cpu list for each node.
> > > > >
> > > > > It looks we have enough data from topology FEATURE.
> > > >
> > > > hum, haven't hecked deeply.. how will you get core id for cpu?
> > > >
> > >
> > > from thread_siblings_list.
> > > I just noticed that svg_build_topology_map did the similar thing to
> > > get topology map for timechart from perf header.
> >
> > could you please provide both functions then cpu -> core, cpu -> socket
> >
>
> Do you mean something like this?
> Store cpu->socket and cpu->core in perf_session_env.
yep, seems ok
thanks,
jirka
>
> diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c
> index 179b2bd..a01c603 100644
> --- a/tools/perf/util/header.c
> +++ b/tools/perf/util/header.c
> @@ -1590,10 +1596,17 @@ static int process_cpu_topology(struct perf_file_section *section __maybe_unused
> u32 nr, i;
> char *str;
> struct strbuf sb;
> + int cpu_nr = ph->env.nr_cpus_online;
> + struct cpu_map *map;
> + int j;
> +
> + ph->env.cpu = calloc(cpu_nr, sizeof(*ph->env.cpu));
> + if (!ph->env.cpu)
> + return -1;
>
> ret = readn(fd, &nr, sizeof(nr));
> if (ret != sizeof(nr))
> - return -1;
> + goto free_cpu;
>
> if (ph->needs_swap)
> nr = bswap_32(nr);
> @@ -1608,6 +1621,14 @@ static int process_cpu_topology(struct perf_file_section *section __maybe_unused
>
> /* include a NULL character at the end */
> strbuf_add(&sb, str, strlen(str) + 1);
> +
> + map = cpu_map__new(str);
> + if (!map)
> + goto error;
> + for (j = 0; j < map->nr; j++) {
> + ph->env.cpu[map->map[j]].socket_id = i;
> + }
> + cpu_map__put(map);
> free(str);
> }
> ph->env.sibling_cores = strbuf_detach(&sb, NULL);
> @@ -1628,6 +1649,14 @@ static int process_cpu_topology(struct perf_file_section *section __maybe_unused
>
> /* include a NULL character at the end */
> strbuf_add(&sb, str, strlen(str) + 1);
> +
> + map = cpu_map__new(str);
> + if (!map)
> + goto error;
> + for (j = 0; j < map->nr; j++) {
> + ph->env.cpu[map->map[j]].core_id = i;
> + }
> + cpu_map__put(map);
> free(str);
> }
> ph->env.sibling_threads = strbuf_detach(&sb, NULL);
> @@ -1635,6 +1664,8 @@ static int process_cpu_topology(struct perf_file_section *section __maybe_unused
>
> error:
> strbuf_release(&sb);
> +free_cpu:
> + free(ph->env.cpu);
> return -1;
> }
>
> diff --git a/tools/perf/util/header.h b/tools/perf/util/header.h
> index 9b53b65..8b8c4fc 100644
> --- a/tools/perf/util/header.h
> +++ b/tools/perf/util/header.h
> @@ -66,6 +66,11 @@ struct perf_header;
> int perf_file_header__read(struct perf_file_header *header,
> struct perf_header *ph, int fd);
>
> +struct cpu_topology_map {
> + int socket_id;
> + int core_id;
> +};
> +
> struct perf_session_env {
> char *hostname;
> char *os_release;
> @@ -89,6 +94,7 @@ struct perf_session_env {
> char *sibling_threads;
> char *numa_nodes;
> char *pmu_mappings;
> + struct cpu_topology_map *cpu;
> };
>
> struct perf_header {
> diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c
> index 18722e7..51b4d5a 100644
> --- a/tools/perf/util/session.c
> +++ b/tools/perf/util/session.c
> @@ -185,6 +185,7 @@ static void perf_session_env__exit(struct perf_session_env *env)
> zfree(&env->sibling_threads);
> zfree(&env->numa_nodes);
> zfree(&env->pmu_mappings);
> + zfree(&env->cpu);
> }
>
> void perf_session__delete(struct perf_session *session)
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | "Liang, Kan" <kan.liang@intel.com> |
|---|---|
| Date | 2015-08-27 20:30 +0200 |
| Message-ID | <q2a5X-41H-5@gated-at.bofh.it> |
| In reply to | #1212459 |
> > On Mon, Aug 24, 2015 at 09:30:21PM +0200, Jiri Olsa wrote: > > On Mon, Aug 24, 2015 at 04:47:12PM +0000, Liang, Kan wrote: > > > > > > > > > > On Mon, Aug 24, 2015 at 02:22:08PM +0000, Liang, Kan wrote: > > > > > > > > > > > > On Fri, Aug 21, 2015 at 08:25:24PM +0000, Liang, Kan wrote: > > > > > > > > > > > > SNIP > > > > > > > > > > > > > > > > > > > > > > we need global topology information in perf.data and use > > > > > > > > the mapping from there, we can't use current server info > > > > > > > > > > > > > > > > we currently store core_siblings_list and > > > > > > > > thread_siblings_list, in topology FEATURE, which is > > > > > > > > probably not enough > > > > > > > > > > > > > > > > > > > > > > core_siblings_list includes the cpu list in the same socket. > > > > > > > thread_siblings_list includes the cpu list in the same core. > > > > > > > numa_nodes includes the cpu list for each node. > > > > > > > > > > > > > > It looks we have enough data from topology FEATURE. > > > > > > > > > > > > hum, haven't hecked deeply.. how will you get core id for cpu? > > > > > > > > > > > > > > > > from thread_siblings_list. > > > > > I just noticed that svg_build_topology_map did the similar > > > > > thing to get topology map for timechart from perf header. > > > > > > > > could you please provide both functions then cpu -> core, cpu -> > > > > socket > > > > > > > > > > Do you mean something like this? > > > Store cpu->socket and cpu->core in perf_session_env. > > > > yep, seems ok > > any chance you could send out this one? I'd need to use it in my other stuff > Ok I will send out this patch as a separate patch first. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Jiri Olsa <jolsa@redhat.com> |
|---|---|
| Date | 2015-08-27 20:30 +0200 |
| Message-ID | <q2a5X-41H-7@gated-at.bofh.it> |
| In reply to | #1212459 |
On Mon, Aug 24, 2015 at 09:30:21PM +0200, Jiri Olsa wrote: > On Mon, Aug 24, 2015 at 04:47:12PM +0000, Liang, Kan wrote: > > > > > > > On Mon, Aug 24, 2015 at 02:22:08PM +0000, Liang, Kan wrote: > > > > > > > > > > On Fri, Aug 21, 2015 at 08:25:24PM +0000, Liang, Kan wrote: > > > > > > > > > > SNIP > > > > > > > > > > > > > > > > > > > we need global topology information in perf.data and use the > > > > > > > mapping from there, we can't use current server info > > > > > > > > > > > > > > we currently store core_siblings_list and thread_siblings_list, > > > > > > > in topology FEATURE, which is probably not enough > > > > > > > > > > > > > > > > > > > core_siblings_list includes the cpu list in the same socket. > > > > > > thread_siblings_list includes the cpu list in the same core. > > > > > > numa_nodes includes the cpu list for each node. > > > > > > > > > > > > It looks we have enough data from topology FEATURE. > > > > > > > > > > hum, haven't hecked deeply.. how will you get core id for cpu? > > > > > > > > > > > > > from thread_siblings_list. > > > > I just noticed that svg_build_topology_map did the similar thing to > > > > get topology map for timechart from perf header. > > > > > > could you please provide both functions then cpu -> core, cpu -> socket > > > > > > > Do you mean something like this? > > Store cpu->socket and cpu->core in perf_session_env. > > yep, seems ok any chance you could send out this one? I'd need to use it in my other stuff thanks, jirka -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | "Liang, Kan" <kan.liang@intel.com> |
|---|---|
| Date | 2015-08-24 16:30 +0200 |
| Message-ID | <q10V4-1Sr-17@gated-at.bofh.it> |
| In reply to | #1211674 |
> > On Fri, Aug 21, 2015 at 08:25:24PM +0000, Liang, Kan wrote: > > SNIP > > > > > > > we need global topology information in perf.data and use the mapping > > > from there, we can't use current server info > > > > > > we currently store core_siblings_list and thread_siblings_list, in > > > topology FEATURE, which is probably not enough > > > > > > > core_siblings_list includes the cpu list in the same socket. > > thread_siblings_list includes the cpu list in the same core. > > numa_nodes includes the cpu list for each node. > > > > It looks we have enough data from topology FEATURE. > > hum, haven't hecked deeply.. how will you get core id for cpu? > from thread_siblings_list. I just noticed that svg_build_topology_map did the similar thing to get topology map for timechart from perf header. > > > > What do you think about the function as below? > > It gets the socket id from env. > > some sort of caching would be nice, I guess we could store those cpumap > objects within perf_session_env Yes it will be stored in perf_session_env. Thanks, Kan -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web