linux/tools/perf
Andi Kleen 411916880f perf stat: Add support for --initial-delay option
When measuring workloads the startup phase -- doing page faults, dynamic
linking, opening files -- is often very different from the rest of the
workload.  Especially with smaller kernels and using counter
multiplexing this can give significant measurement errors.

Multiplexing assumes that the workload is mostly the same over longer
periods. But at startup there is typically some spike of activity which
is relatively short.  If many groups are multiplexing the one group
seeing the spike, and which is then scaled up over the time to run all
groups, may see a significant error.

Also in general it's often not useful to measure the startup, because it
is so different from the rest.

One way around this is to use interval mode and discard the first
sample, but this can be awkward because interval mode doesn't support
intervals of less than 100ms, and also a useful interval is not
necessarily the same as a useful startup delay.

This patch adds a new --initial-delay / -D option to skip measuring for
the startup phase. The time can be specified in ms

Here's a simple example:

perf stat -e page-faults bash -c 'for i in $(seq 100000) ; do true ; done'
...
             3,721 page-faults
...

If we just wait 20 ms the number of page faults is 1/3 less:

perf stat -D 20 -e page-faults bash -c 'for i in $(seq 100000) ; do true ; done'
...
             2,823 page-faults
...

So we filtered out most of the startup noise from bash.

Signed-off-by: Andi Kleen <ak@linux.intel.com>
Reviewed-by: Jiri Olsa <jolsa@redhat.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/1375490473-1503-4-git-send-email-andi@firstfloor.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2013-08-07 17:35:29 -03:00
..
arch perf tools: Fix compile of util/tsc.c 2013-08-07 17:35:24 -03:00
bench perf bench: Fix memcpy benchmark for large sizes 2013-07-22 12:41:56 -03:00
config perf tools: Use default include path notation for libtraceevent headers 2013-07-12 13:45:54 -03:00
Documentation perf stat: Add support for --initial-delay option 2013-08-07 17:35:29 -03:00
python perf python: Remove duplicate TID bit from mask 2013-08-07 17:35:25 -03:00
scripts perf script: Fix broken include in Context.xs 2013-07-10 13:47:00 -03:00
tests perf tests: Add parse events tests for leader sampling 2013-08-07 17:35:23 -03:00
ui perf tools: Move hist_entry__period_snprintf into stdio code 2013-07-12 13:54:18 -03:00
util perf evsel: Add support for enabling counters 2013-08-07 17:35:28 -03:00
.gitignore perf tools: Ignore compiled python binaries 2012-09-07 12:10:58 -03:00
bash_completion perf tools: Complete tracepoint event names 2012-10-04 12:44:52 -03:00
builtin-annotate.c perf tools: Add support for weight v7 (modified) 2013-04-01 12:19:43 -03:00
builtin-bench.c perf tools: Make numa benchmark optional 2013-01-30 10:36:21 -03:00
builtin-buildid-cache.c perf buildid-cache: Add --update option 2013-02-14 14:59:27 -03:00
builtin-buildid-list.c perf symbols: Generalize filter in __fprintf_buildid methods 2012-12-09 08:46:07 -03:00
builtin-diff.c perf diff: Add generic order option for compute sorting 2013-07-12 13:54:16 -03:00
builtin-evlist.c perf evlist: Pass the event_group info via perf_attr_details 2013-02-06 18:09:28 -03:00
builtin-help.c perf help: Fix --help for builtins 2012-10-22 12:35:49 -02:00
builtin-inject.c perf tools: Remove event types framework completely 2013-07-15 16:28:22 -03:00
builtin-kmem.c perf tools: struct thread has a tid not a pid 2013-07-12 13:53:50 -03:00
builtin-kvm.c perf kvm: Split out tracepoints from record args 2013-08-07 17:35:27 -03:00
builtin-list.c perf list: List kernel supplied event aliases 2013-07-12 13:53:53 -03:00
builtin-lock.c perf record: Remove -f/--force option 2013-07-08 17:37:25 -03:00
builtin-mem.c perf tools: Add new mem command for memory access profiling 2013-04-01 12:21:44 -03:00
builtin-probe.c perf tools: Introduce tools/lib/lk library 2013-03-15 13:06:00 -03:00
builtin-record.c perf tools: Remove event types framework completely 2013-07-15 16:28:22 -03:00
builtin-report.c perf tools: Support callchain sorting based on addresses 2013-07-22 12:42:18 -03:00
builtin-sched.c perf tools: struct thread has a tid not a pid 2013-07-12 13:53:50 -03:00
builtin-script.c perf script: Fix named threads support 2013-07-22 11:55:53 -03:00
builtin-stat.c perf stat: Add support for --initial-delay option 2013-08-07 17:35:29 -03:00
builtin-timechart.c perf timechart: Remove event types framework only user 2013-07-15 16:14:47 -03:00
builtin-top.c perf top: move CONSOLE_CLEAR to header file 2013-08-07 17:35:26 -03:00
builtin-trace.c perf trace: Beautify 'connect' result 2013-08-07 17:35:25 -03:00
builtin.h perf tools: Add new mem command for memory access profiling 2013-04-01 12:21:44 -03:00
command-list.txt perf tools: Add new mem command for memory access profiling 2013-04-01 12:21:44 -03:00
CREDITS
design.txt
Makefile perf tools: Add test for converting perf time to/from TSC 2013-07-23 12:17:59 +02:00
MANIFEST perf tools: Introduce tools/lib/lk library 2013-03-15 13:06:00 -03:00
perf-archive.sh perf archive: Make 'f' the last parameter for tar 2012-09-17 13:10:42 -03:00
perf.c perf tools: Convert needless static variable to local 2013-04-01 12:22:48 -03:00
perf.h perf tools: Add support for weight v7 (modified) 2013-04-01 12:19:43 -03:00