funcslower(8) | System Manager's Manual | funcslower(8) |
funcslower - trace kernel functions slower than a threshold (microseconds). Uses Linux ftrace.
funcslower [-aChHPt] [-p PID] [-L TID] [-d secs] funcstring latency_us
This uses the Linux ftrace function graph profiler to time kernel functions and filter them based on a latency threshold. Latency outliers can be studied this way, confirming their presence, duration, and rate. This tool is a proof of concept using Linux ftrace capabilities on older kernels.
The output format is based on the ftrace function graph trace format, described in the kernel source under Documentation/trace/ftrace.txt. Use the -H option to print column headings. Note that the output may be shuffled when different CPU buffers are read; check the CPU column for changes, or include timestamps (-t) and post sort.
WARNING: This uses dynamic tracing of kernel functions, and could cause kernel panics or freezes. Test, and know what you are doing, before use.
Since this uses ftrace, only the root user can use this tool.
FTRACE function graph, which you may already have enabled and available on recent kernels. And awk.
The ftrace buffer has a fixed size per-CPU (see /sys/kernel/debug/tracing/buffer_size_kb). If you think events are missing, try increasing that size.
The output format depends on the kernel version, and headings can be printed using -H. The format is the same as the ftrace function trace format, described in the kernel source under Documentation/trace/ftrace.txt.
Typical fields are:
OVERHEADS: Timing and filtering is performed in-kernel context, costing lower overheads than post-processing in user space. If you trace frequent events (eg, pick a common function and a low threshold), you might want to try the "-d secs" option, which buffers events in-kernel instead of printing them live.
It's a good idea to start with a high threshold (eg, "100000" for 100 ms) then to decrease it. If you start low instead, you may start printing too many events.
This is from the perf-tools collection:
Also look under the examples directory for a text file containing example usage, output, and commentary for this tool.
Linux
Unstable - in development.
Brendan Gregg
2014-07-30 | USER COMMANDS |