Provided by: bpfcc-tools_0.5.0-5ubuntu1_all bug

NAME

       offwaketime - Summarize blocked time by off-CPU stack + waker stack. Uses Linux eBPF/bcc.

SYNOPSIS

       offwaketime  [-h]  [-p  PID  |  -t  TID  |  -u  | -k] [-U | -K] [-f] [--stack-storage-size
       STACK_STORAGE_SIZE] [-m MIN_BLOCK_TIME] [-M MAX_BLOCK_TIME] [duration]

DESCRIPTION

       This program shows kernel stack traces and task names that  were  blocked  and  "off-CPU",
       along  with  the stack traces and task names for the threads that woke them, and the total
       elapsed time from when they blocked to  when  they  were  woken  up.   This  combines  the
       summaries  from  both  the  offcputime and wakeuptime tools.  The time measurement will be
       very similar to off-CPU time, however, off-CPU time may include a little extra time  spent
       waiting  on  a run queue to be scheduled.  The combined stacks, task names, and total time
       is summarized in kernel context for efficiency, using an eBPF map.

       The output summary will further help you identify reasons why threads were  blocking,  and
       quantify  the  time  from  when  they  were  blocked to woken up.  This spans all types of
       blocking activity:  disk  I/O,  network  I/O,  locks,  page  faults,  swapping,  sleeping,
       involuntary context switches, etc.

       This is complementary to CPU profiling (e.g., CPU flame graphs) which shows the time spent
       on-CPU. This shows the time spent blocked off-CPU,  and  the  output,  especially  the  -f
       format, can be used to generate an "off-wake time flame graph".

       See http://www.brendangregg.com/FlameGraphs/offcpuflamegraphs.html

REQUIREMENTS

       CONFIG_BPF and bcc.

OPTIONS

       -h     Print usage message.

       -f     Print output in folded stack format.

       -p PID Trace this process ID only (filtered in-kernel).

       -t TID Trace this thread ID only (filtered in-kernel).

       -u     Only trace user threads (no kernel threads).

       -k     Only trace kernel threads (no user threads).

       -U     Show stacks from user space only (no kernel space stacks).

       -K     Show stacks from kernel space only (no user space stacks).

       --stack-storage-size STACK_STORAGE_SIZE
              Change the number of unique stack traces that can be stored and displayed.

       duration
              Duration to trace, in seconds.

       -m MIN_BLOCK_TIME
              The amount of time in microseconds over which we store traces (default 1)

       -M MAX_BLOCK_TIME
              The amount of time in microseconds under which we store traces (default U64_MAX)

EXAMPLES

       Trace  all  thread  blocking  events, and summarize (in-kernel) by user and kernel off-CPU
       stack trace, waker stack traces, task names, and total blocked time:
              # offwaketime

       Trace for 5 seconds only:
              # offwaketime 5

       Trace for 5 seconds, and emit output in folded stack format (suitable for  flame  graphs),
       user-mode threads only:
              # offwaketime -fu 5

       Trace PID 185 only:
              # offwaketime -p 185

OVERHEAD

       This  summarizes unique stack trace pairs in-kernel for efficiency, allowing it to trace a
       higher rate of events than methods that post-process in user space.  The stack  trace  and
       time  data  is  only  copied  to  user space once, when the output is printed. While these
       techniques greatly lower overhead, scheduler events are still a high frequency  event,  as
       they  can  exceed  1  million events per second, and so caution should still be used. Test
       before production use.

       If the overhead is still a problem, take a look at the min block option.  If your  aim  is
       to  chase  down  longer  blocking  events,  then this could be increased to filter shorter
       blocking events, further lowering overhead.

SOURCE

       This is from bcc.

              https://github.com/iovisor/bcc

       Also look in the bcc distribution for a companion _examples.txt  file  containing  example
       usage, output, and commentary for this tool.

OS

       Linux

STABILITY

       Unstable - in development.

AUTHOR

       Brendan Gregg

SEE ALSO

       offcputime(8), wakeuptime(8)