Re: [PATCH] perf/x86/intel/lbr: Optimize context switches for LBR

From: Liang, Kan
Date: Fri Sep 14 2018 - 08:39:46 EST

On 9/14/2018 5:22 AM, Alexey Budankov wrote:

Hi Andi,

On 14.09.2018 11:54, Andi Kleen wrote:
In principle the LBRs need to be flushed between threads. So does
current code.

IMHO, ideally, LBRs stack would be preserved and restored when
switching between execution stacks. That would allow implementing
per-thread statistical call graph view in Perf tools, fully based
on HW capabilities. It could be advantageous for some cases, in
comparison with traditional dwarf based call graph.

This is already supported when you use LBR call stack mode
(perf record --call-graph lbr)

Which kernel versions does it make sense to try?

The optimization for LBR call stack has been merged into 4.19.
commit id: 8b077e4a69bef5c4121426e99497975860191e53
perf/x86/intel/lbr: Optimize context switches for the LBR call stack



This change is only optimizing the case when call stack mode is not used.

Of course in call stack mode the context switch overhead is even higher,
because it not only writes, but also reads.