• Paul Mackerras's avatar
    perf_counter: Fix cpu migration counter · 3f731ca6
    Paul Mackerras authored
    This fixes the cpu migration software counter to count
    correctly even when contexts get swapped from one task to
    another.  Previously the cpu migration counts reported by perf
    stat were bogus, ranging from negative to several thousand for
    a single "lat_ctx 2 8 32" run.  With this patch the cpu
    migration count reported for "lat_ctx 2 8 32" is almost always
    between 35 and 44.
    
    This fixes the problem by adding a call into the perf_counter
    code from set_task_cpu when tasks are migrated.  This enables
    us to use the generic swcounter code (with some modifications)
    for the cpu migration counter.
    
    This modifies the swcounter code to allow a NULL regs pointer
    to be passed in to perf_swcounter_ctx_event() etc.  The cpu
    migration counter does this because there isn't necessarily a
    pt_regs struct for the task available.  In this case, the
    counter will not have interrupt capability - but the migration
    counter didn't have interrupt capability before, so this is no
    loss.
    Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
    Cc: Marcelo Tosatti <mtosatti@redhat.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: John Kacur <jkacur@redhat.com>
    LKML-Reference: <18979.35006.819769.416327@cargo.ozlabs.ibm.com>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    3f731ca6
sched.c 251 KB