On 14.09.2018 11:54, Andi Kleen wrote:
In principle the LBRs need to be flushed between threads. So does
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?
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.