blob: 85d2ecdc9dbd1561cf01dfa13a333870b7831b82 [file] [log] [blame]
Demonstrations of wqlat, the Linux eBPF/bcc version.
This tool traces work's waiting on workqueue, and records the distribution
of work's queuing latency (time), printing this as a histogram when Ctrl-C
is hit.
For example:
./wqlat
Tracing work queue request latency time... Hit Ctrl-C to end.
^C
usecs : count distribution
0 -> 1 : 530 |*************************** |
2 -> 3 : 775 |****************************************|
4 -> 7 : 387 |******************* |
8 -> 15 : 194 |********** |
16 -> 31 : 62 |*** |
32 -> 63 : 10 | |
64 -> 127 : 2 | |
128 -> 255 : 0 | |
256 -> 511 : 0 | |
512 -> 1023 : 0 | |
1024 -> 2047 : 0 | |
2048 -> 4095 : 0 | |
4096 -> 8191 : 1 | |
This example shows all kernel's work waiting latlency on workqueue. The range
of latency is from 1 millisecond to 8192 milliseconds(8ms). The bulk of
waiting latency is between 1us and 32us.The highest latency seen while tracing
is between 4 and 8 ms:the last row printed, for which there is 1 work
We can also specify the per workqueue option (-W), along with interval
and count parameters. Eg, printing out every 1 second, and including
timestamps(-T):
./wqlat -T -W 1 2
Tracing work queue request latency time... Hit Ctrl-C to end.
06:14:55
wqname = xfs-cil/dm-4
usecs : count distribution
0 -> 1 : 0 | |
2 -> 3 : 1 |****************************************|
4 -> 7 : 1 |****************************************|
8 -> 15 : 1 |****************************************|
[...]
06:14:56
wqname = events_power_efficient
usecs : count distribution
0 -> 1 : 0 | |
2 -> 3 : 0 | |
4 -> 7 : 2 |************************** |
8 -> 15 : 3 |****************************************|
16 -> 31 : 1 |************* |
[...]
An tracing one workqueue (-w) can be specified, along with interval
and count. Eg, printing output every 1 second, and including Timestamps(-T)
and workqueue nvmet_tcp_wq:
./wqlat -T -w nvmet_tcp_wq 1 2
Tracing work queue request latency time... Hit Ctrl-C to end.
06:18:03
usecs : count distribution
0 -> 1 : 245 |************************* |
2 -> 3 : 377 |****************************************|
4 -> 7 : 76 |******** |
8 -> 15 : 29 |*** |
16 -> 31 : 8 | |
32 -> 63 : 5 | |
06:18:04
usecs : count distribution
0 -> 1 : 547 |********************************** |
2 -> 3 : 629 |****************************************|
4 -> 7 : 83 |***** |
8 -> 15 : 23 |* |
16 -> 31 : 5 | |
32 -> 63 : 4 | |
USAGE message:
./wqlat -h
usage: wqlat [-h] [-T] [-N] [-W] [-w WQNAME] [interval] [count]
Summarize workqueue request latency as histograms.
positional arguments:
interval output interval, in seconds
count number of outputs
optional arguments:
-h, --help show this help message and exit
-T, --timestamp include timestamp on output
-N, --nanoseconds output in nanoseconds
-W, --workqueues print a histogram per work queue
-w WQNAME, --wqname WQNAME
print this workqueue only
examples:
./wqlat # summarize workqueue latency as a histogram
./wqlat 1 10 # print 1 second summaries, 10 times
./wqlat -W 1 10 # print 1 second, 10 times per workqueue
./wqlat -NT 1 # 1s summaries, nanoseconds, and timestamps
./wqlat -w nvmet_tcp_wq 1 # 1s summaries for workqueue nvmet_tcp_wq