Thread (15 messages) 15 messages, 4 authors, 2015-01-26

perf not capturing stack traces

From: Russell King - ARM Linux <hidden>
Date: 2015-01-26 13:51:40
Also in: linux-omap, lkml

On Mon, Jan 26, 2015 at 10:27:11AM +0000, Will Deacon wrote:
On Sun, Jan 25, 2015 at 03:56:52PM +0000, Russell King - ARM Linux wrote:
quoted
On Sat, Jan 24, 2015 at 04:23:42PM -0600, Felipe Balbi wrote:
quoted
yeah, I'll try a few older kernels, also see if I can reproduce on other
boards.
Perf works for me with CONFIG_FRAME_POINTER=y, but that's only for kernel
space, and for userspace where the programs have been built for ARM mode
with frame pointers.

The kernel may work without CONFIG_FRAME_POINTER set, but I've never
tested that, and I'd suggest that (given my experience looking at oops
dumps) it's not all that reliable.

Lastly, userspace without frame pointers is pretty much hopeless.
FWIW, perf can now use libunwind for unwinding the userspace side of
things, so it's not quite as bad as it used to be. For the kernel side,
if the unwinder isn't working properly it would be nice to know *why*,
but I agree that it tends to be far flakier than the frame-pointer method.
I don't see how userspace could be unwound without capturing the entire
userspace stack on every perf event - and that could be a considerable
size.  We have no way to know within the kernel which words on the
userspace stack are part of the callchain and which aren't - the only
way we'd know is by loading the userspace's unwind tables, having the
kernel parsing them and generate a list of functions.

-- 
FTTC broadband for 0.8mile line: currently at 10.5Mbps down 400kbps up
according to speedtest.net.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help