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