Section 8 · System administration

bcc-filetop.8

Package: bcc-tools

On this page

filetop

NAME
SYNOPSIS
DESCRIPTION
REQUIREMENTS
OPTIONS
EXAMPLES
FIELDS
OVERHEAD
SOURCE
OS
STABILITY
AUTHOR
INSPIRATION
SEE ALSO


NAME

filetop − File reads and writes by filename and process. Top for files.

SYNOPSIS

filetop [−h] [−a] [−C] [−r MAXROWS] [−s {reads,writes,rbytes,wbytes}] [−p PID] [−−read-only] [−−write-only] [interval] [count]

DESCRIPTION

This is top for files.

This traces file reads and writes, and prints a per-file summary every interval (by default, 1 second). By default the summary is sorted on the highest read throughput (Kbytes). Sorting order can be changed via -s option. By default only IO on regular files is shown. The -a option will list all file types (sockets, FIFOs, etc). Only read or only write operations can be traced using —read-only or —write-only options respectively. By default both are traced. Using both options at once will raise an Exception.

This uses in-kernel eBPF maps to store per process summaries for efficiency.

This script works by tracing the __vfs_read() and __vfs_write() functions using kernel dynamic tracing, which instruments explicit read and write calls. If files are read or written using another means (eg, via mmap()), then they will not be visible using this tool. Also, this tool will need updating to match any code changes to those vfs functions.

This should be useful for file system workload characterization when analyzing the performance of applications.

Note that tracing VFS level reads and writes can be a frequent activity, and this tool can begin to cost measurable overhead at high I/O rates.

Since this uses BPF, only the root user can use this tool.

REQUIREMENTS

CONFIG_BPF and bcc.

OPTIONS

−aInclude non-regular file types (sockets, FIFOs, etc).
−CDon’t clear the screen.

−r MAXROWS

Maximum number of rows to print. Default is 20.

−s {reads,writes,rbytes,wbytes}

Sort column. Default is rbytes (read throughput).

−p PIDTrace this PID only.

−−read-only

Trace read operations only

−−write-only

Trace write operations only

interval

Interval between updates, seconds.

countNumber of interval summaries.

EXAMPLES

Summarize block device I/O by process, 1 second screen refresh:

filetop

Don’t clear the screen, and top 8 rows only:

filetop -Cr 8

5 second summaries, 10 times only:

filetop 5 10

FIELDS

loadavg:

The contents of /proc/loadavg

PIDProcess ID.
COMMProcess name.
READSCount of reads during interval.
WRITESCount of writes during interval.
R_KbTotal read Kbytes during interval.
W_KbTotal write Kbytes during interval.
TType of file: R == regular, S == socket, O == other (pipe, etc).
FILEFilename.

OVERHEAD

Depending on the frequency of application reads and writes, overhead can become significant, in the worst case slowing applications by over 50%. Hopefully for real world workloads the overhead is much less — test before use. The reason for the high overhead is that VFS reads and writes can be a frequent event, and despite the eBPF overhead being very small per event, if you multiply this small overhead by a million events per second, it becomes a million times worse. Literally. You can gauge the number of reads and writes using the vfsstat(8) tool, also from bcc.

SOURCE

This is from bcc.

https://github.com/iovisor/bcc

Also look in the bcc distribution for a companion _examples.txt file containing example usage, output, and commentary for this tool.

OS

Linux

STABILITY

Unstable - in development.

AUTHOR

Brendan Gregg

INSPIRATION

top(1) by William LeFebvre

SEE ALSO

vfsstat(8), vfscount(8), fileslower(8)