.TH biosnoop 8 "2015-09-16" "USER COMMANDS" .SH NAME biosnoop \- Trace block device I/O and print details incl. issuing PID. .SH SYNOPSIS .B biosnoop [\-h] [\-Q] [\-d DISK] [\-P] .SH DESCRIPTION This tools traces block device I/O (disk I/O), and prints a one-line summary for each I/O showing various details. These include the latency from the time of issue to the device to its completion, and the PID and process name from when the I/O was first created (which usually identifies the responsible process). This uses in-kernel eBPF maps to cache process details (PID and comm) by I/O request, as well as a starting timestamp for calculating I/O latency. This works by tracing various kernel blk_*() functions using dynamic tracing, and will need updating to match any changes to these functions. This makes use of a Linux 4.4 feature (bpf_perf_event_output()); for kernels older than 4.4, see the version under tools/old, which uses an older mechanism Since this uses BPF, only the root user can use this tool. .SH REQUIREMENTS CONFIG_BPF and bcc. .SH OPTIONS .TP \-h Print usage message. .TP \-Q Include a column showing the time spent queued in the OS. .TP \-d DISK Trace this disk only. .TP \-P Display block I/O pattern (sequential or random). .SH EXAMPLES .TP Trace all block device I/O and print a summary line per I/O: # .B biosnoop .SH FIELDS .TP TIME(s) Time of the I/O completion, in seconds since the first I/O was seen. .TP COMM Cached process name, if present. This usually (but isn't guaranteed) to identify the responsible process for the I/O. .TP PID Cached process ID, if present. This usually (but isn't guaranteed) to identify the responsible process for the I/O. .TP DISK Disk device name. .TP T Type of I/O: R = read, W = write. This is a simplification. .TP SECTOR Device sector for the I/O. .TP BYTES Size of the I/O, in bytes. .TP QUE(ms) Time the I/O was queued in the OS before being issued to the device, in milliseconds. .TP LAT(ms) Time for the I/O (latency) from the issue to the device, to its completion, in milliseconds. .SH OVERHEAD Since block device I/O usually has a relatively low frequency (< 10,000/s), the overhead for this tool is expected to be negligible. For high IOPS storage systems, test and quantify before use. .SH SOURCE This is from bcc. .IP https://github.com/iovisor/bcc .PP Also look in the bcc distribution for a companion _examples.txt file containing example usage, output, and commentary for this tool. .SH OS Linux .SH STABILITY Unstable - in development. .SH AUTHOR Brendan Gregg, Rocky Xing .SH SEE ALSO disksnoop(8), iostat(1)