forked from OSchip/llvm-project
3f97016857
Complete pseudo probes decoding can result in large memory usage. In practice only a small porting of the decoded probes are used in profile generation. I'm changing the full decoding mode to be decoding for profiled functions only, though we still do a full scan of the .pseudoprobe section due to a missing table-of-content but we don't have to build the in-memory data structure for functions not sampled. To build the in-memory data structure for profiled functions only, I'm rewriting the previous non-recursive probe decoding logic to be recursive. This is easy to read and maintain. I also have to change the previous representation of unsymbolized context from probe-based stack to address-based stack since the profiled functions are unknown yet by the time of virtual unwinding. The address-based stack will be converted to probe-based stack after virtual unwinding and on-demand probe decoding. I'm seeing 20GB memory is saved for one of our internal large service. Reviewed By: wenlei Differential Revision: https://reviews.llvm.org/D121643 |
||
---|---|---|
.. | ||
Inputs | ||
callback-external-addr.test | ||
cold-profile-trimming.test | ||
coroutine.test | ||
cs-extbinary.test | ||
cs-external-address.test | ||
cs-interrupt.test | ||
cs-invalid-ret-addr.test | ||
cs-preinline-cost.test | ||
cs-preinline.test | ||
disassemble.test | ||
fname-canonicalization.test | ||
fs-discriminator.test | ||
func-split.test | ||
help.test | ||
inline-cs-noprobe.test | ||
inline-cs-pseudoprobe.test | ||
inline-force-dwarf.test | ||
inline-noprobe.test | ||
inline-noprobe2.test | ||
inline-pseudoprobe.test | ||
invalid-perfscript.test | ||
lit.local.cfg | ||
merge-cold-profile.test | ||
mmapEvent.test | ||
multi-load-segs.test | ||
noinline-cs-noprobe.test | ||
noinline-cs-pseudoprobe.test | ||
noinline-noprobe.test | ||
noinline-pseudoprobe.test | ||
profile-density.test | ||
pseudoprobe-decoding.test | ||
recursion-compression-noprobe.test | ||
recursion-compression-pseudoprobe.test | ||
separate-debuginfo-binary.test | ||
split-dwarf.test | ||
symbolize.test | ||
truncated-pseudoprobe.test |