1Demonstrations of runqslower, the Linux eBPF/bcc version.
2
3
4runqslower shows high latency scheduling times between tasks being
5ready to run and them running on CPU after that. For example:
6
7# runqslower
8Tracing run queue latency higher than 10000 us
9TIME     COMM             PID           LAT(us)
1004:16:32 cc1              12924           12739
1104:16:32 sh               13640           12118
1204:16:32 make             13639           12730
1304:16:32 bash             13655           12047
1404:16:32 bash             13657           12744
1504:16:32 bash             13656           12880
1604:16:32 sh               13660           10846
1704:16:32 gcc              13663           12681
1804:16:32 make             13668           10814
1904:16:32 make             13670           12988
2004:16:32 gcc              13677           11770
2104:16:32 gcc              13678           23519
2204:16:32 as               12999           20541
23[...]
24
25This shows various processes waiting for available CPU during a Linux kernel
26build. By default the output contains delays for more than 10ms.
27
28These delays can be analyzed in depth with "perf sched" tool, see:
29
30* http://www.brendangregg.com/blog/2017-03-16/perf-sched.html
31
32USAGE message:
33
34# ./runqslower -h
35usage: runqslower.py [-h] [-p PID] [min_us]
36
37Trace high run queue latency
38
39positional arguments:
40  min_us             minimum run queue latecy to trace, in ms (default 10000)
41
42optional arguments:
43  -h, --help         show this help message and exit
44  -p PID, --pid PID  trace this PID only
45
46examples:
47    ./runqslower         # trace run queue latency higher than 10000 us (default)
48    ./runqslower 1000    # trace run queue latency higher than 1000 us
49    ./runqslower -p 123  # trace pid 123 only
50