android_kernel_samsung_univ.../tools/perf/util
Paul Mackerras a12b51c478 perf tools: Fix sparse CPU numbering related bugs
At present, the perf subcommands that do system-wide monitoring
(perf stat, perf record and perf top) don't work properly unless
the online cpus are numbered 0, 1, ..., N-1.  These tools ask
for the number of online cpus with sysconf(_SC_NPROCESSORS_ONLN)
and then try to create events for cpus 0, 1, ..., N-1.

This creates problems for systems where the online cpus are
numbered sparsely.  For example, a POWER6 system in
single-threaded mode (i.e. only running 1 hardware thread per
core) will have only even-numbered cpus online.

This fixes the problem by reading the /sys/devices/system/cpu/online
file to find out which cpus are online.  The code that does that is in
tools/perf/util/cpumap.[ch], and consists of a read_cpu_map()
function that sets up a cpumap[] array and returns the number of
online cpus.  If /sys/devices/system/cpu/online can't be read or
can't be parsed successfully, it falls back to using sysconf to
ask how many cpus are online and sets up an identity map in cpumap[].

The perf record, perf stat and perf top code then calls
read_cpu_map() in the system-wide monitoring case (instead of
sysconf) and uses cpumap[] to get the cpu numbers to pass to
perf_event_open.

Signed-off-by: Paul Mackerras <paulus@samba.org>
Cc: Anton Blanchard <anton@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Arnaldo Carvalho de Melo <acme@infradead.org>
LKML-Reference: <20100310093609.GA3959@brick.ozlabs.ibm.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2010-03-11 13:36:53 +01:00
..
include perf tools: Adjust some verbosity levels 2010-02-04 09:33:27 +01:00
scripting-engines perf/scripts: Remove unnecessary PyTuple resizes 2010-02-25 04:07:49 +01:00
abspath.c
alias.c
build-id.c perf build-id: Move the routine to find DSOs with hits to the lib 2010-02-04 09:33:26 +01:00
build-id.h perf build-id: Move the routine to find DSOs with hits to the lib 2010-02-04 09:33:26 +01:00
cache.h
callchain.c
callchain.h
color.c
color.h
config.c
cpumap.c perf tools: Fix sparse CPU numbering related bugs 2010-03-11 13:36:53 +01:00
cpumap.h perf tools: Fix sparse CPU numbering related bugs 2010-03-11 13:36:53 +01:00
ctype.c
debug.c
debug.h
debugfs.c
debugfs.h
environment.c
event.c Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2010-02-28 10:20:25 -08:00
event.h perf session: Add storage for seperating event types in report 2010-03-10 13:53:48 +01:00
exec_cmd.c
exec_cmd.h
generate-cmdlist.sh
header.c perf tools: Clean up O_LARGEFILE et al usage 2010-02-04 10:03:03 +01:00
header.h perf buildid-cache: Add new command to manage build-id cache 2010-01-21 08:31:29 +01:00
help.c
help.h
hist.c perf report: Print the map table just after samples for which no map was found 2010-03-10 13:53:52 +01:00
hist.h perf session: Change perf_session post processing functions to take histogram tree 2010-03-10 13:53:49 +01:00
levenshtein.c
levenshtein.h
map.c perf symbols: Improve debugging information about symtab origins 2010-02-25 12:27:17 +01:00
map.h perf symbols: Improve debugging information about symtab origins 2010-02-25 12:27:17 +01:00
pager.c
parse-events.c
parse-events.h
parse-options.c
parse-options.h
path.c
PERF-VERSION-GEN
probe-event.c Merge commit 'v2.6.34-rc1' into perf/urgent 2010-03-09 17:11:53 +01:00
probe-event.h
probe-finder.c perf probe: Add missing variable initialization 2010-03-10 13:53:33 +01:00
probe-finder.h perf probe: Add lazy line matching support 2010-02-25 17:49:30 +01:00
quote.c
quote.h
run-command.c
run-command.h
session.c perf session: Add storage for seperating event types in report 2010-03-10 13:53:48 +01:00
session.h perf session: Add storage for seperating event types in report 2010-03-10 13:53:48 +01:00
sigchain.c
sigchain.h
sort.c
sort.h
strbuf.c
strbuf.h
string.c perf probe: Add lazy line matching support 2010-02-25 17:49:30 +01:00
string.h perf probe: Add lazy line matching support 2010-02-25 17:49:30 +01:00
strlist.c
strlist.h
svghelper.c
svghelper.h
symbol.c perf annotate: Defer allocating sym_priv->hist array 2010-02-25 17:39:14 +01:00
symbol.h perf annotate: Defer allocating sym_priv->hist array 2010-02-25 17:39:14 +01:00
thread.c perf report: Print the map table just after samples for which no map was found 2010-03-10 13:53:52 +01:00
thread.h perf report: Print the map table just after samples for which no map was found 2010-03-10 13:53:52 +01:00
trace-event-info.c perf tools: Convert getpagesize() uses to sysconf(_SC_GETPAGESIZE) 2010-01-16 10:58:46 +01:00
trace-event-parse.c perf/scripts: Move common code out of Perl-specific files 2010-02-23 20:37:29 +01:00
trace-event-read.c perf tools: Clean up O_LARGEFILE et al usage 2010-02-04 10:03:03 +01:00
trace-event-scripting.c perf/scripts: Add Python scripting engine 2010-02-25 04:07:29 +01:00
trace-event.h perf/scripts: Add Python scripting engine 2010-02-25 04:07:29 +01:00
types.h
usage.c
util.c perf: Fix implicit declaration of getline in util.c 2010-01-17 07:53:09 +01:00
util.h
values.c
values.h
wrapper.c