| 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 daelays 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 |