linux/tools/perf/util
Kan Liang 2bb00d2f95 perf tools: Store the cpu socket and core ids in the perf.data header
This patch stores the cpu socket_id and core_id in a perf.data header,
and reads them into the perf_env struct when processing perf.data files.

The changes modifies the CPU_TOPOLOGY section, making sure it is
backward/forward compatible.

The patch checks the section size before reading the core and socket ids.

It never reads data crossing the section boundary.  An old perf binary
without this patch can also correctly read the perf.data from a new perf
with this patch.

Because the new info is added at the end of the cpu_topology section, an
old perf tool ignores the extra data.

Examples:

1. New perf with this patch read perf.data from an old perf without the
   patch:

  $ perf_new report -i perf_old.data --header-only -I
  ......
  # sibling threads : 33
  # sibling threads : 34
  # sibling threads : 35
  # Core ID and Socket ID information is not available
  # node0 meminfo  : total = 32823872 kB, free = 29315548 kB
  # node0 cpu list : 0-17,36-53
  ......

2. Old perf without the patch reads perf.data from a new perf with the
   patch:

  $ perf_old report -i perf_new.data --header-only -I
  ......
  # sibling threads : 33
  # sibling threads : 34
  # sibling threads : 35
  # node0 meminfo  : total = 32823872 kB, free = 29190932 kB
  # node0 cpu list : 0-17,36-53
  ......

3. New perf read new perf.data:

  $ perf_new report -i perf_new.data --header-only -I
  ......
  # sibling threads : 33
  # sibling threads : 34
  # sibling threads : 35
  # CPU 0: Core ID 0, Socket ID 0
  # CPU 1: Core ID 1, Socket ID 0
  ......
  # CPU 61: Core ID 10, Socket ID 1
  # CPU 62: Core ID 11, Socket ID 1
  # CPU 63: Core ID 16, Socket ID 1
  # node0 meminfo  : total = 32823872 kB, free = 29190932 kB
  # node0 cpu list : 0-17,36-53

