.TH IOPS 8
.EQ
delim $$
.EN
.SH NAME
iops \- measure IOPS and throughput
.SH SYNOPSYS
.B disk/iops
[
.B -v
[
.B rws
] [
.B -p
.I prog
] ... [
.I file
...
.SH DESCRIPTION
.I Iops
uses a command-line specified programs to generate an I/O pattern
to measure I/O throughput and IOPS on the given files. Each program
is run on each file. Programs,
specified with
.BR -p ,
consist of single-character op codes, some with a postfix argument.
The opcodes either do I/O or manipulate the internal registers, which
are:
.TF offset
.TP
.B offset
The base offset int the file. I/O is at byte location
$o + roman lba * ss$. The initial value is 0.
.TP
.B ss
The sector size. The initial value is 512.
.TP
.B lba
The current sector. The initial value is 0.
.PD
.PP
The
.B size
of the file is determined by
.I dirstat
(see
.IR stat (2)).
Neither loops nor timing nest.
Whitespace is ignored.
The op codes are
.TF z\fIsize\fP
.TP
.B :\fIn\fP
Begin loop of
.I n
iterations.
.TP
.B ;
End loop.
.TP
.B {
Begin timing.
.TP
.B }
End timing. Print the elapsed time time, read, write, and combined
throughput and iops.
.TP
.B o\fIn\fP
Set the
.B offset
register to
.IR n .
.TP
.B z\fIss\fP
Set the
.B ss
register to
.IR ss .
.TP
.B r
Read one sector.
.TP
.B w
Write one sector.
.TP
.B s=\fIn\fR
Set the lba register to
.IR n .
.TP
.B sr
Set a random lba in the file. The maximum lba
is $( roman "size" - o)/ss$.
.TP
.B s\fIn\fR
Increment the lba by
.I n
sectors.
.PD
.PP
The
.B -v
flag prints debugging information based on its arguments;
.B s
prints the
.B lba
after a seek,
.B r
prints the
.B lba
of a read, and
.B w
prints the
.B lba
of a write.
.SH SOURCE
.B /sys/src/cmd/disk/iops.c
.SH BUGS
No nesting. Output is pre-divided.
|