| 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 |
| |
| Note: Showing TID (thread id) in the report column. The smallest |
| execution unit becomes a TID when using the --pid flag as |
| in that case the tool reports not only the parent pid but |
| its children threads as well. |
| |
| Tracing run queue latency higher than 10000 us. |
| |
| TIME COMM TID 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 | -t TID] [min_us] |
| |
| Trace high run queue latency |
| |
| positional arguments: |
| min_us minimum run queue latency to trace, in us (default 10000) |
| |
| optional arguments: |
| -h, --help show this help message and exit |
| -p PID, --pid PID trace this PID only |
| -t TID, --tid TID trace this TID only |
| -P, --previous also show previous task name and TID |
| |
| 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 |
| ./runqslower -t 123 # trace tid 123 (use for threads only) |
| ./runqslower -P # also show previous task comm and TID |