Signed-off-by: Kan Liang <kan.liang@intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Link: http://lkml.kernel.org/r/1441115893-22006-2-git-send-email-kan.liang@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2015-09-02 16:30:47 -03:00
..
include tools: Copy rbtree_augmented.h from the kernel 2015-07-05 22:59:05 -03:00
intel-pt-decoder perf build: Fix Intel PT instruction decoder dependency problem 2015-09-01 13:03:46 -03:00
scripting-engines tools lib traceevent: Support function __get_dynamic_array_len 2015-09-02 16:30:46 -03:00
abspath.c
alias.c
annotate.c perf tools: /proc/kcore requires CAP_SYS_RAWIO message too noisy 2015-08-21 10:29:23 -03:00
annotate.h perf annotate: Compute IPC and basic block cycles 2015-08-06 16:36:12 -03:00
auxtrace.c perf tools: Add Intel BTS support 2015-08-21 11:34:10 -03:00
auxtrace.h perf tools: Add Intel BTS support 2015-08-21 11:34:10 -03:00
bitmap.c
Build perf record: Add ability to name registers to record 2015-08-31 18:01:33 -03:00
build-id.c perf buildid: Introduce sysfs/filename__sprintf_build_id 2015-08-28 14:53:50 -03:00
build-id.h perf buildid: Introduce sysfs/filename__sprintf_build_id 2015-08-28 14:53:50 -03:00
cache.h perf report: Fix some option handling on --stdio 2015-05-14 10:05:22 -03:00
callchain.c perf callchain: Move option parsing code to util.c 2015-08-08 14:16:49 -03:00
callchain.h perf callchain: Move option parsing code to util.c 2015-08-08 14:16:49 -03:00
cgroup.c perf cgroup: Use atomic.h for refcounting 2015-05-15 16:12:20 -03:00
cgroup.h perf cgroup: Use atomic.h for refcounting 2015-05-15 16:12:20 -03:00
cloexec.c perf bench numa: Fix to show proper convergence stats 2015-06-25 12:28:35 -03:00
cloexec.h perf tools: Fix build errors with mipsel-linux-uclibc compiler 2015-08-05 16:56:16 -03:00
color.c perf tools: Do not include escape sequences in color_vfprintf return 2015-08-05 16:46:06 -03:00
color.h perf tools: Remove trail argument to color vsprintf 2015-08-05 16:44:02 -03:00
comm.c perf comm: Use atomic.h for refcounting 2015-05-27 12:21:43 -03:00
comm.h perf tools: Add facility to export data in database-friendly way 2014-10-29 10:32:49 -02:00
config.c perf tools: Introduce llvm config options 2015-08-07 10:16:59 -03:00
counts.c perf stat: Move perf_counts struct and functions into separate object 2015-08-08 14:16:49 -03:00
counts.h perf stat: Move perf_counts struct and functions into separate object 2015-08-08 14:16:49 -03:00
cpumap.c perf cpumap: Factor out functions to get core_id and socket_id 2015-09-02 16:30:47 -03:00
cpumap.h perf cpumap: Factor out functions to get core_id and socket_id 2015-09-02 16:30:47 -03:00
ctype.c
data-convert-bt.c perf data: Fix signedness of value 2015-04-29 10:37:49 -03:00
data-convert-bt.h perf data: Support using -f to override perf.data file ownership for 'convert' 2015-04-02 13:18:52 -03:00
data.c perf util: Replace strerror with strerror_r for thread-safety 2014-08-15 10:58:35 -03:00
data.h
db-export.c perf db-export: Fix thread ref-counting 2015-05-29 12:43:39 -03:00
db-export.h perf db-export: No need to have ->thread twice in struct export_sample 2015-04-02 13:18:43 -03:00
debug.c perf tools: Introduce veprintf 2015-08-06 15:30:38 -03:00
debug.h perf tools: Introduce veprintf 2015-08-06 15:30:38 -03:00
dso.c perf tools: Reference count struct dso 2015-06-08 10:31:40 -03:00
dso.h perf annotate: Reset the dso find_symbol cache when removing symbols 2015-08-24 13:33:14 -03:00
dwarf-aux.c perf probe: Fix to add missed brace around if block 2015-08-13 14:51:26 -03:00
dwarf-aux.h perf probe: Ignore tail calls to probed functions 2015-05-14 10:05:09 -03:00
environment.c perf report: Fix some option handling on --stdio 2015-05-14 10:05:22 -03:00
event.c perf tools: Add new PERF_RECORD_SWITCH event 2015-07-23 22:51:13 -03:00
event.h perf tools: Add support for cycles, weight branch_info field 2015-08-06 16:29:45 -03:00
evlist.c perf evlist: Open event on evsel cpus and threads 2015-08-31 17:28:01 -03:00
evlist.h perf evlist: Add backpointer for perf_env to evlist 2015-08-28 14:54:14 -03:00
evsel.c perf record: Add ability to name registers to record 2015-08-31 18:01:33 -03:00
evsel.h perf evsel: Add a backpointer to the evlist a evsel is in 2015-08-28 14:53:49 -03:00
exec_cmd.c
exec_cmd.h
find-vdso-map.c perf tools: Build programs to copy 32-bit compatibility 2014-10-29 10:32:48 -02:00
generate-cmdlist.sh
header.c perf tools: Store the cpu socket and core ids in the perf.data header 2015-09-02 16:30:47 -03:00
header.h perf tools: Store the cpu socket and core ids in the perf.data header 2015-09-02 16:30:47 -03:00
help.c
help.h
hist.c perf report: Show call graph from reference events 2015-08-12 13:20:28 -03:00
hist.h perf tools: Rename perf_session_env to perf_env 2015-08-28 14:53:55 -03:00
intel-bts.c perf tools: Add Intel BTS support 2015-08-21 11:34:10 -03:00
intel-bts.h perf tools: Add Intel BTS support 2015-08-21 11:34:10 -03:00
intel-pt.c perf tools: Pass Intel PT information for decoding MTC and CYC 2015-08-24 17:46:43 -03:00
intel-pt.h perf tools: Pass Intel PT information for decoding MTC and CYC 2015-08-24 17:46:43 -03:00
intlist.c
intlist.h
kvm-stat.h perf kvm: Support using -f to override perf.data.guest file ownership 2015-04-02 13:18:47 -03:00
levenshtein.c
levenshtein.h
llvm-utils.c perf tests: Add LLVM test for eBPF on-the-fly compiling 2015-08-07 10:57:24 -03:00
llvm-utils.h perf tests: Add LLVM test for eBPF on-the-fly compiling 2015-08-07 10:57:24 -03:00
lzma.c perf tools: Add lzma decompression support for kernel module 2015-03-21 14:53:40 -03:00
machine.c Merge branch 'perf/urgent' into perf/core, to pick up fixes before adding more changes 2015-08-20 11:48:56 +02:00
machine.h perf tools: Add new PERF_RECORD_SWITCH event 2015-07-23 22:51:13 -03:00
map.c perf tools: Initialize reference counts in map__clone() 2015-08-21 12:39:30 -03:00
map.h perf symbols: Introduce map__is_(kernel,kmodule)() 2015-07-23 11:28:36 -03:00
ordered-events.c perf ordered_events: Clear the progress bar at the end of a flush 2015-08-24 17:16:22 -03:00
ordered-events.h perf ordered_samples: Remove references to perf_{evlist,tool} and machines 2015-03-31 17:52:32 -03:00
pager.c perf report: Fix some option handling on --stdio 2015-05-14 10:05:22 -03:00
parse-branch-options.c perf record: Add support for sampling indirect jumps 2015-06-07 16:08:31 +02:00
parse-branch-options.h perf tools: Move branch option parsing to own file 2015-05-27 21:02:17 -03:00
parse-events.c perf callchain: Per-event type selection support 2015-08-12 13:20:27 -03:00
parse-events.h perf callchain: Per-event type selection support 2015-08-12 13:20:27 -03:00
parse-events.l perf callchain: Per-event type selection support 2015-08-12 13:20:27 -03:00
parse-events.y perf tools: Fix parse_events_error dereferences 2015-05-27 12:21:43 -03:00
parse-options.c perf report: Don't allow empty argument for '-t'. 2015-03-19 13:53:28 -03:00
parse-options.h perf record: Add AUX area tracing Snapshot Mode support 2015-05-05 18:13:01 -03:00
parse-regs-options.c perf record: Add ability to name registers to record 2015-08-31 18:01:33 -03:00
parse-regs-options.h perf record: Add ability to name registers to record 2015-08-31 18:01:33 -03:00
path.c
perf_regs.c perf tools: Fix link time error with sample_reg_masks on non x86 2015-09-01 13:04:41 -03:00
perf_regs.h perf tools: Fix link time error with sample_reg_masks on non x86 2015-09-01 13:04:41 -03:00
PERF-VERSION-GEN
pmu.c perf tools: Add Intel BTS support 2015-08-21 11:34:10 -03:00
pmu.h perf tools: Add perf_pmu__format_bits() 2015-08-06 16:49:01 -03:00
pmu.l
pmu.y
probe-event.c perf probe: Support probing at absolute address 2015-08-26 10:41:12 -03:00
probe-event.h perf probe: Support probing at absolute address 2015-08-26 10:41:12 -03:00
probe-file.c perf probe: Move ftrace probe-event operations to probe-file.c 2015-07-20 17:49:49 -03:00
probe-file.h perf probe: Move ftrace probe-event operations to probe-file.c 2015-07-20 17:49:49 -03:00
probe-finder.c perf probe: Support probing at absolute address 2015-08-26 10:41:12 -03:00
probe-finder.h perf probe: Introduce probe_conf global configs 2015-05-08 16:26:26 -03:00
pstack.c perf tools: Introduce pstack_peek() 2015-05-05 18:13:22 -03:00
pstack.h perf tools: Introduce pstack_peek() 2015-05-05 18:13:22 -03:00
python-ext-sources perf stat: Move perf_counts struct and functions into separate object 2015-08-08 14:16:49 -03:00
python.c perf python: Add missing PERF_RECORD_{MMAP2,AUX,etc} 2015-07-29 10:51:45 -03:00
quote.c
quote.h
rblist.c
rblist.h
record.c perf tools: Add a helper function to probe whether cpu-wide tracing is possible 2015-08-17 11:08:37 -03:00
run-command.c perf util: Replace strerror with strerror_r for thread-safety 2014-08-15 10:58:35 -03:00
run-command.h
session.c perf tools: Store the cpu socket and core ids in the perf.data header 2015-09-02 16:30:47 -03:00
session.h perf tools: Add AUX area tracing index 2015-05-04 19:48:47 -03:00
setup.py tools lib api: Rename libapikfs.a to libapi.a 2015-02-12 17:55:18 -03:00
sigchain.c
sigchain.h
sort.c perf tools: Always use non inlined file name for 'srcfile' sort key 2015-09-02 16:30:46 -03:00
sort.h perf report: Add support for srcfile sort key 2015-08-10 17:20:25 -03:00
srcline.c perf tools: Always use non inlined file name for 'srcfile' sort key 2015-09-02 16:30:46 -03:00
stat-shadow.c perf stat: Fix transaction lenght metrics 2015-07-28 12:05:04 -03:00
stat.c perf stat: Move perf_counts struct and functions into separate object 2015-08-08 14:16:49 -03:00
stat.h perf stat: Move perf_counts struct and functions into separate object 2015-08-08 14:16:49 -03:00
strbuf.c
strbuf.h
strfilter.c perf tools: Add strfilter__string to recover rules string 2015-05-04 12:43:54 -03:00
strfilter.h perf tools: Add strfilter__string to recover rules string 2015-05-04 12:43:54 -03:00
string.c perf tools: Asprintf like functions to format integer filter expression 2015-07-06 10:21:46 -03:00
strlist.c perf strlist: Make parse_list() private 2015-07-20 14:51:07 -03:00
strlist.h perf strlist: Make parse_list() private 2015-07-20 14:51:07 -03:00
svghelper.c perf tools: Add reference counting for cpu_map object 2015-06-25 15:15:50 -03:00
svghelper.h perf timechart: Implement IO mode 2014-07-10 00:22:54 +02:00
symbol-elf.c perf symbols: Fix annotation of vdso 2015-08-17 11:07:38 -03:00
symbol-minimal.c perf symbols: Save DSO loading errno to better report errors 2015-03-24 12:08:43 -03:00
symbol.c perf tools: Rename perf_session_env to perf_env 2015-08-28 14:53:55 -03:00
symbol.h perf tools: Rename perf_session_env to perf_env 2015-08-28 14:53:55 -03:00
target.c perf target: Simplify handling of strerror_r return 2015-03-24 12:08:30 -03:00
target.h
thread_map.c perf/core improvements and fixes: 2015-07-21 07:58:06 +02:00
thread_map.h perf thrad_map: Add comm string into array 2015-06-26 11:07:01 -03:00
thread-stack.c perf tools: Ensure thread-stack is flushed 2015-06-19 16:03:33 -03:00
thread-stack.h perf tools: Ensure thread-stack is flushed 2015-06-19 16:03:33 -03:00
thread.c perf tools: Avoid deadlock when map_groups are broken 2015-08-19 14:15:09 -03:00
thread.h perf tools: Elliminate alignment holes 2015-05-18 10:17:33 -03:00
tool.h perf tools: Add new PERF_RECORD_SWITCH event 2015-07-23 22:51:13 -03:00
top.c
top.h tools: Consolidate types.h 2014-05-01 21:22:39 +02:00
trace-event-info.c perf tools: Stop copying kallsyms into the perf.data file header 2015-07-23 22:51:12 -03:00
trace-event-parse.c perf tools: Stop reading the kallsyms data from perf.data 2015-07-23 22:51:11 -03:00
trace-event-read.c perf tools: Stop reading the kallsyms data from perf.data 2015-07-23 22:51:11 -03:00
trace-event-scripting.c perf scripting: No need to pass thread twice to the scripting callbacks 2015-04-02 13:18:41 -03:00
trace-event.c perf python: Remove dependency on 'machine' methods 2015-07-29 10:51:44 -03:00
trace-event.h perf python: Remove dependency on 'machine' methods 2015-07-29 10:51:44 -03:00
tsc.c perf tools: Move rdtsc() function 2014-07-23 11:48:11 -03:00
tsc.h perf tools: Move rdtsc() function 2014-07-23 11:48:11 -03:00
unwind-libdw.c perf callchains: Use thread->mg->machine 2014-10-29 10:32:46 -02:00
unwind-libdw.h
unwind-libunwind.c perf unwind: Fix a compile error 2015-06-16 10:40:03 -03:00
unwind.h perf callchains: Use thread->mg->machine 2014-10-29 10:32:46 -02:00
usage.c
util.c perf tools: Do not change lib/api/fs/debugfs directly 2015-08-28 14:53:53 -03:00
util.h perf tools: Always use non inlined file name for 'srcfile' sort key 2015-09-02 16:30:46 -03:00
values.c
values.h tools: Consolidate types.h 2014-05-01 21:22:39 +02:00
vdso.c perf tools: Fix lockup using 32-bit compat vdso 2015-07-07 11:05:08 -03:00
vdso.h perf machine: Fix up vdso methods names 2015-05-29 12:43:44 -03:00
wrapper.c
xyarray.c perf tools: Introduce xyarray__reset function 2015-06-16 10:34:39 -03:00
xyarray.h perf tools: Introduce xyarray__reset function 2015-06-16 10:34:39 -03:00
zlib.c perf tools: Add gzip decompression support for kernel module 2014-11-05 10:11:26 -03:00