blob: 64b604e0602eacfe333be005e87be07c6e940a6c [file] [log] [blame]
Ivan Babrou5c48a3f2018-05-08 17:24:19 -07001Demonstrations 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
Dmitry Dolgov97aeee92018-06-05 21:27:06 +020028These delays can be analyzed in depth with "perf sched" tool, see:
Ivan Babrou5c48a3f2018-05-08 17:24:19 -070029
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