biotop(8)

πŸ“¦
version 0.36.1 Β· 2 versions
, in alpine 3.24, nixpkgs unstable

πŸ’… biotop(8) β€” System Manager's Manual energy πŸ’…

okay bestie, this is biotop(8) from the System Manager's Manual, and it is literally here to show you disk I/O by process. Group-chat top, but for block devices. 🫢

🌸 NAME 🌸

biotop β€” Block device (disk) I/O by process top.

✨ SYNOPSIS ✨

biotop [-h] [-C] [-r MAXROWS] [-p PID] [interval] [count]

Yep, -h is right there in the synopsis, and the original OPTIONS list below sticks to what it spells out. No invented lore, bestie. πŸ’–

🌈 DESCRIPTION 🌈

This is top for disks. No cap.

It traces block device I/O (disk I/O) and prints a per-process summary every interval β€” by default, 1 second. The summary is sorted on the top disk consumers by throughput (Kbytes). The PID and process name shown are measured from when the I/O was first created, which usually identifies the responsible process.

For efficiency, 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, and the final summary.

It works by tracing various kernel blk_*() functions using dynamic tracing, and it will need updating to match any changes to these functions.

⚠️ Since this uses BPF, only the root user can use this tool. That part is not a vibe check β€” it's a requirement.

πŸŽ€ REQUIREMENTS πŸŽ€

CONFIG_BPF and bcc. That's the whole list. ✨

πŸ’… OPTIONS πŸ’…

  • -C β€” Don't clear the screen. Your screen stays exactly where it is, bestie.
  • -r MAXROWS β€” Maximum number of rows to print. Default is 20.
  • -p PID β€” Trace this PID only.
  • interval β€” Interval between updates, seconds.
  • count β€” Number of interval summaries.

πŸ¦‹ EXAMPLES πŸ¦‹

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

# biotop

Don't clear the screen:

# biotop -C

5 second summaries, 10 times only:

# biotop 5 10

🌸 FIELDS 🌸

  • loadavg β€” The contents of /proc/loadavg.
  • PID β€” Cached process ID, if present. This usually, but isn't guaranteed, identifies the responsible process for the I/O.
  • COMM β€” Cached process name, if present. This usually, but isn't guaranteed, identifies the responsible process for the I/O.
  • D β€” Direction: R == read, W == write. This is a simplification.
  • MAJ β€” Major device number.
  • MIN β€” Minor device number.
  • DISK β€” Disk device name.
  • I/O β€” Number of I/O during the interval.
  • Kbytes β€” Total Kbytes for these I/O, during the interval.
  • AVGms β€” Average time for the I/O (latency) from the issue to the device, to its completion, in milliseconds.

πŸ”₯ OVERHEAD πŸ”₯

Since block device I/O usually has a relatively low frequency (< 10,000/s), the overhead for this tool is expected to be low or negligible. For high IOPS storage systems, test and quantify before use. That's the responsible main-character move. πŸ‘‘

🧚 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. iykyk. πŸ’œ

⭐ OS ⭐

Linux.

🌈 STABILITY 🌈

Unstable - in development. She's still cooking, bestie. πŸ“

πŸ’– AUTHOR πŸ’–

Brendan Gregg, Rocky Xing.

πŸŽ€ INSPIRATION πŸŽ€

top(1) by William LeFebvre.

🫢 SEE ALSO 🫢


Cute sign-off: this page is filed under USER COMMANDS, dated 2016-02-06, and it's the biotop(8) page from bcc. Periodt. πŸ’…βœ¨

πŸ“¦ where this page comes from