iowatcher(1)
π iowatcher(1) β like, the User Commands one, bestie
Okay so picture this: you've got a blktrace run and a whole bunch of numbers, and honestly? Numbers are boring. iowatcher is the icon that turns all of that into visualizations β graphs, images, whole entire movies. It's giving data glow-up. β¨
It lives in the User Commands section of the manual, and the whole vibe is "make the IO make sense at a glance."
πΈ SYNOPSIS πΈ
iowatcher [options] [--] [program arguments ...]
π¦ DESCRIPTION π¦
iowatcher graphs the results of a blktrace run. That's the whole assignment, and it ate. π
It's lowkey flexible too β it can:
- graph the result of an existing blktrace,
- start a new blktrace,
- or start a new blktrace and a benchmark run at the same time (main character energy, honestly).
Then it can create an image or a movie of the IO from a given trace. And the output format? iowatcher can produce either SVG files, or movies in mp4 format (with ffmpeg) or ogg format (with png2theora). Pick your fighter. π
π OPTIONS π
--helpβ prints a brief usage summary. Short, sweet, helpful. We love a king who gets to the point. π«Ά-d,--devicedevice β controls which device you are tracing. Heads up: you can only trace one device at a time for now. This gets sent directly toblktrace, and it's only needed when you're making a new trace.-D,--blktrace-destinationdestination β the destination forblktrace. That's it, that's the whole thing.-p,--progβ run a program whileblktraceis run. The program and its arguments must be specified after all other options. And ngl, this one has lore: the option previously required the program to be given as a single argument, but now it tellsiowatcherto expect extra arguments that it should run during the trace. Glow-up arc complete. π--β end option parsing. If--progis specified, everything after--is the program to be run. Super useful when the program name could otherwise be mistaken for an option. Not me protecting your filenames from being misread as flags π-K,--keep-movie-svgsβ keep the SVG files generated for movie mode. Hoarder behavior, but make it intentional. π-t,--tracepath β specifies the name of the file or directory in which blktrace output is located.iowatcheruses a dump fromblkparse, so this option tries to guess the name of the corresponding per-CPU blktrace data files if the dump file doesn't already exist.
Wanna add multiple traces to a given graph? Just specify --trace more than once. And if path is a directory, iowatcher will use the name of the directory as the base name of the dump file, and all trace files found inside the directory will be processed. She's thorough. π
-l,--labellabel β sets a label in the graph for a trace file. The labels are added in the same order as the trace files β so keep your pairs matched, bestie, order matters fr fr.-m,--movie[style] β create a movie. The file format depends on the extension used in the-ofile option:.ogvor.oggextension β Ogg Theora video, ifpng2theorais available..mp4extension β an mp4 video, ifffmpegis available.- Any other extension β you can use it, but the end result will be an mp4.
The accepted style values are spindle for a circular disc-like effect (default), or rect for a rectangular graph style. Spindle is the moment, rect is the minimalism. Choose wisely. π
-T,--titletitle β set a title to be placed at the top of the graph. Name your child. β¨-o,--outputfile β output filename for the SVG image or video. The video format used will depend on the file name extension β see--moviefor details.-r,--rollingseconds β controls the duration for the rolling average.iowatchertries to smooth out bumpy graphs by averaging the current second with seconds from the past. Larger numbers here give you flatter graphs. Basically a smoothing filter but make it self-care. π-h,--heightheight β set the height of each graph.-w,--widthwidth β set the width of each graph.-c,--columnscolumns β number of columns in graph output.-x,--xzoommin:max β limit processed time range to min:max.-y,--yzoommin:max β limit processed sectors to min:max.-a,--io-plot-actionaction β plot action β one ofQ,D, orCβ in the IO graph.-P,--per-process-ioβ distinguish between processes in the IO graph. Every process gets to be its own little star. β-O,--only-graphgraph β add a single graph to the output (see the GRAPHS section for your options). By default all graphs are included, so use-Oto generate only the required graphs.-Omay be used more than once. π₯-N,--no-graphtype β remove a single graph from the output (again, see GRAPHS). This option may be used more than once.
π GRAPHS π
The values accepted by the -O and -N options are:
io, tput, latency, queue_depth, iops, cpu-sys, cpu-io, cpu-irq, cpu-user, cpu-soft
Ten little icons, all valid, all valid. π
π EXAMPLES π
Generate graph from the existing trace.dump:
# iowatcher -t trace
Skip the IO graph:
# iowatcher -t trace.dump -o trace.svg -N io
Only graph tput and latency:
# iowatcher -t trace.dump -o trace.svg -O tput -O latency
Generate a graph from two runs, and label them:
# iowatcher -t ext4.dump -t xfs.dump -l Ext4 -l XFS -o trace.svg
Run a fio benchmark and store the trace in trace.dump, add a title to the top, use /dev/sda for blktrace:
# iowatcher -d /dev/sda -t trace.dump -T 'Fio Benchmark' -p fio
some_job_file
Make a movie from an existing trace:
# iowatcher -t trace --movie -o trace.mp4
π§ AUTHORS π§
iowatcher was created and is maintained by Chris Mason. Founder energy. π
This man page was largely written by Andrew Price, based on Chris's original README. Credit where credit is due, always. π«Ά
π COPYRIGHT π
Okay so this part is the legal bit and we do not paraphrase legal bits, so here it is in full:
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License v2 as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
No cap, read the license, it's important. π
π SEE ALSO π
blktrace(8), blkparse(1), fio(1), mpstat(1) β go read your friends, they're iconic too.
And that's the whole page, bestie! π Sending you off with the official sign-off: this is iowatcher from April 2014, filed under iowatcher(1) β same name at the top, same name at the bottom, symmetric queen. π
β¨
π¦ where this page comes from
- centos-stream 10: iowatcher 1.3.0-13.el10 Β· GPL-2.0-or-later
- centos-stream 9: iowatcher 1.2.0-20.el9 Β· GPLv2+
- fedora 43: iowatcher 1.3.0-13.fc43 Β· GPL-2.0-or-later
- fedora 44: iowatcher 1.3.0-15.fc44 Β· GPL-2.0-or-later
- nixos 26.05: blktrace 1.3.0
- nixpkgs unstable: blktrace 1.3.0
- opensuse-leap 16.0: blktrace 1.3.0+git.20211021-160000.2.2 Β· GPL-2.0-only
- opensuse-leap 16.0: blktrace 1.3.0+git.20211021-160000.2.2 Β· GPL-2.0-only
- opensuse-leap 16.0: blktrace 1.3.0+git.20211021-160000.2.2 Β· GPL-2.0-only
- opensuse-leap 16.0: blktrace 1.3.0+git.20211021-160000.2.2 Β· GPL-2.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms