Permalink
Cannot retrieve contributors at this time
35 lines (27 sloc)
1.75 KB
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
bpftrace/tools/biolatency_example.txt
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Demonstrations of biolatency, the Linux BPF/bpftrace version. | |
| This traces block I/O, and shows latency as a power-of-2 histogram. For example: | |
| # ./biolatency-kp.bt | |
| Attaching 3 probes... | |
| Tracing block device I/O... Hit Ctrl-C to end. | |
| ^C | |
| @usecs: | |
| [256, 512) 2 | | | |
| [512, 1K) 10 |@ | | |
| [1K, 2K) 426 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@| | |
| [2K, 4K) 230 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | | |
| [4K, 8K) 9 |@ | | |
| [8K, 16K) 128 |@@@@@@@@@@@@@@@ | | |
| [16K, 32K) 68 |@@@@@@@@ | | |
| [32K, 64K) 0 | | | |
| [64K, 128K) 0 | | | |
| [128K, 256K) 10 |@ | | |
| While tracing, this shows that 426 block I/O had a latency of between 1K and 2K | |
| usecs (1024 and 2048 microseconds), which is between 1 and 2 milliseconds. | |
| There are also two modes visible, one between 1 and 2 milliseconds, and another | |
| between 8 and 16 milliseconds: this sounds like cache hits and cache misses. | |
| There were also 10 I/O with latency 128 to 256 ms: outliers. Other tools and | |
| instrumentation, like biosnoop.bt, can shed more light on those outliers. | |
| There is another version of this tool in bcc: https://github.com/iovisor/bcc | |
| The bcc version provides options to customize the output. | |
| "biolatency.bt" is an updated version of "biolatency-kp.bt" and does basically | |
| the same thing utilizing the tracepoints instead of kprobes. |