• Andi Kleen's avatar
    perf stat: Implement duration_time as a proper event · f0fbb114
    Andi Kleen authored
    The perf metric expression use 'duration_time' internally to normalize
    events.  Normal 'perf stat' without -x also prints the duration time.
    But when using -x, the interval is not output anywhere, which is
    inconvenient for any post processing which often wants to normalize
    values to time.
    
    So implement 'duration_time' as a proper perf event that can be
    specified explicitely with -e.
    
    The previous implementation of 'duration_time' only worked for metric
    processing. This adds the concept of a tool event that is handled by the
    tool. On the kernel level it is still mapped to the dummy software
    event, but the values are not read anymore, but instead computed by the
    tool.
    
    Add proper plumbing to handle this in the event parser, and display it
    in 'perf stat'. We don't want 'duration_time' to be added up, so it's
    only printed for the first CPU.
    
    % perf stat -e duration_time,cycles true
    
     Performance counter stats for 'true':
    
               555,476 ns   duration_time
               771,958      cycles
    
           0.000555476 seconds time elapsed
    
           0.000644000 seconds user
           0.000000000 seconds sys
    Signed-off-by: default avatarAndi Kleen <ak@linux.intel.com>
    Acked-by: default avatarJiri Olsa <jolsa@kernel.org>
    Link: http://lkml.kernel.org/r/20190326221823.11518-3-andi@firstfloor.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    f0fbb114
evsel.h 14.5 KB