nfsslower(8)
π
nfsslower(8) β System Manager's Manual, but make it cute π
okay so bestie, this is nfsslower(8): it traces slow NFS file operations and gives you per-event details. Itβs giving βNFS detective with receiptsβ energy π΅οΈββοΈβ¨
π NAME π
nfsslower β traces slow NFS file operations, with per-event details.
πΈ SYNOPSIS πΈ
nfsslower [-h] [-j] [-p PID] [min_ms]
β¨ DESCRIPTION β¨
This tool traces the common NFSv3 & NFSv4 file operations: reads, writes, opens, and getattrs. It measures how long those operations take, then prints the deets for every single one that exceeded your threshold. π
β οΈ WARNING: See the OVERHEAD section. Do not skip it, bestie.
By default, the minimum millisecond threshold is 10. If you use a threshold of 0, every event gets printed β warning: verbose. Like, very verbose. π
Since this works by tracing the nfs_file_operations interface functions, it will need updating to match any changes to those functions.
This tool uses kprobes to instrument the kernel for entry and exit information. In the future, a preferred way would be to use tracepoints. RN there arenβt any tracepoints available for nfs_read_file, nfs_write_file and nfs_open_file, while nfs_getattr does have entry and exit tracepoints β but we chose to use kprobes for consistency.
Since this uses BPF, only the root user can use this tool. No root, no vibes π
π§ REQUIREMENTS π§
CONFIG_BPF and bcc.
π OPTIONS π
-hβ it appears in the synopsis; the original OPTIONS list doesnβt give it its own description, so Iβm not out here inventing behavior π«Ά-p PIDβ trace this PID only. π―-jβ trace output in CSV format. CSV girlie era β¨min_msβ minimum I/O latency (duration) to trace, in milliseconds. Default is10 ms. β±οΈ
π EXAMPLES π
- Trace synchronous file reads and writes slower than
10 ms:
# nfsslower
- Trace slower than
1 ms:
# nfsslower 1
- Trace slower than
1 ms, and output just the fields in parsable format (CSV):
# nfsslower -j 1
- Trace all file reads and writes β warning: the output will be verbose:
# nfsslower 0
- Trace slower than
1 ms, for PID181only:
# nfsslower -p 181 1
π FIELDS π
TIME(s)
Time of I/O completion since the first I/O seen, in seconds. β°
COMM
Process name.
PID
Process ID.
T
Type of operation. R == read, W == write, O == open, G == getattr.
OFF_KB
File offset for the I/O, in Kbytes.
BYTES
Size of I/O, in bytes.
LAT(ms)
Latency (duration) of I/O, measured from when it was issued by VFS to the filesystem, to when it completed. This time is inclusive of RPC latency, network latency, cache lookup, remote fileserver processing latency, etc. Itβs a more accurate measure of the latency suffered by applications performing NFS read/write calls to a fileserver. π«Ά
FILENAME
A cached kernel file name (comes from dentry->d_name.name).
ENDTIME_us
Completion timestamp, microseconds (-j only).
OFFSET_b
File offset, bytes (-j only).
LATENCY_us
Latency (duration) of the I/O, in microseconds (-j only).
π OVERHEAD π
This adds low-overhead instrumentation to NFS operations, including reads and writes from the file system cache. Those reads, writes, and especially getattrs can be very frequent depending on the workload β like, 1M/sec frequent β and at that point the overhead of this tool can begin to become significant, even if it prints no "slower" events. Measure and quantify before use. If this keeps being a problem, consider switching to a tool that prints in-kernel summaries only.
This tool has been tested with NFSv3 & NVSv4 β yes, thatβs how itβs written β but it might work with NFSv{1,2}, since it is tracing the generic functions from nfs_file_operations.
Note that the overhead of this tool should be less than fileslower(8), as this tool targets NFS functions only, and not all file read/write paths.
π«Ά SOURCE π«Ά
This is from bcc.
https://github.com/iovisor/bcc
Also look in the bcc distribution for a companion nfsslower_examples.txt file containing example usage, output, and commentary for this tool.
π§ OS π§
Linux
π STABILITY π
Unstable - in development.
π AUTHOR π
Samuel Nair
π₯ SEE ALSO π₯
biosnoop(8), funccount(8), fileslower(8)
okay thatβs the whole page, bestie. Itβs filed under USER COMMANDS, dated 2017-09-01, and itβs nfsslower(8). Slay responsibly πβ¨
π¦ where this page comes from
- centos-stream 10: bcc-tools 0.36.1-1.el10 Β· Apache-2.0
- centos-stream 9: bcc-tools 0.36.1-1.el9 Β· ASL 2.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms