As with most of the monitoring commands, the first line of
iostat reflects a summary of statistics since boot time.
To look at meaningful real-time data, run
iostat with a
time step (eg
iostat 30) and look at the lines that report
summaries over the time step intervals.
For Solaris 2.6 and higher, use
iostat -xPnce 30 to get
information including the common device names of the disk partitions,
CPU statistics, error statistics, and extended disk statistics.
For Solaris 2.5.1 and earlier, or for more compact output, use
iostat -xc 30 to get the extended disk and CPU statistics.
In either case, the information reported is:
- disk: Disk device name.
- r/s, w/s: Average reads/writes per second.
- Kr/s, Kw/s: Average Kb read/written per second.
- wait: Time spent by a process while waiting for block
(eg disk) I/O to complete. (See Notes on Odd Behavior
- actv: Number of active requests in the hardware queue.
- %w: Occupancy of the wait queue.
- %b: Occupancy of the active queue with the device busy.
- svc_t: Service time (ms). Includes everything: wait time,
active queue time, seek rotation, transfer time.
- us/sy: User/system CPU time (%).
- wt: Wait for I/O (%).
- id: Idle time (%).
The "wait" time reported by
iostat refers to time spent
by a process while waiting for block device (such as disk) I/O to
finish. In Solaris 2.6 and earlier, the calculation algorithm sometimes
overstates the problem on multi-processor machines, since it does not
take into account that an I/O wait on one CPU does not mean that I/O
is blocked for processes on the other CPUs. Solaris 7 has corrected
iostat also sometimes reports excessive
(service time) readings for disks that are very inactive. This is due
to the action of
fsflush keeping the data in memory and
on the disk up-to-date. Since many writes are specified over a very
short period of time to random parts of the disk, a queue forms briefly,
and the average service time goes up.
svc_t should only
be taken seriously on a disk that is showing 5% or more activity.