Help file for DISKPERF



DiskPerf tests the speed of a disk drive or set of disk drives.

It has three kinds of tests:

    ACCESSTEST ... tests serial, random, and other kinds of
                   read access times.

    BUFFERTEST ... tests the affect of buffer sizes (size of
                   read request) on serial reads.

    SPINNERTEST... tests the affects of interleave on
                   serial reads.

The RANDOM, SAME, SERIAL, SERIAL100, STEADY1, and WORST commands
all run subsets of the ACCESSTEST.

If run with an INFO string, that command is executed, and then
DiskPerf terminates.

A quick test can be done via:  TEST ALL


NOTE: DiskPerf does not do "write" tests, so it will not change
your data!


Commands:

   CHECKDISK ldev#

      Reports if DiskPerf thinks the specified disk drive is
      accessible.

   CONTACT

      Displays contact information for Allegro Consultants, Inc.

   DEDUCESIZE ldev [BOTH] [[no]MPE] [[no]TRIAL]}

      Although primarily a debugging command, DEDUCESIZE can be
      used to check the size of a disk drive.  There are two
      methods DiskPerf can use: (1) ask MPE, and (2) trial and
      error.  The default is TRIAL.

      TRIAL will try to read a page.  If it succeeds, it adds a
      large increment to the disk address and tries again.
      Whenever it fails, it reverts to the prior successful disk
      address and reduces the size of the increment.  When the
      increment is 1, and the next read fails, we know we have
      reached the last page of the disk.  NOTE: this option can
      generate errors logged into the system log file (type 111
      errors).  These are not serious errors, but they may
      mislead Predictive Support.

      MPE simply asks MPE/iX how big it thinks the disk is.

      BOTH does both MPE and TRIAL.

   DISABLELDEV [ldev] [NONE]

      DISABLELDEV with an LDEV tells DiskPerf to never look at
      the specified LDEV.  (Multiple LDEVs may be disabled.)
      (May be specified via the INFO string.)

      Normally, you would never use the DISABLELDEV command.
      However, in some cases, MPE may have a disk drive (or a
      CD-ROM drive) tied up in such a manner that DiskPerf hangs
      at startup, or during a FIND command.  If this is
      happening, break/abort DiskPerf and re-run it with
      INFO="SHOWFIND".  Once the problem LDEV is identified,
      break/abort DiskPerf and run it with INFO="DISABLE ldev#".

      DISABLELDEV NONE erases the list of disabled LDEVs.

      DISABLELDEV with no parameters reports the list of disabled
      LDEVs.

   DSTAT   [ALL | disklist]  [DETAIL]

      DSTAT shows all accessible disk drives.  Note: the first
      time this is done, we'll wait up to 4 seconds for each
      inaccessible drive.

      DSTAT DETAIL reports extra low-level information about each
      disk.

      By default, all disk LDEVs will be shown.  You may specify
      a list of specific LDEVs if desired.

   ECHO ..text...

      Echoes the rest of the line back to the terminal.  Useful
      in a USE file, to inform the user what the commands in the
      USE file are about to do.

   Exit           (or: //)

   FINDdisks      [ <slow |="" fast=""> ]    [QUIET]

      Does a new search for online disk drives.  An implied
      "FINDDISKS FAST QUIET"  is done at startup of DiskPerf.
      Typically, this would be used if you think a disk drive
      went online or offline since DiskPerf started.

      A disk is considered to be accessible if:

         it's online; and we can determine the disk size
                      and we can determine the hardware path.

      Note: by default, the "slave" half of a mirrored disk pair
      is considered just interesting as the master mirror disk.
      (This can be changed via:  RESET MIRRORS)

      Normally, DiskPerf will not look at disks that are
      configured via Sysgen, but are not currently mounted.  A
      "FIND SLOW" tells DiskPerf to try accessing such drives,
      which will cause about a five second pause for each such
      drive that is not spinning.

   FORK disklist  [SERIAL | SERIAL100 | SAME | RANDOM |
                   STEADY1mb | WORST]
                  [QUIET] [WAIT] [MAXSECS #]

      Forks a child process, which does continuous reads (of the
      type specified, default is SERIAL).  One process is forked
      for each disk specified.

      The WAIT option causes the child to wait until the parent
      gives it permission to start.  The "GO" command is used to
      issue that permission.

   GO [#seconds] [WAIT]

   Help  [keyword]      (or:  ?  [keyword])

      Displays the help information.  If a keyword is specified,
      displays only those sections of the help file that match
      the keyword.  (e.g.: HELP PAGE)

   IGNOREDISK ldevlist

      Deletes the specified LDEVs from further consideration
      by DiskPerf.
      IGNOREDISK takes affect immediately.
      Note: a "IGNOREDISK" can be undone by a "FIND" command.

   KILLREAD  rid [[no]CANCEL]  [[no]BROKEN]

      Kills the specified I/O request.
      Default: CANCEL, NOBROKEN

      See STARTREAD.

   LIFLS ldevlist

      Lists the LIF directory of the specified disks.

   PARSELDEV disklist

      Simply reports the disks specified by the disklist.  This
      can be useful to see which disks a "TEST" command would
      have tested, but without the downside of actually doing a
      test.

   PAUSE  #seconds

      Pauses for the specified number of seconds.

   RANDINT   [INITialize]  [[no]QUIET]  #

      RANDINT INITIALIZE resets the random number generator to
      the seed values INITSEED1 and INITSEED2 (settable via the
      SET command).

      RANDINT # generates the specified number of random
      integers, displaying them unless QUIET is specified.

   RANDOM disklist (see SERIAL for options)

      Starts doing random reads from the specified disks until a
      "control-Y" is done, or the specified time elapses.

   READDISK ldev# [PAGEnum #] [DIRECT] [LOOPS #]
                  [no]DUMP
                  [<all |="" numpages="" #="">]

      Reads one (or more) pages from the specified disk.
      The ALL keyword causes READDISK to read the entire disk
      from page 0 (or the starting page, if PAGENUM is specified)
      to the end.

   SAME disklist  (see SERIAL for options)

      Starts doing same-page reads from the specified disks until
      a "control-Y" is done, or the specified time elapses.

   SCANIO

      Checks each disk drive, and asks it for its product ID
      (also called "Device ID"), and displays each one.
      If any actual ID differs from the value that was
      configured in SYSGEN/IO, the SYSGEN value is also
      reported.   (See also: HELP PRODUCTID)

   SERIAL  disklist [MAXSECS #] [QUIET]

      Starts doing serial reads from the specified disks until a
      "control-Y" is done, or the specified time elapses.

   SERIAL100      (see SERIAL for options)

      Starts doing serial reads within a 100 MB chunk of the
      specified disk(s), until a "control-Y" is done.  The 100 MB
      area starts at the current value of PAGENUM (settable via
      SET).

   SET / RESET [flag ...]

      [no]ACCESStest  ... enables/disables testing access speed

         There are five kinds of access sub-tests:

            [no]STEADY ... read same page(s) again and again.
            [no]SERIAL ... serially read consecutive page(s).
            [no]WORST  ... read first & last pages on disk.
            [no]RANDOM ... read random pages.

         (all five above are on by default)

         Note: the WORST case does 1/2 the reads that the other
         cases do.  STEADY, SERIAL, and RANDOM do 100 reads each.

      [no]ALLOWWrites  ... debugging

      ALLSIZES       ... for BUFFERTEST, requests testing all
                         sizes from 1 to 128.

      ALLtests       ... requests ACCESSTEST, BUFFERTEST, and
                         SPINNERTEST.

      AUTOMIRROR     ... tells DiskPerf to substitute the master
                         LDEV of a mirrored pair if you enter the
                         LDEV of a mirror slave.  E.g., if LDEVs
                         21 and 121 are a mirrored pair, and 21
                         is the "master", then with AUTOMIRROR, a
                         "TEST 121" is converted to "TEST 21".
                         Default: NOAUTOMIRROR.

      [no]BUFFERtest ... test different size reads, attempting to
                         find size of buffer in disk controller.
             On by default.

      [no]CCHECK     ... if true, we check disk drive availability
                         early in the test sequence.  (On by
                         default)

      [no]CONSTRAIN  ... if true, if we have more than one disk
                         drive, the RANDOM and WORST tests will
                         use the size of the smallest disk drive
                         as the highest page number for *all*
                         drives.  Default: SET CONSTRAIN

      CONTINuous     ... if true, loop forever, doing ACCESSTEST

      [no]EXPLAIN    ... If EXPLAIN is set, DiskPerf will print a
                         one line description of the goal of each
                         test at the start of the test.

      FINDPPT        ... if true (default), DiskPerf finds the
                         Physical Path Table (PPT) entry for each
                         disk, and extracts the device name
                         (e.g., ST19171) from it.  If false,
                         DiskPerf will not look at the PPT.
                         Note: you may specify "NOFINDPPT" in the
                         INFO string (without "SET" or "RESET").

      [no]GETPRODid  ... if true, reports disk product IDs.
                         (On by default)
      INITSEED1 #    ... set the two seeds used by the random
      INITSEED2 #        number generator.
                         (e.g., SET INITSEED1 100 INITSEED2 12)
                         (see also: RANDINIT INIT)

     [no]LDEVTYPE    ... changes how disks are reported (by LDEV
                         or by product ID)
      MAXIOS <# | MAXimum>
                     ... sets the maximum number of simultaneous
                         reads that can be done at one time.

      MAXRPAGE #     ... allows a maximum value to be specified
                         for the RANDOM test.  (Overrides
                         CONSTRAIN)

      MBS #          ... specifies the size of reads for many
                         tests (like NUMPAGES, but in units of
                         MBs)

      MINtests       ... sets ACCESSTEST, resets BUFFERTEST and
                         SPINNERTEST.  Resets all access tests
                         and then sets SERIAL and RANDOM.

      MIRRORS        ... allows both halfs of a mirrored disk
                         pair to be tested.  The NOMIRRORS will
                         exclude the "mirror slave" half of a
                         mirrored pair.
                         Default: MIRRORS

      NUMLOOPS #     ... specifies the default number of loops
                         for some tests.  (Default: 100)

      NUMPAGES #     ... specifies the size of reads for many
                         tests.  (Default: 1)
                         Note: "MAXimum" may be specified as the
                         value.

      PAGENUM #      ... specifies the default starting page that
                         various tests use (except ACCESS:WORST,
                         which is more complex.)  Default: 1

      [no]PAGING     ... turns on/off output pagination.

      NORANDOM       ... tells ACCESSTEST not to do a RANDOM test

      REPORTSECS #   ... tells various tests to report the I/O
                         rate at the specified interval.

      [no]SAMEtest   ... disables/enables the "SAME page" portion
                         of ACCESSTEST.

      [no]SERIALtest ... disables/enables the "SERIAL" portion
                         of ACCESSTEST.

      [no]SERIAL100test ... disables/enables the "SERIAL100"
                         portion of ACCESSTEST.

      [no]SHORTSYS   ... debugging

      [no]SHOWFIND   ... debugging

      [no]SLOWFIND   ... SLOWFIND causes the MPE/IX DiskPerf to
                         use a slow method of checking for disk
                         drives.  This can find drives that are
                         configured, attached, but not "mounted".
                         Usage:  SET SLOWFIND ; FINDDISK

      [no]SPINNERtest... test reads with ascending gaps between
                         blocks, attempting to find optimum
                         interleave.  Off by default.

      [no]SPINNERONLY... synonym for NOACCESS NOBUFFER

      SPINUPSECS #seconds
                     ... tells DiskPerf how long to wait before
                         deciding that a disk drive will not
                         respond.

      [no]STEADY1MBtest. disables/enables the "STEADY1MB" portion
                         of ACCESSTEST.

      [no]TIMES      ... report time each DiskPerf command takes.

      [no]USEPORT    ... internal MPE/iX R&D; option.  Do not use!

      [no]VERBOSE    ... VERBOSE makes TEST command slightly more
                         verbose in a couple of instances.

      [no]WAIT       ... WAIT tells DiskPerf to use no-wait reads
                         for most tests.

      [no]WORSTtest  ... disables/enables the "WORST" portion
                         of ACCESSTEST.

      Note: if no specific tests are requested, then the an
      ACCESS test will be done by the TEST command.

   SHOWHPE  ldevlist          [HPE] [LIF]    [DIR]
   SHOWLIF  ldevlist          [HPE] [LIF]    [DIR]

      SHOWHPE shows the reserved "HPE" sector of the specified
      disk(s).  If "LIF" is added, an implied SHOWLIF is done.

      SHOWLIF shows the reserved "LIF" sector of the specified
      disk(s).  If "MPE" is added, an implied SHOWMPE is done.

      The DIR option triggers an implied "LIFLS ldevlist".

   STARTREAD ldev# [PAGE #] [numPAGES #]

      Starts a single no-wait read from the specified disk.  See
      also:  KILLREAD and WAITREAD.

      Note: this is not intended for general use.

   STEADY1MB  disklist (see SERIAL for options)

      Starts doing serial reads from the specified disks until a
      "control-Y" is done, or the specified time elapses.  After
      each read, the next read is 1 MB higher than the first
      read.  Thus, if you're currently reading 1 page at a time
      (SET NUMPAGE 1), then STEADY1MB will read page X, skip 255
      pages, read a page, skip 255 pages, read a page, etc.
      If NUMPAGE is 250, we'll read page X..X+249, skip 6 pages,
      etc.  (There are 256 pages in a megabyte.)


   SUMMARY  [ldev# | ALL | EACH] [CLEAR]

      SUMMARY ldev# the performance statistics for the specified
      disk.

      SUMMARY ALL reports a brief summary of the performance
      statistics for all disks.  Only RANDOM and SERIAL tests
      are reported.  (SUMMARY ALL is the default.)

      SUMMARY EACH reports a detailed summary of the performance
      statistics for all disks.

      SUMMARY CLEAR resets all of the performance statistics for
      all disks.

   TEST disklist  [QUICK] [[no]QUIET]  [MAXSEConds #]

      Starts test(s) on the specified disks.

      There are two basic modes of running the TEST command:

         QUICK and noQUICK

      The NOQUICK test (default) internally does implied RANDOM,
      SAME SERIAL, SERIAL100, STEADY1, and WORST commands (see
      above, mostly), and then does a "SUMMARY ALL".  The
      MAXSECONDS defaults to 10.

      The QUICK tests are selectable via SET/RESET:

         ACCESStest     test one or more of: same, serial,
                        serial100, steady1mb, random, worst

         BUFFERtest     test different size reads, all from the
                        same starting page.

         SPINNERtest... test reads with ascending gaps between
                        the pages.

   USEq filename

      USE (and USEQ) opens the specified disk file and reads
      DiskPerf commands from it.  USE will echo the lines as they
      are read.  USEQ ("Q" for Quiet) will not echo the input
      lines.

   VERSION

      VERSION reports the version# of DiskPerf.

   VLM ldev#

      Internal R&D; test command.
      Used for testing MPE routines to get disk information.

   WAITREAD  <rid# |="" prior="">  [NOWAIT]

      Waits for specified I/O request to finish.  If NOWAIT is
      specified, merely checks status of the I/O.

      (PRIOR is the read started by the most recent STARTREAD or
      most recent CHECKDISK (if the disk wasn't online).)

      See STARTREAD.

      Note: this is not intended for general use.

   WHO

      Reports DiskPerf PIN, and virtual address of data buffer.

   WORST      disklist (see SERIAL for options)

      Starts doing worst-case reads from the specified disks
      until a "control-Y" is done, or the specified time elapses.
      The first worst-case read is: page 1, then the last page of
      the disk drive, then page 2, then the second-to last page
      of the drive, etc.  When the lower page number hits the
      disk size / 2, we reset it to 1 (and the upper page number
      to the max disk page).

   YTEST [NONE]      [PRIV] [USER]  [WAIT]

      Internal R&D; test command.
      Used for testing control-Y.

   : MPEcommand

   The command following the colon is passed to the HPCICOMMAND
   intrinsic.  Example: :showdev

-----------------------------------------------------------------
cRandom

   When the "CONSTRAIN" flag is set (via: SET CONSTRAIN), the
   "RANDOM"  test will be constrained such that the worst case
   page number accessed on any disk drive will be the same value
   across all disk drives.  This means that with CONSTRAIN, if a
   system has a 4 GB disk and a 36 GB disk, a "RANDOM" test on
   the 36 GB disk drive won't go past the 4 GB mark.  This can be
   useful when evaluating the performance of a system where the
   files are evenly allocated across all disc drives (and
   "condensed").  (In the 4 GB and 36 GB example, if the system
   has 7.9 GB of data, evenly distributed, then the first 3.9 GB
   of each disk would be in use.)

   The "RESET CONSTRAIN" command removes this constraint, and
   allows "RANDOM" to test the limits of each disk drive.

   The default is "SET CONSTRAIN".

-----------------------------------------------------------------
cWorst

   When the "CONSTRAIN" flag is set (via: SET CONSTRAIN), the
   "WORST"  test will be constrained such that the worst case
   page number accessed on any disk drive will be the same value
   across all disk drives.  This means that with CONSTRAIN, if a
   system has a 4 GB disk and a 36 GB disk, a "WORST" test on the
   36 GB disk drive won't go past the 4 GB mark.  This can be
   useful when evaluating the performance of a system where the
   files are evenly allocated across all disc drives (and
   "condensed").  (In the 4 GB and 36 GB example, if the system
   has 7.9 GB of data, evenly distributed, then the first 3.9 GB
   of each disk would be in use.)

   The "RESET CONSTRAIN" command removes this constraint, and
   allows "WORST" to test the limits of each disk drive.

   The default is "SET CONSTRAIN".

-----------------------------------------------------------------
disklist :: ldev# | ldev# / ldev# | ALL | -ldev# [disklist]
                     | ONVS <volumesetname>

 Examples:
    1 3 23                      means: LDEVs 1, 3, and 23
    3                           means: LDEV 3
    1/3                         means: LDEVS 1, 2, and 3
    ALL -1                      means: All disks except LDEV 1
    VS MPEXL_SYSTEM_VOLUME_SET         means: the "system" disks
    ALL - VS MPEXL_SYSTEM_VOLUME_SET   means: no "system" disks

-----------------------------------------------------------------
page ::

  A "page" is 4,096 bytes.

  PA-RISC based operating systems (like MPE/iX and HP-UX)
  generally do disk I/O in units of pages, not sectors.

sector ::

   A "sector" is considered to be 256 bytes.  (Note: some disk
   disk drives internally have sectors of 512 bytes...this
   doesn't affect our definition, however.)

MB ::

   An "MB", or "MegaByte", is 1,048,576 bytes.

There are 256 pages in a MegaByte.

There are 16 sectors in a page; and 4,096 sectors in a MegaByte.

-----------------------------------------------------------------
DiskPerf has a REDO stack ... which persists across runs of
DiskPerf within a single session.

   CLEARREADO
   DO  [argument]
   LISTREDO       (or: <escape>v  (function key F7))
   REDO [argument]

-----------------------------------------------------------------
Startup

At startup, DiskPerf quietly reads commands from the file
STARTUP.DISKPERF.ALLEGRO, if the file exists.

It then looks at the INFO string.  If the INFO string is not
empty, DiskPerf executes the commands in it, and then terminates.
(Note: you can use a semicolon to separate multiple commands.)

If run without an INFO string, DiskPerf will prompt for commands,
until EXIT (or a synonym) is entered.
-----------------------------------------------------------------
-----------------------------------------------------------------
The remaining text in this file is used to explain various
tests...reading it linearly may not be too useful.
-----------------------------------------------------------------
-----------------------------------------------------------------

   ---------------------
   cRandom ::
      Does reads from random disk addresses.  The random
      addresses range from page 0 to page N-1, where N is the
      size of the smallest disk drive currently visible to
      DiskPerf (see "SET CONSTRAIN").

      The size of each read is controlled by "SET NUMPAGES", and
      defaults to 1.  The random number generator is restarted
      from the saved seed values at the start of each test,
      allowing for 100% repeatability of the series of disk
      addresses.  (See also: INITSEED1 and INITSEED2.)

   ---------------------
   Random ::
      Does reads from random disk addresses.  The random
      addresses range from page 0 to page N-1, where N is the
      size of the drive being tested.  (Note how that differs
      from cRandom above.)  The size of each read is controlled
      by "SET NUMPAGES", and defaults to 1.  The random number
      generator is restarted from the saved seed values at the
      start of each test, allowing for 100% repeatability of the
      series of disk addresses.  (See also: INITSEED1 and
      INITSEED2.)

   ---------------------
   Same ::
      Does reads from the same disk address, over and over.  For
      some disk drives with a cache, the request will be served
      out of the cache.  In this case, this will test the speed
      of the cache controller and the I/O channel.  For some disk
      drives with a cache, the most recently read page is *not*
      kept in the cache (the cache designer probably thought the
      user wouldn't want the same page twice in a row).  On such
      disk drives, and on drives that have no cache, the drive
      will have to read the media to get the data, thereby
      testing the speed of the data transfer from the media, the
      controller, and the I/O channel.

      The size of each read is controlled by "SET NUMPAGES".

   ---------------------
   Serial ::
      Does reads from serially (sequentially) ascending disk
      addresses.  When the end of the drive is hit, we restart at
      the "start" point.  Assuming NUMPAGES is 2, and PAGENUM is
      0, Serial will read pages 0 & 1, then 2 & 3, etc.

      The size of each read is controlled by "SET NUMPAGES".

      The "start" point defaults to page 0, but can be
      changed via "SET PAGENUM".

   ---------------------
   Ser100 ::
      Does reads from serially (sequentially) ascending disk
      addresses, over a 100 MB section of the disk.  When we hit
      the end of the 100 MB section, we restart at the "start"
      point.

      Serial100 is quite similar to Serial, but only a portion of
      the disk is accessed.  This, in conjunction with SET
      PAGENUM, allows the user to test the performance of
      different areas of the disk.  On some drives, the data
      transfer rate at the outer edge (usually page 0) is twice
      as fast as the data transfer rate at the inner edge
      (usually the highest numbered page).

      The size of each read is controlled by "SET NUMPAGES".

      The "start" point defaults to page 0, but can be changed
      via "SET PAGENUM".

   ---------------------
   Steady1MB:
      Does reads from nearly serial ascending disk addresses,
      like "Serial".  The difference is that after each read, we
      "round up" the disk address to the next megabyte.  This can
      be used to test nearby servo positioning.  Example: since
      there are 256 pages in a megabyte, if NUMPAGES is 1, then
      Steady1MB will read page 0, page 256, page 512, etc.  If
      NUMPAGES is 2, Steady1MB will read pages 0 & 1, pages 256 &
      257, etc.

      The size of each read is controlled by "SET NUMPAGES".

      The "start" point defaults to page 0, but can be changed
      via "SET PAGENUM".

   ---------------------
   cWorst ::
      Does reads from "worst case" disk addresses.  This is a
      pattern of disk addresses designed to make the disk
      arm/heads move as much as possible for each read.  The
      pattern is: page 0, page N-1, page 1, page N-2, etc. N is
      the size of the smallest disk drive currently visible to
      DiskPerf (see "SET CONSTRAIN").

      The size of each read is controlled by "SET NUMPAGES".

      The "start" point defaults to page 0, but can be changed
      via "SET PAGENUM".

-----------------------------------------------------------------
r, M

Many of the performance numbers have a suffix of " r" or " M".
" r" means "Reads per second", and " M" means "Megabytes per
second".

-----------------------------------------------------------------
DISK, DISC

We are using "disk" as the preferred spelling, matching the usage
of most disk drive manufacturers and major technical magazines
(which now use "disk" for rotating magnetic media, and "disc" for
rotating optical media).

-----------------------------------------------------------------
PRODUCTID, SYSGEN, DEVICEID

Every disk drive has a product ID, also called "device ID".
Normally, when a disk drive is configured into the system, the
user tells SYSGEN/IO the correct product ID.  In recent years,
however, the advent of SCSI disk drives has changed things.
SYSGEN and MPE allow SCSI disk drives to have be configured
with incorrect product IDs, as long as the ID specified is
roughly similar to the correct ID.  (I.e., if the disk is a
single-ended SCSI device, the product ID must be that of a
single-ended SCSI device and not a Fast/Wide SCSI device.)

Prior to MPE/iX 6.5, SYSDIAG/SYSMAP/IOMAP/GENERAL would
report mismatches between actual product IDs and configured
product IDs.  DiskPerf tries to use the actual product ID
whenever possible, because it is intimately concerned about the
hardware device.  If there is a problem with DiskPerf's
checking of the actual product ID, the checking can be disabled
by running DiskPerf with INFO="NOGETPRODID".
-----------------------------------------------------------------



Updated [3khat16.ico]HP3000 [3khat16.ico]3kMail [archive16.gif]