uaio
NAME
uaio - Reports I/O statistics (University of Alaska replacement for iostat)
SYNOPSIS
uaio [-options] [drive ...] [interval] [count]
DESCRIPTION
The uaio command reports the following information:
+ Total and for each disk, the number of transfers per second, kilobytes
transferred per second, and|or the average milliseconds per transfer
(DU v4.0+);
+ For the system, the percentage of time the system has spent in user
mode, in user mode running low priority (nice) processes, in system
mode, in wait mode, and idling.
+ With one of the summary options, values for the duration of sleep *
iterations are reported.
uaio is a rewrite of Digital UNIX iostat with additional functionality,
including:
"proper" display of non-LUN-0 devices (e.g., HSZ40);
summary displays (by controller/bus and total);
play-back capability for re-summarizing logged executions;
support under DU v4.0 for average service time (ms/transfer);
display options for vertical or horizontal;
display options for kbytes, transfers, or rates;
some other fluff features.
uaio also replaces uaiostat (formerly uak_iosts). uaio was written from
scratch so the source could be distributed. uaio has been tested under DU
v3.2g and v4.0b. Suggestions for enhancements or bug reports can be
directed to dutools@ts.sois.alaska.edu.
ARGUMENTS
drive...
Forces uaio to display specific drives. With -e option in effect
specific drives are excluded. If no drives are specified the first 12
drives found are displayed. Drive names can be masked with standard
wild-card characters, such as 'rz2?' or 'rz*57'.
interval
Causes uaio to report once each interval seconds. The first report is
for all time since a reboot, and each subsequent report is for the
last interval only.
count
Specifies the number of intervals reports. For example, uaio 1 10
would produce 10 reports at 1-second intervals (as well as the since
reboot line). You cannot specify count without interval because the
first numeric argument to uaio is assumed to be interval.
OPTIONS
General options
-t display transfers (count vs. rate);
Default display is ' kbs tps', display just transfers as a count
vs. per second.
-k display kbytes (count vs. rate);
Default display is ' kbs tps', display just kbytes as a count vs.
per second.
-a display average service time (ms/transfer), DU v4.0+ only;
Default display is ' kbs tps', display ms/transfers.
-S Summary (full);
Display a full summary including ' kbs tps', transfers, kbytes, and
ms/trans (DU v4.0+). Also include a horizontal summary display.
-f x file replay option;
Will read horizontal summary displays to re-calculate summaries.
Useful for comparing io rates from multiple logged executions.
Note, -N(arrow) displays canNOT be summarized.
Vertical display options
-p N page size (vertical display);
Specify the number of intervals before new headers are printed.
iostat default was 15, uaio default is 60.
-m N maximum number of disks to display (vertical);
Number of disks to display, iostat default was 4, uaio default is
12. 132 column displays can see 12 disks (plus totals and cpu
stats). 80 column display can see 6 disks (plus totals and cpu
stats). The tty statistics have been removed from uaio. If more
drives are specified than the maximum then all requested drives
will be displayed.
-i display only intervals (no since boot line).
-w display when sampled instead of total io.
-n narrow vertical display (5 bytes vs. 8 bytes per disk);
Reduces columns per disk from 8 to 5 so more can fit on display.
The 'since boot' line is disabled with this (implied -i). Values
greater than 99999 are displayed with 'k' (kilo), 'm' (mega), or
'g' (giga) following a 4 digit value. Note the horizontal -N
option implies -n.
-e exclude (specified disks are excluded vs. included);
Specify disks listed should *not* be included.
-s summary;
Include a summary of all intervals upon completion or receipt of a
HUP signal.
Horizontal display options (more disks|detail);
-N Narrow horizontal display (5 bytes vs. 8 bytes per disk);
This option implies -S and -i and also eliminates totals for
transfers and kbytes. With this option 14 intervals can be
displayed on a 132 column screen. Values greater than 99999 are
displayed with 'k' (kilo), 'm' (mega), or 'g' (giga) following a 4
digit value.
-h N horizontal display, number of intervals to display;
Only 6 (default) will fit on a 132 column display.
-v vertical display (default except when -h);
Miscellaneous options
-D Debug (print program diagnostic information).
-? terse help message.
EXAMPLES
"Classic" iostat (with -m4 to reduce display):
# uaio -m4
970515.081851 Sleep:1 Iterations:0
Total rz0 rz25 rz26 rz27 cpu
kbs tps kbs tps kbs tps kbs tps kbs tps us ni sy wa id
922 48 . . 128 10 83 4 151 8 15 0 9 7 69
Display transfers and exclude a disk:
# uaio -m4 -t -e rz0
970515.082013 Sleep:1 Iterations:0
Total rz25 rz26 rz27 rz28 cpu
transfer transfer transfer transfer transfer us ni sy wa id
16399046 3460951 1480353 2856356 652932 15 0 9 7 69
Display kilobytes and mask disks:
# uaio -m1 -k rz*57
970515.082113 Sleep:1 Iterations:0
Total rzb57 rzc57 cpu
kbytes kbytes kbytes us ni sy wa id
308736m 56951954 31962769 15 0 9 7 69
Display average service time (DU v4.0b system):
# uaio -a
970515.082435 Sleep:1 Iterations:0
Total rz0 rz1 rz2 rz3 cpu
ms/trans ms/trans ms/trans ms/trans ms/trans us ni sy wa id
13.95 13.40 15.51 14.41 20.11 6 4 11 2 77
Vertical summary and narrow (for one minute):
# uaio -m1 -nts rz2* rz*57 15 4
970515.082929 Sleep:15 Iterations:4
Total rz25 rz26 rz27 rz28 rzb57 rzc57 cpu
transfer trans trans trans trans trans trans us ni sy wa id
3604 75 962 314 84 1453 324 46 0 10 0 44
1316 86 247 98 14 3 147 46 0 8 0 46
1491 237 28 231 84 13 236 64 0 25 0 11
2014 247 701 194 19 4 591 56 0 18 0 26
970515.083029 Summary: 60 elapsed seconds (Sleep:15 Iterations:4)
Total rz25 rz26 rz27 rz28 rzb57 rzc57 cpu
transfer trans trans trans trans trans trans us ni sy wa id
8425 645 1938 837 201 1473 1298 53 0 15 0 32
Narrow full Summary (horizontal display, DU v4.0b):
# uaio -SNt 60 2
970515.101120 Sleep:60 Iterations:2
Total rz0 rz1 rz2 rz3 cpu
transfer trans trans trans trans us ni sy wa id
151 78 . 1 72 3 0 6 0 91
537 534 . . 3 3 0 7 0 90
970515.101320 Summary: 120 elapsed seconds (Sleep:60 Iterations:2)
Total rz0 rz1 rz2 rz3 cpu
kbs tps tps tps tps tps us ni sy wa id
171 6 5 . . 1 3 0 7 0 90
688 612 . 1 75 :Transfers
20504 19816 . 8 680 :kBytes
13.11 12.59 . 30.00 17.09 :Millisec.
boot: 97/05/02 12:07:42 moka 1*125 | 60 60
97/05/15 10:11:20 V4.0 120 |10.21 10.22
transfer tps transfer tps trans trans
Bus# 0: 4: 1622255 1 688 6 151 537
Disk rz0 : 1011252 1 612 5 78 534
Disk rz1 : 144889 0 . . . .
Disk rz2 : 446430 0 1 . 1 .
Disk rz3 : 19684 . 75 1 72 3
cpu User 65570.1 6% 3.8 3% 3% 3%
cpu Nice 44714.1 4% 0.0 0% 0% 0%
cpu System 122565.7 11% 7.8 7% 6% 7%
cpu Wait 18461.3 2% 0.0 0% 0% 0%
cpu Idle 864923.7 77% 108.4 90% 91% 90%
Playback of logged files:
# uaio -f "`ls ~sxsysu/stats/uaio.970514*`" -h2
Boot: 97/05/11 09:05:47 glacier 4*437 | 7201 : 3601 3600
97/05/14 07:00:07 V3.2 | Seconds | 08:00:08 09:00:08
transfer tps kbytes kbs kbs tps ... kbs tps kbs tps
Bus# 0: 1: . . . . . . . . . .
Bus# 3: 4: 5403519 21 85696465 341 926 48 681 41 1172 55
Bus# 6: 4: 241591 1 14586948 58 56 1 52 1 61 1
Bus# 7: 5: 4847020 19 93963470 373 734 49 893 44 574 54
Total 4: 14: 10492130 42 189694m 754 1999 98 1587 85 2411 110
Disk rz0 : . . . . . . . . . .
Disk rz25 : 2243872 9 28605972 114 99 8 66 5 133 11
Disk rz26 : 939246 4 17557185 70 340 18 315 16 364 19
Disk rz27 : 1800815 7 30283161 120 418 19 266 17 570 21
Disk rz28 : 419586 2 9250147 37 69 3 33 2 105 4
Disk rz48 : 63787 0 3743665 15 13 0 18 0 9 0
Disk rz49 : 57513 0 3606617 14 13 0 9 0 17 0
Disk rz50 : 57261 0 3603649 14 13 0 9 0 17 0
Disk rz51 : 63030 0 3633017 14 17 0 17 0 17 0
Disk rzb57 : 983783 4 33959994 135 202 7 190 6 214 7
Disk rzc57 : 1421823 6 19987105 79 193 12 166 9 221 14
Disk rz58 : 780931 3 14704481 58 293 11 230 11 356 11
Disk rz59 : 805446 3 10576545 42 102 8 73 6 131 10
Disk rz60 : 855037 3 14735345 59 275 12 235 11 315 12
cpu User 137296.0 14% | 7266.1 25% 2568.2 4697.9
cpu Nice 1038.8 0% | 0.8 0% 0.0 0.8
cpu System 79503.2 8% | 3439.9 12% 1171.6 2268.3
cpu Wait 58627.1 6% | 0.0 0% 0.0 0.0
cpu Idle 730189.6 73% | 18095.9 63% 10661.6 7434.3
[...]
ACKNOWLEDGEMENTS
While uaio was written from scratch at the University of Alaska to emulate
iostat behaviour for basic features, additional thanks are owed for:
+ Source for disk identification was "borrowed" from the monitor utility
available from Digital's FTP site for free software.
Thanks to Alan Rollow for providing the monitor code which includes a
wealth of practical examples of coding as well as being a very useful
utility.
+ Also, thanks to (from iostat copyright notice):
``This product includes software developed by the
University of California, Berkeley and its contributors''
for the original iostat distribution (conceptual basis of uaio).
RESTRICTIONS / NOTES
Reference uashodev for DU v3.2 vs. v4.0 device identification differences
and naming restrictions. Effective with v1.3 're' disks (swxcr based) are
recognized.
Note, for I/O performance evaluations long averages may entirely mask a
bottleneck. I/O rates since boot time are generally useless other than
looking at aggregate I/O balancing. For example, hourly averages may show
relatively low I/O load on a disk or bus but you may experience erratic
performance in a database application caused by burst I/O rate contention
on a device (such as a periodic journal roll). For isolating burst I/O
problems, logging "classic" vertical display for all pertinent disks with a
small interval (like a minute) with a longer period summary (like an hour)
is a Good Idea. A sample script, uaio.ksh, is provided in the uaio distri-
bution. Also, properly configured UBC can dramatically affect I/O perfor-
mance.
The 'Bus#' sub-totals refer to scsi bus# (controller #). The 'Ctl#' sub-
totals refer to non-scsi controller numbers in a relative form. Since the
disks are sorted by controller type then by unit number you may be able to
determine relative controller by the order of the disks, otherwise to
determine which controller will require use of uashodev.
RELATED INFORMATION
Commands: vmstat(1), iostat(1), uashodev(8).