man uaio





NAME


  uaio - Reports I/O statistics (University of Alaska replacement for iostat:
  Tru64,DU,OSF1)


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 through v4.0d.	uaio has been compiled but not thoroughly tested
  under v5.1, see NOTES below.	Suggestions for enhancements or bug reports
  can be directed to fnkac@uaf.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


  With Tru64 v5.x the device tables have changed.  This version of uaio,
  v2.3t, does compile and run under Tru64 v5.x.	 However, as of this time I
  have not deciphered how the TBL_DKINFO now corrolates to the bus structure.
  Therefore, the bus totaling is probably incorrect.  Suggestions on how to
  decipher this can be sent to fnkac@uaf.edu or kcarlson@arsc.edu.

  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).