Reputation: 35708
I want to profile C++ program on Linux using random sampling that is described in this answer:
However, if you're in a hurry and you can manually interrupt your program under the debugger while it's being subjectively slow, there's a simple way to find performance problems.
The problem is that I can't use gdb debugger because I want to profile on production under heavy load and debugger is too intrusive and considerably slows down the program. However I can use perf record
and perf report
for finding bottlenecks without affecting program performance. Is there a way to collect a number of readable (gdb like) stack traces with perf instead of gdb?
Upvotes: 3
Views: 2166
Reputation: 22660
perf
does offer callstack recording with three different techniques
fp
). This is generally supported and performs well, but it doesn't work with certain optimizations. Compile your applications with -fno-omit-frame-pointer
etc. to make sure it works well.dwarf
uses a dump of the sack for each sample for post-processing. That has a significant performance penaltylbr
.The stack is accessible in perf
analysis tools such as perf report
or perf script
.
For more details check out man perf-record
.
Upvotes: 2