Date: Wed, 15 Apr 2015 14:44:50 -0700 From: Wim Lewis <wiml@omnigroup.com> To: freebsd-questions@freebsd.org Subject: Capturing a snapshot of user stacks? Message-ID: <EDBE1DEA-5FFC-416A-A3E4-FE32F7FCC829@omnigroup.com> References: <2B4F43A6-CB6A-4183-8847-968D6EA4CA9A@omnigroup.com>
next in thread | previous 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 process=92 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?EDBE1DEA-5FFC-416A-A3E4-FE32F7FCC829>