Demonstrations of runqslower, the Linux eBPF/bcc version.


runqslower shows high latency scheduling times between tasks being
ready to run and them running on CPU after that. For example:

# runqslower
Tracing run queue latency higher than 10000 us
TIME     COMM             PID           LAT(us)
04:16:32 cc1              12924           12739
04:16:32 sh               13640           12118
04:16:32 make             13639           12730
04:16:32 bash             13655           12047
04:16:32 bash             13657           12744
04:16:32 bash             13656           12880
04:16:32 sh               13660           10846
04:16:32 gcc              13663           12681
04:16:32 make             13668           10814
04:16:32 make             13670           12988
04:16:32 gcc              13677           11770
04:16:32 gcc              13678           23519
04:16:32 as               12999           20541
[...]

This shows various processes waiting for available CPU during a Linux kernel
build. By default the output contains delays for more than 10ms.

These delays can be analyzed in depth with "perf sched" tool, see:

* http://www.brendangregg.com/blog/2017-03-16/perf-sched.html

USAGE message:

# ./runqslower -h
usage: runqslower.py [-h] [-p PID] [min_us]

Trace high run queue latency

positional arguments:
  min_us             minimum run queue latecy to trace, in ms (default 10000)

optional arguments:
  -h, --help         show this help message and exit
  -p PID, --pid PID  trace this PID only

examples:
    ./runqslower         # trace run queue latency higher than 10000 us (default)
    ./runqslower 1000    # trace run queue latency higher than 1000 us
    ./runqslower -p 123  # trace pid 123 only
