dwww Home | Manual pages | Find package

wakeuptime(8)               System Manager's Manual              wakeuptime(8)

NAME
       wakeuptime - Summarize sleep to wakeup time by waker kernel stack. Uses
       Linux eBPF/bcc.

SYNOPSIS
       wakeuptime   [-h]   [-u]   [-p  PID]  [-v]  [-f]  [--stack-storage-size
       STACK_STORAGE_SIZE] [-m MIN_BLOCK_TIME] [-M MAX_BLOCK_TIME] [duration]

DESCRIPTION
       This program shows the kernel stack traces for  threads  that  woke  up
       other  blocked  threads,  along with the process names of the waker and
       target, along with a sum of the time that the target was  blocked:  the
       "blocked  time".   It works by tracing when threads block and when they
       were then woken up, and measuring the time delta. This 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
       stack  traces,  process  names, and time spent blocked is summarized in
       the kernel using an eBPF map for efficiency.

       The output summary will help you  identify  reasons  why  threads  were
       blocking  by  showing  who  woke them up, along with the time they were
       blocked. This spans all types of blocking activity: disk  I/O,  network
       I/O, locks, page faults, involuntary context switches, etc.

       This  can be used in conjunction with offcputime, which shows the stack
       trace of the blocked thread. wakeuptime shows the stack  trace  of  the
       waker thread.

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

       This  tool  only works on Linux 4.6+. It uses the new `BPF_STACK_TRACE`
       table APIs to generate the in-kernel stack traces.

REQUIREMENTS
       CONFIG_BPF and bcc.

OPTIONS
       -h     Print usage message.

       -f     Print output in folded stack format.

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

       -v     Show raw addresses (for non-folded format).

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

       --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 kernel
       stack trace and total blocked time:
              # wakeuptime

       Trace user-mode target threads only:
              # wakeuptime -u

       Trace for 5 seconds only:
              # wakeuptime 5

       Trace for 5 seconds, and emit output in folded stack format (suitable
       for flame graphs):
              # wakeuptime -f 5

       Trace PID 185 only:
              # wakeuptime -p 185

OVERHEAD
       This  summarizes unique stack traces 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 op-
       tion.  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), stackcount(8)

USER COMMANDS                     2016-01-27                     wakeuptime(8)

Generated by dwww version 1.16 on Tue Dec 16 05:46:56 CET 2025.