• Stephane Eranian's avatar
    perf_events: Fix time tracking for events with pid != -1 and cpu != -1 · fa66f07a
    Stephane Eranian authored
    Per-thread events with a cpu filter, i.e., cpu != -1, were not
    reporting correct timings when the thread never ran on the
    monitored cpu. The time enabled was reported as a negative
    value.
    
    This patch fixes the problem by updating tstamp_stopped,
    tstamp_running in event_sched_out() for events with filters and
    which are marked as INACTIVE.
    
    The function group_sched_out() is modified to systematically
    call into event_sched_out() to avoid duplicating the timing
    adjustment code twice.
    
    With the patch, I now get:
    
    $ task_cpu -i -e unhalted_core_cycles,unhalted_core_cycles
    noploop 2 noploop for 2 seconds
    CPU0 0		   unhalted_core_cycles (ena=1,991,136,594, run=0)
    CPU0 0		   unhalted_core_cycles (ena=1,991,136,594, run=0)
    
    CPU1 0		   unhalted_core_cycles (ena=1,991,136,594, run=0)
    CPU1 0		   unhalted_core_cycles (ena=1,991,136,594, run=0)
    
    CPU2 0		   unhalted_core_cycles (ena=1,991,136,594, run=0)
    CPU2 0		   unhalted_core_cycles (ena=1,991,136,594, run=0)
    
    CPU3 4,747,990,931 unhalted_core_cycles (ena=1,991,136,594, run=1,991,136,594)
    CPU3 4,747,990,931 unhalted_core_cycles (ena=1,991,136,594, run=1,991,136,594)
    Signed-off-by: default avatarStephane Eranian <eranian@gmail.com>
    Acked-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: paulus@samba.org
    Cc: davem@davemloft.net
    Cc: fweisbec@gmail.com
    Cc: perfmon2-devel@lists.sf.net
    Cc: eranian@google.com
    LKML-Reference: <4c76802d.aae9d80a.115d.70fe@mx.google.com>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    fa66f07a
perf_event.c 134 KB