Re: [PATCH 00/10] Stitch LBR call stack
From: Liang, Kan
Date: Mon Oct 07 2019 - 16:06:29 EST
On 10/7/2019 2:24 PM, Ingo Molnar wrote:
* kan.liang@xxxxxxxxxxxxxxx <kan.liang@xxxxxxxxxxxxxxx> wrote:
Performance impact:
The processing time may increase with the LBR stitching approach
enabled. The impact depends on the number of samples with stitched LBRs.
For sqlite's tcltest,
perf record --call-graph lbr -- make tcltest
perf report --stitch-lbr
There are 4.11% samples has stitched LBRs.
Total number of samples: 2833728
The number of samples with stitched LBRs 116478
The processing time of perf report increases 6.8%
Without --stitch-lbr: 55906106 usec
With --stitch-lbr: 59728701 usec
For a simple test case tchain_edit with 43 depth of call stacks.
perf record --call-graph lbr -- ./tchain_edit
perf report --stitch-lbr
There are 99.9% samples has stitched LBRs.
Total number of samples: 10915
The number of samples with stitched LBRs 10905
The processing time of perf report increases 67.4%
Without --stitch-lbr: 11970508 usec
With --stitch-lbr: 20036055 usec
That cost seems pretty high, while the feature sounds useful - is there
any way to speed this up?
For each LBR entry, perf tool will calculate and generate an appended
node for callchain_cursor.
The stitched LBR entries are from previous sample. It looks like we
don't need to do the calculation again for them. That should speed up
the whole process. I will do more test for it.
Thanks,
Kan