Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 6 Apr 2015 18:40:05 -0700
From:      Wim Lewis <wiml@omnigroup.com>
To:        freebsd-performance@freebsd.org
Subject:   Capturing a snapshot of user stacks
Message-ID:  <2B4F43A6-CB6A-4183-8847-968D6EA4CA9A@omnigroup.com>

next in thread | raw e-mail | index | archive | help
I=92m looking for a tool which can capture all (or a selected subset) of =
the user stacks on the system, even for tasks that are blocked in a =
syscall at the time.

Dtrace can capture a user stack but only when an event happens in that =
task; and procstat -k can capture all the stacks but only the kernel =
stacks. Is there a way to, in effect, have a dtrace probe fire in every =
blocked thread? Or another way to get this information?

A little explanation: I=92m trying to discover why a system occasionally =
becomes slow. When this happens, I want to capture some profiling =
information for later perusal. I can get a lot of information from =
dtrace (a la =
http://www.brendangregg.com/FlameGraphs/offcpuflamegraphs.html ) and =
pmc, but that won=92t tell me anything about a process that=92s blocked =
the whole time, or is blocked at the start of the interval but unblocks =
partway through (as is likely to be the case if I only start collecting =
data once the problem occurs).

Any ideas?


Wim Lewis / wiml@omnigroup.com





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?2B4F43A6-CB6A-4183-8847-968D6EA4CA9A>