NVME-TOP(1)
β¨ nvme-top β NVME-TOP(1) β¨
okay so this page is from the NVMe Manual, section 1, and the main character is nvme-top. Itβs giving βtop(1) but make it NVMe,β fr fr. π
πΈ NAME πΈ
nvme-top β show live I/O statistics of the NVMe subsystems. Thatβs the whole mood, bestie. π
β¨ SYNOPSIS β¨
nvme [<global-options>] top [--delay=<seconds> | -d <seconds>]
π DESCRIPTION π
Okay so nvme-top shows the subsystems with their I/O rates, refreshed every few seconds, literally like top(1). Press Enter and it shows the namespaces, the paths and the controllers of a subsystem, with their rates, the retries and errors, the multipath failovers and the controller resets and reconnects. Iconic drill-down behavior, no cap. β¨
With --output-format=json, it takes two samples --delay seconds apart, prints the rates and the counters as one JSON document, and exits. This is the output for scripts and monitoring tools β iykyk. π«Ά
The rates come from the block layer statistics of the namespaces and the paths. A rate is per second, a latency is the average time of an I/O in milliseconds, and the utilization is the share of the interval the device was busy. The rates of a subsystem and a controller are the sum of those of their namespaces or paths, while the latency and the utilization are the highest of them. Math but make it sparkle. π
π OPTIONS π
-d <seconds>,--delay=<seconds>β the time between two refreshes, or between the two samples of the JSON output. The default is1. One second, cute and quick. β±οΈ
π GLOBAL OPTIONS π
The following options are defined at the top-level nvme command and are available to this subcommand:
--dry-runβ print the command that would be executed, but do not actually execute it. Look, donβt touch. π--no-ioctl-probingβ disable probing for 64-bit IOCTL support.--no-retriesβ disable retry logic on transient errors.-o <fmt>,--output-format=<fmt>β set the reporting format tonormal,tabular,'json, orbinary. Only one output format may be used at a time. Pick one, bestie.--output-format-version=<version>β select the output format version. Version1uses the original field naming, while version2(default) provides more consistent and script-friendly field names. Other versions are rejected. Rejected, periodt. π«--quietβ suppress informational messages. Errors are still reported, and--quietcancels any--verbosefor the library log level. Quiet luxury but for logs.--set-options=<key=value>[,<key=value>...]β set libnvme library options for this invocation. Supported keys areforce-4k,mi-probe-enabled,test-base-dirandtest-sysfs-dir.--timeout=<ms>β set the timeout for the command in milliseconds.infiniteor-1waits without a time limit (0xffffffff). No clock, no stress. β³-v,--verboseβ increase the level of detail in the output. May be specified multiple times to further increase verbosity. Spill the tea, more each time. π΅
These options can also be set as machine-wide defaults in nvme-cli.conf(5). A command-line flag always overrides the file. Flags stay winning. π
π¦ JSON OUTPUT π¦
The document has the Interval in seconds and a Subsystems array. A subsystem has its Name, NQN, HostNQN, IOPolicy, Model, Serial, Firmware and Type, its Stats, a Namespaces array and a Controllers array. So many fields, so organized. β¨
A namespace of a multipath subsystem has its Name, NSID, the RequeueIO and FailIO counts of the I/O which found no usable path, its Stats and a Paths array. A path has its Name, Controller, ANAState, NUMANodes, Qdepth, the Retries, Failovers and Errors counts and its Stats. Multipath girlies, this oneβs for you. π£οΈ
A namespace of a subsystem without multipath has its Name, NSID, Controller, the Retries and Errors counts and its Stats.
A controller has its Name, Transport, Address, State, NUMANode, the number of Paths of a multipath subsystem, the Resets, Reconnects and Errors counts and its Stats. Controller main character energy. π
The Stats of a namespace or a path are ReadIOPS, WriteIOPS, ReadLatencyMs, WriteLatencyMs, ReadBytesPerSec, WriteBytesPerSec, Inflights and UtilPercent. Those of a subsystem or a controller have MaxReadLatencyMs, MaxWriteLatencyMs and MaxUtilPercent instead of the latencies and the utilization, and no Inflights. Different Stats, same sparkle.
A counter or an attribute the kernel does not provide is left out. If the kernelβs not giving, itβs simply not in the doc. π
π EXAMPLES π
- Watch the subsystems, refreshed every 2 seconds:
# nvme top --delay=2
- Print the rates over 5 seconds as JSON:
# nvme top --delay=5 --output-format=json
π NVME π
Part of the nvme-user suite. Suite life, literally. π
xoxo, bestie π this page comes from the NVMe Manual β source/version: NVMe, date: 10/30/2026, manual page: NVME-TOP(1). π«Άβ¨
π¦ where this page comes from
- arch rolling: nvme-cli 3.2-1 Β· GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms