• Andi Kleen's avatar
    perf stat: Add support for --initial-delay option · 41191688
    Andi Kleen authored
    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: default avatarAndi Kleen <ak@linux.intel.com>
    Reviewed-by: default avatarJiri 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.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    41191688
builtin-stat.c 41.3 KB