• Jiri Olsa's avatar
    perf: Allocate context task_ctx_data for child event · 313ccb96
    Jiri Olsa authored
    Currently we use perf_event_context::task_ctx_data to save and restore
    the LBR status when the task is scheduled out and in.
    
    We don't allocate it for child contexts, which results in shorter task's
    LBR stack, because we don't save the history from previous run and start
    over every time we schedule the task in.
    
    I made a test to generate samples with LBR call stack and got higher
    numbers on bigger chain depths:
    
                                before:     after:
      LBR call chain: nr: 1       60561     498127
      LBR call chain: nr: 2           0          0
      LBR call chain: nr: 3      107030       2172
      LBR call chain: nr: 4      466685      62758
      LBR call chain: nr: 5     2307319     878046
      LBR call chain: nr: 6       48713     495218
      LBR call chain: nr: 7        1040       4551
      LBR call chain: nr: 8         481        172
      LBR call chain: nr: 9         878        120
      LBR call chain: nr: 10       2377       6698
      LBR call chain: nr: 11      28830     151487
      LBR call chain: nr: 12      29347     339867
      LBR call chain: nr: 13          4         22
      LBR call chain: nr: 14          3         53
    Signed-off-by: default avatarJiri Olsa <jolsa@kernel.org>
    Acked-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Fixes: 4af57ef2 ("perf: Add pmu specific data for perf task context")
    Link: http://lkml.kernel.org/r/20180107160356.28203-4-jolsa@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    313ccb96
core.c 265 KB