linux/tools/perf/util
Ian Munsie 21ef97f05a perf session: Fallback to unordered processing if no sample_id_all
If we are running the new perf on an old kernel without support for
sample_id_all, we should fall back to the old unordered processing of
events. If we didn't than we would *always* process events without
timestamps out of order, whether or not we hit a reordering race. In
other words, instead of there being a chance of not attributing samples
correctly, we would guarantee that samples would not be attributed.

While processing all events without timestamps before events with
timestamps may seem like an intuitive solution, it falls down as
PERF_RECORD_EXIT events would also be processed before any samples.
Even with a workaround for that case, samples before/after an exec would
not be attributed correctly.

This patch allows commands to indicate whether they need to fall back to
unordered processing, so that commands that do not care about timestamps
on every event will not be affected. If we do fallback, this will print
out a warning if report -D was invoked.

This patch adds the test in perf_session__new so that we only need to
test once per session. Commands that do not use an event_ops (such as
record and top) can simply pass NULL in it's place.

Acked-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
LKML-Reference: <1291951882-sup-6069@au1.ibm.com>
Signed-off-by: Ian Munsie <imunsie@au1.ibm.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2010-12-21 20:17:51 -02:00
..
include perf record: Add option to disable collecting build-ids 2010-11-26 19:39:15 -02:00
scripting-engines perf: Rename 'perf trace' to 'perf script' 2010-11-16 19:37:44 +01:00
ui perf tools: Fix lost and unknown events handling 2010-11-27 02:41:01 -02:00
abspath.c perf tools: Remove some unused functions 2010-05-18 23:03:35 -03:00
alias.c
bitmap.c perf tools: Don't use code surrounded by __KERNEL__ 2010-05-02 12:00:44 -03:00
build-id.c perf session: Parse sample earlier 2010-12-04 23:05:19 -02:00
build-id.h perf annotate: Use build-ids to find the right DSO 2010-05-20 12:15:33 -03:00
cache.h perf tools: add test for strlcpy() 2010-08-21 11:22:47 -03:00
callchain.c perf: Support for callchains merge 2010-08-22 21:10:35 +02:00
callchain.h Merge branch 'perf/urgent' into perf/core 2010-08-27 02:30:07 +02:00
color.c perf hist: Replace ->print() routines by ->snprintf() equivalents 2010-04-02 16:28:15 -03:00
color.h perf hist: Replace ->print() routines by ->snprintf() equivalents 2010-04-02 16:28:15 -03:00
config.c perf buildid: add perfconfig option to specify buildid cache dir 2010-06-05 09:34:04 -03:00
cpumap.c perf tools: Add the ability to specify list of cpus to monitor 2010-06-05 09:33:01 -03:00
cpumap.h perf tools: Add the ability to specify list of cpus to monitor 2010-06-05 09:33:01 -03:00
ctype.c
debug.c perf debug: Simplify trace_event 2010-11-30 20:58:42 -02:00
debug.h perf tools: Fix lost and unknown events handling 2010-11-27 02:41:01 -02:00
debugfs.c
debugfs.h
environment.c
event.c perf event: Prevent unbound event__name array access 2010-12-09 11:15:07 -02:00
event.h perf session: Consolidate the dump code 2010-12-09 11:18:06 -02:00
exec_cmd.c perf tools: remove xstrndup, xmalloc, xzalloc 2010-05-18 23:05:28 -03:00
exec_cmd.h perf tools: Remove some unused functions 2010-05-18 23:03:35 -03:00
generate-cmdlist.sh
header.c Merge branch 'perf/urgent' into perf/core 2010-12-16 11:22:27 +01:00
header.h perf tools: Ask for ID PERF_SAMPLE_ info on all PERF_RECORD_ events 2010-12-04 23:08:40 -02:00
help.c perf tools: Remove some unused functions 2010-05-18 23:03:35 -03:00
help.h
hist.c perf event: Prevent unbound event__name array access 2010-12-09 11:15:07 -02:00
hist.h perf session: Parse sample earlier 2010-12-04 23:05:19 -02:00
hweight.c perf tools: Don't use code surrounded by __KERNEL__ 2010-05-02 12:00:44 -03:00
levenshtein.c
levenshtein.h
map.c perf tools: Don't keep unreferenced maps when unmaps are detected 2010-08-02 19:45:23 -03:00
map.h perf probe: Add basic module support 2010-10-21 16:11:44 -02:00
pager.c
parse-events.c perf tools: fix event parsing of comma-separated tracepoint events 2010-11-30 23:04:39 -02:00
parse-events.h perf: record TRACE_INFO only if using tracepoints and SAMPLE_RAW 2010-05-03 10:31:48 -03:00
parse-options.c perf options: Type check all the remaining OPT_ variants 2010-05-17 16:22:41 -03:00
parse-options.h perf options: add OPT_CALLBACK_DEFAULT_NOOPT 2010-12-06 15:33:29 -02:00
path.c perf tools: add test for strlcpy() 2010-08-21 11:22:47 -03:00
PERF-VERSION-GEN perf: Version String fix, for fallback if not from git 2010-07-05 10:42:58 +02:00
probe-event.c perf probe: Add basic module support 2010-10-21 16:11:44 -02:00
probe-event.h perf probe: Add basic module support 2010-10-21 16:11:44 -02:00
probe-finder.c perf probe: Fix format specified for Dwarf_Off parameter 2010-10-23 15:31:20 -02:00
probe-finder.h perf tools: Remove hardcoded include paths for elfutils 2010-11-19 16:38:04 -02:00
pstack.c perf newt: Make <- zoom out filters 2010-05-14 20:05:21 -03:00
pstack.h perf ui: Move hists browser to util/ui/browsers/ 2010-08-10 16:11:08 -03:00
quote.c perf tools: Remove some unused functions 2010-05-18 23:03:35 -03:00
quote.h perf tools: Remove some unused functions 2010-05-18 23:03:35 -03:00
run-command.c perf tools: Remove some unused functions 2010-05-18 23:03:35 -03:00
run-command.h perf tools: Remove some unused functions 2010-05-18 23:03:35 -03:00
session.c perf session: Fallback to unordered processing if no sample_id_all 2010-12-21 20:17:51 -02:00
session.h perf session: Fallback to unordered processing if no sample_id_all 2010-12-21 20:17:51 -02:00
sigchain.c perf tools: Remove some unused functions 2010-05-18 23:03:35 -03:00
sigchain.h perf tools: Remove some unused functions 2010-05-18 23:03:35 -03:00
sort.c perf hist: Better displaying of unresolved DSOs and symbols 2010-12-06 15:12:34 -02:00
sort.h perf: Keep track of the max depth of a callchain 2010-08-22 20:43:17 +02:00
strbuf.c perf tools: Remove some unused functions 2010-05-18 23:03:35 -03:00
strbuf.h perf tools: Remove some unused functions 2010-05-18 23:03:35 -03:00
string.c perf: Swap inclusion order of util.h and string.h in util/string.c 2010-04-04 16:40:42 +02:00
strlist.c
strlist.h
svghelper.c
svghelper.h
symbol.c Merge branch 'perf/urgent' into perf/core 2010-12-16 11:22:27 +01:00
symbol.h perf report: Allow user to specify path to kallsyms file 2010-12-09 11:07:07 -02:00
thread.c perf tools: Release thread resources on PERF_RECORD_EXIT 2010-07-30 18:28:42 -03:00
thread.h perf tools: Release thread resources on PERF_RECORD_EXIT 2010-07-30 18:28:42 -03:00
trace-event-info.c perf/record: simplify TRACE_INFO tracepoint check 2010-05-05 11:12:53 -03:00
trace-event-parse.c Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2010-05-18 08:19:03 -07:00
trace-event-read.c perf: Use read() instead of lseek() in trace_event_read.c:skip() 2010-05-20 08:37:17 +02:00
trace-event-scripting.c perf trace scripting: Fix extern struct definitions 2010-10-04 12:24:51 -03:00
trace-event.h perf: Fix unaligned accesses while fetching trace values 2010-05-20 11:21:57 +02:00
types.h
usage.c
util.c perf report: Report number of events, not samples 2010-05-14 14:19:35 -03:00
util.h perf ui browser: Return the exit key in all browsers 2010-08-19 19:39:52 -03:00
values.c
values.h
wrapper.c perf tools: remove xstrndup, xmalloc, xzalloc 2010-05-18 23:05:28 -03:00