Google
 

Trailing-Edge - PDP-10 Archives - scratch - 10,7/unscsp/lodtst/lodtst.mem
There are 7 other files named lodtst.mem in the archive. Click here to see a list.












                                SIMPKG

                Simulation Package for System Testing














                       Date:  February 1978
                       File:  SPST.RNO
                       Version:  1














The information in this document is subject to change  without  notice
and  should  not  be  construed  as  a commitment by Digital Equipment
Corporation.  Digital Equipment Corporation assumes no  responsibility
for any errors that may appear in this document.

The software described in this document is furnished under  a  license
and  may  be used and copied only in accordance with the terms of such
license.

Digital Equipment Corporation assumes no responsibility  for  the  use
and  reliability  of its software on equipment that is not supplied by
Digital.





Copyright c 1978 Digital Equipment Corporation, Maynard, Mass.
                                                                Page 2









                               CONTENTS



                                                                 Page


CHAPTER  1   INTRODUCTION                                        1-1  

CHAPTER  2   DESCRIPTION OF PROGRAMS                             2-1  

         2.1 LODTST                                              2-1  
         2.2 SIMULATED USER JOBS                                 2-1  

CHAPTER  3   HOW TO RUN THE SIMULATION PACKAGE                   3-1  

         3.1 MODULO OPTION                                       3-1  
         3.2 CATEGORY OPTION                                     3-2  
         3.3 COMMANDS DURING TEST OPERATION                      3-3  
         3.4 END-OF-TEST PROCEDURE                               3-3

CHAPTER  4   EXPLANATION OF ERROR MESSAGES                       4-1  

         4.1 ERRORS FROM LODTST                                  4-1  
         4.2 ERRORS FROM SIMULATED USER JOBS                     4-3  

CHAPTER  5   INSTALLATION-DEPENDENT PARAMETERS                   5-1  

         5.1 LODTST PARAMETERS                                   5-1  
         5.2 SIMULATED USER JOB PARAMETERS                       5-2  

CHAPTER  6   SAMPLE RUNS                                         6-1  

         6.1 SAMPLE RUN 1                                        6-1  
         6.2 SAMPLE RUN 2                                        6-2  











                              CHAPTER 1

                            INTRODUCTION  



This document describes a job  simulation  package  developed  by  the
Academic  Computer Center at Western Michigan University.  The package
consists of a master control program and a number of  user  jobs  that
simulate various types of user activity.

The objectives of the simulation package are:

     1.  To provide a known, reproducible system load that can be used
         to  evaluate  system  performance  when  software or hardware
         changes are made.

     2.  To provide a very heavy, complex job mix that can be used  to
         verify  system software reliability when a new monitor system
         is loaded.

     3.  To provide a simulated  system  load  that  can  be  used  to
         isolate  intermittent  hardware failures that occur under the
         TOPS-10  monitor  but  do  not  occur  under  field   service
         diagnostics.

The  master  control  program  (LODTST)  reads   user-specified   test
parameters  and  performs all necessary details of test execution.  It
logs in the desired number of simulated user jobs of each type, starts
the jobs executing, and prints SYSTATs at the specified interval.

For many tests, the SYSTATs provide sufficient information to evaluate
system  performance.   In  other cases, additional information must be
recorded  and  printed  using  the  DECsystem-10  System   Performance
Evaluation Package (PERF).

A complete simulation run normally involves running SCDSET  to  define
scheduling  parameters, LODTST to log in the simulated jobs, and LINES
to record performance data.  To  simplify  operator  interaction,  the
test  can be run under an OPSER.ATO file.  The commands to run SCDSET,
LODTST, and LINES are stored in the .ATO  file.   Parameter  data  for
SCDSET  and  LODTST  are  read  from  disk  files.  Chapter 6 contains
examples of this technique.











                              CHAPTER 2

                      DESCRIPTION OF PROGRAMS  



2.1  LODTST

The LODTST program is the master control program  for  the  simulation
package.   It  reads  the  user-specified test parameters, logs in the
specified number of jobs of  each  type,  and  takes  SYSTATs  at  the
user-specified interval.

LODTST logs in and RUNS all of  the  simulated  user  jobs  using  one
pseudo-TTY.  The user jobs hibernate until LODTST has logged in all of
them.  LODTST then wakes all of the jobs at the same time.

LODTST requests SYSTATs through a separate job that is controlled with
a  pseudo-TTY.   Both LODTST and its SYSTAT job run in a high-priority
queue to provide precise timing of SYSTATs.

At the end of the simulation run, LODTST prints an ending  SYSTAT  and
executes  an end-of-test procedure that allows the simulated user jobs
to exit gracefully and delete any disk files they may have created.

For any problems encountered, LODTST logs  an  error  message  on  its
controlling   TTY.   For  severe  errors,  the  entire  simulation  is
terminated.   For  less  serious  errors,  the  simulation  continues.
Chapter  4  contains  a  complete  list of all error messages from the
simulation package.

Section 2.2 describes  the  simulated  user  jobs  supplied  with  the
package.   Additional  job  types  may be added at your installation's
discretion.  Chapter 5 contains a description of  the  procedures  for
defining job names and the areas they are to be run from.



2.2  SIMULATED USER JOBS

The simulated user jobs are made up  of  calls  to  standard  routines
defined  in  a universal file.  The standard routines select job size,
execute CPU loops, read and write disk records, open device  channels,
and  so  forth.  The ranges of job size, length of CPU loop, number of
disk records, and so forth, are determined by drawing  random  numbers
from  uniform  or  exponential  distributions  and applying a base and
range factor defined by adaptation parameters contained in  each  user
program.   Default  values  for  each  parameter are provided with the
simulation package.  Chapter 5 contains instructions on how to  modify
these parameters.

For any problems encountered by a simulated user job, an error message
is  logged on the terminal associated with device OPR.  For some error
conditions, the job will sleep for a  defined  interval  and  try  the
function  again  later.   For  other  error  conditions,  the job will
DESCRIPTION OF PROGRAMS                                       Page 2-2


abandon the function for this cycle.  In either case,  the  simulation
run  will be allowed to continue.  Chapter 4 contains a description of
the error codes printed by simulated user  jobs  and  an  analysis  of
their causes and impact on test integrity.

A description of the program loop executed by each  of  the  simulated
user jobs is given below.  The end of this chapter contains a detailed
explanation of the various standard routines.

      LODIO -   I/O bound job.

                1.  Do core size selection (RANCOR)

                2.  Do disk I/O (RANDSK)

                3.  Repeat from step 1

      LODCPU -  CPU bound job.

                1.  Do core size selection (RANCOR)

                2.  Do uniform CPU loop (RANCPU)

                3.  Repeat from step 1

      LODAVE -  Average job.

                1.  Do core size selection (RANCOR)

                2.  Do uniform sleep (RANSLP)

                3.  Do uniform CPU loop (RANCPU)

                4.  Do disk I/O (RANDSK)

                5.  Repeat from step 1

      LODPQ1 -  Conversational job.

                1.  Do core size selection (RANCOR)

                2.  Do exponential sleep loop (EXPSLP)

                3.  Do exponential CPU loop (EXPCPU)

                4.  Repeat from step 1

      LODSLP -  Sleep job.

                1.  Do core size selection (RANCOR)

                2.  Do uniform sleep (RANSLP)

                3.  Repeat from step 1

      LODCOR -  Change high- and low-segment size.

                1.  Do high- and low-segment size selection (RANHGH)

                2.  Repeat from step 1
DESCRIPTION OF PROGRAMS                                       Page 2-3


      LODOPN -  Open device channels.

                1.  Open a device (RANOPN)

                2.  Repeat from step 1


The following is a description of the standard routines in the  LODUNV
universal file.  They are called from the simulated user jobs supplied
with the package and may be used to create  additional  jobs  at  your
discretion.

      RANCOR -  Do core size selection.

                Count the number  of  times  entered  and  change  the
                low-segment  core size every tenth time it is entered.
                The formula for selecting new core size is:

                     core size = (RAN0 * CORRNG) + CORBAS + MINSIZ

                where core size is in pages.  RAN0 is a random  number
                in  the  range  0  to 1 from the uniform distribution.
                CORRNG is the core size range parameter defined in the
                calling  program.   CORBAS  is  the  base  core  size.
                MINSIZ is the size of the calling program.

                The default values of 0 for CORBAS and 35.0 for CORRNG
                imply a range of 0 to 35 pages plus MINSIZ.

      RANDSK -  Do disk I/O.

                This routine writes a random number of records on  the
                public  disk  structure,  reads  the records back, and
                compares the data to check for hardware failures.  The
                data  written  is  a  rotating bit pattern.  The units
                selected include all structures in the search list for
                the area from which the program is run.

                The number of  words  written  is  determined  by  the
                formula:

                     words = (RAN1 * BLKRNG) + BLKBAS

                where RAN1 is a random number in the range 0 to 1 from
                a     uniform    distribution.     BLKRNG    is    the
                installation-dependent  range   parameter   for   disk
                writes.  BLKBAS is the base number of words.

                The default values of 4096 for BLKRNG and 0 for BLKBAS
                imply  that  a range of 0 to 4095 words are written (0
                to 32 blocks).

                The number of buffers used is determined by  the  same
                random number as the number of words written.

                     buffer = (10 * RAN1) + 1

                which implies a range of 1 to 10 buffers.
DESCRIPTION OF PROGRAMS                                       Page 2-4


      RANSLP -  Do uniform sleep.

                This routine executes a sleep monitor  call  with  the
                length of sleep determined by the formula:

                     sleep = (RAN2 * SLPRNG) + SLPBAS

                where RAN2 is a random number in the range 0 to 1 from
                a     uniform    distribution.     SLPRNG    is    the
                installation-dependent sleep  range.   SLPBAS  is  the
                base sleep time.

                The default values of 60.0 for SLPRNG and 0 for SLPBAS
                imply a range of 0 to 59 seconds.

      RANCPU -  Do uniform CPU loop.

                This routine executes a CPU loop of length:

                     length = ((RAN3 * CPURNG) + CPUBAS)/FACTOR

                where RAN3 is a random number in the range 0 to 1 from
                a     uniform    distribution.     CPURNG    is    the
                installation-dependent range factor.   CPUBAS  is  the
                installation-dependent base CPU length and FACTOR is a
                scaling parameter to determine  the  number  of  SOJGs
                that can be executed per second on a KA, KI, or KL.

                FACTOR is determined  automatically  by  the  program,
                depending  on  the  processor  type.  With the default
                values of 1 second  for  CPURNG  and  0.5  second  for
                CPUBAS, this implies a range of 0.5 to 1.5 seconds.

      EXPSLP -  Do exponential sleep.

                This routine executes a sleep monitor  call  with  the
                length of sleep:

                     sleep = MIN ((EXRAN2 * SLPRNX), SLPMAX)

                where EXRAN2 is a random number  in  the  range  0  to
                infinity   from  an  exponential  probability  density
                function  with  a  mean   of   1.    SLPRNX   is   the
                installation-dependent   desired   mean   sleep  time.
                SLPMAX is the maximum sleep time.

                The default values of 6  seconds  for  SLPRNX  and  60
                seconds  for  SLPMAX  imply a range of 0 to 60 seconds
                with a mean of about 6 seconds.

      EXPCPU -  Do exponential CPU loop.

                This routine executes a CPU loop of length:

                     length = MIN ((EXRAN3 * CPURNX), CPUMAX)/FACTOR

                where EXRAN3 is a random number  in  the  range  0  to
                infinity   from  an  exponential  probability  density
                function  with  a  mean   of   1.    CPURNX   is   the
                installation-dependent  desired mean CPU time.  CPUMAX
                is the maximum CPU time.

                The default values of 0.1 second for  CPURNX  and  1.0
                second  for CPUMAX imply a range of 0 to 1 second with
                a mean of about 6 ticks.
DESCRIPTION OF PROGRAMS                                       Page 2-5


      RANHGH -  Do high- and low-segment size selection.

                This routine changes the high-  and  low-segment  size
                every time it is entered.

                The new size for high segment is (in pages):

                     high segment =  (RAN0 * HGHRNG) + HGHBAS

                The new size for low segment is (in pages):

                     low segment =  (RAN1 * LOWRNG) + LOWBAS + MINSIZ

                where RAN0 and RAN1 are random numbers in the range  0
                to 1 from a uniform distribution.  HGHRNG is the range
                factor  for  high  segment.   HGHBAS   is   the   base
                high-segment size.  LOWRNG is the range factor for low
                segment.  LOWBAS is the base low-segment size.  MINSIZ
                is the program size of the calling program.

                The default values imply a range of high-segment  size
                from  0  to  32  pages and a range of low-segment size
                from 0 to 32 pages plus program size.

      RANOPN -  Open device channels.

                This routine opens and closes  a  device  selected  at
                random  from an installation-dependent list of devices
                (DEVLST).  The device is selected by the formula:

                     index = RAN1 * DEVNUM

                where RAN1 is a random number in the range 0 to 1 from
                a  uniform  distribution.   DEVNUM  is  the  number of
                devices.

Note that the designations of RAN0, RAN1, RAN2,  and  RAN3  imply  the
existence  of four separate uniform random number generators.  This is
to allow independent sets of  random  numbers  for  core  size,  sleep
length,  CPU  interval, number of words written to disk, and so forth,
for  those  programs  that  do   several   functions.    The   uniform
distributions  all  select  a  random  number  the first time they are
called, and the complement of that number the  second  time  they  are
called.   That  is,  a  random  selection of n on an odd-numbered call
implies a selection of 1-n on the next call.

This procedure minimizes  the  amount  of  distortion  in  accumulated
runtime  and  other  resources  due  to  the  random  number selection
process.  For any two jobs of the same class, the amount of  CPU  loop
executed  and  the  number of disk reads and writes performed would be
identical, if the scheduler  treated  them  equally,  except  for  the
effect  of the last random number selected.  Differences due to random
number selection  are  not  cumulative.   This  procedure  gives  good
randomness  to the test with most differences between jobs of the same
class being attributable to the scheduler.

The exponential distributions are generated by the following formula:

          EXRAN = -LOG(1-RAN)

where RAN is one of the uniform  random  number  generators  described
above.   This  generates  a  negative  exponential probability density
function with a mean of 1.  The exponential distributions yield a wide
range  of  values  with  a large number of small values and a few very
large values.











                              CHAPTER 3

                 HOW TO RUN THE SIMULATION PACKAGE  



These examples demonstrate how to run the LODTST program from  a  TTY.
Examples with input from disk and execution from an OPSER.ATO file are
given in Chapter 6.



3.1  MODULO OPTION

The MODULO option logs in jobs starting at a  base  project-programmer
number  (PPN),  and increasing modulo a specified number.  This allows
the  test  designer  to  specify  different  scheduling  classes   for
different PPNs to test the class scheduler.

To log in all jobs under the same PPN, specify a modulo number of 1 (0
defaults to 1).


     1.  Login a 1,2 job.

     2.  RUN TST:LODTST       ;Specify PPN where LODTST is stored

     3.  ENTER INPUT FILE SPEC (DEFAULT IS TTY)
         <CR>                 ;<CR> for TTY input
                              ;FILE SPEC for disk input

     4.  ENTER INTERVAL BETWEEN SYSTATS (MINS)
         5                    ;For SYSTATS every 5 minutes
                              ;<CR> for no SYSTATS

     5.  ENTER LENGTH OF TEST (MINS)
         30                   ;For 30-minute test
                              ;<CR> for no time limit

     6.  ENTER JOB DATA OPTION (CATEGORY OR MODULO)
         M                    ;M for MODULO

     7.  ENTER BASE PPN (PROJ,PROG)
         4,220                ;Base area to LOGIN user jobs

     8.  ENTER MODULO NUMBER (DECIMAL)
         3                    ;For PPNs 4,220;  4,221;  4,222
                              ;0 or 1 logs all jobs under 4,220
HOW TO RUN THE SIMULATION PACKAGE                             Page 3-2


     9.  LODIO:  3    ;3 jobs, 1 each under 4,220; 4,221; 4,222

         LODCPU: 6    ;6 jobs, 2 each under 4,220; 4,221; 4,222

         LODAVE: 9    ;9 jobs, 3 each under 4,220; 4,221; 4,222

         LODPQ1: 3    ;3 jobs, 1 each under 4,220; 4,221; 4,222

         LODSLP: 1    ;one job under 4,220

         LODCOR: 2    ;2 jobs, 1 each under 4,221; 4,222

         LODOPN: 3    ;3 jobs, 1 each under 4,220; 4,221; 4,222

    10.  [HH:MM:SS] SIMULATION STARTED.    ;LODTST prints simulation
                                            start time

    11.  Test is now up and running.  For a list of commands that  may
         be typed, see Section 3.3.

Note that the MODULO counter is  not  reset  between  job  categories.
Therefore, LODCOR started at 4,221 because one job was already counted
for LODSLP.



3.2  CATEGORY OPTION

The category option allows the test designer to log in any  number  of
jobs of each category under any number of specific PPNs.

Steps 1 through 5 are the same as steps 1 through 5 above.

     6.  ENTER JOB DATA OPTION (CATEGORY OR MODULO)
         C                    ;C for category

     7.  ENTER PPN AND NUMBER OF JOBS (PROJ,PROG:NUMBER) ONE PER LINE,
         EXTRA CARR RET TO GO TO NEXT CATEGORY.

         LODIO:  4,220:1      ;1 job under 4,220
         LODIO:  4,221:2      ;2 jobs under 4,221
         LODIO:  <CR>         ;Go to next category
         LODCPU: 4,221:3      ;3 jobs under 4,221
         LODCPU: <CR>         ;Go to next category
         LODAVE: 4,223:4      ;4 jobs under 4,223
         LODAVE: <CR>         ;Go to next category
         LODPQ1: 4,221:2      ;2 jobs under 4,221
         LODPQ1: <CR>         ;Go to next category
         LODSLP: 4,220:1      ;1 job under 4,220
         LODSLP: <CR>         ;Go to next category
         LODCOR: <CR>         ;<CR> for no LODCOR jobs
         LODOPN: 4,221:2      ;2 jobs under 4,221
         LODOPN: <CR>         ;Go to next category

     8.  [HH:MM:SS] SIMULATION STARTED.  ;LODTST prints the simulation
                                          start time

     9.  Test is now up and running.  For a list of commands that  may
         be typed, see Section 3.3.
HOW TO RUN THE SIMULATION PACKAGE                             Page 3-3


3.3  COMMANDS DURING TEST OPERATION

While LODTST is running the simulation,  it  wakes  at  the  specified
interval  to  request SYSTATs.  When a SYSTAT is printed, LODTST types
an asterisk on its controlling terminal and rings  the  bell.   LODTST
also  monitors  its  controlling  terminal for operator commands.  The
commands accepted are:

     SYSTAT    ;Print a SYSTAT

     EXIT      ;Terminate the simulation and stop all jobs

     KILL      ;Terminate the simulation and log out all jobs

     /EXIT     ;Change end-of-test flag to EXIT option

     /KILL     ;Change end-of-test flag to KILL option

SYSTATs requested by  the  operator  are  in  addition  to  any  being
generated at the requested SYSTAT interval.

The EXIT command is used when the operator wants to stop the test  and
does  not  care  if the jobs are logged out.  The exit procedure stops
the jobs at a point where they have no disk files open.  This leaves a
clean disk system.

The KILL command performs all the functions of the EXIT  command.   In
addition,  it  logs  out  all  simulated  jobs.   This  will cause the
resources used by the simulated  user  jobs  to  be  recorded  by  the
accounting   system.    Another  simulation  can  be  started  without
reloading the monitor.



3.4  END-OF-TEST PROCEDURE

At the time specified by the  length-of-test  parameter,  LODTST  will
execute an end-of-test procedure.  The procedure is either the KILL or
EXIT command described above, depending on the setting of  end-of-test
flag as defined in the installation-dependent parameter (KILL).

The operator can dynamically change the  setting  of  the  end-of-test
flag with the /KILL or /EXIT commands.

The normal exit message is:

     [HH:MM:SS] END OF EXIT  PROCEDURE.   ALL  JOBS  STOPPED.   LODTST
     EXITING.











                              CHAPTER 4

                   EXPLANATION OF ERROR MESSAGES  



4.1  ERRORS FROM LODTST

All errors from LODTST are logged on its  controlling  TTY.   Standard
format  recovery implies reentering the parameter if the input is from
a TTY, and termination of the simulation if the input  is  from  disk.
The standard line terminators are CRLF or altmode (ESC).

     OPNERR -  ? FAILURE OPENING INPUT DEVICE.

               The  specified  input  device  does  not  exist.    The
               simulation run is terminated.

     LOKERR -  ? FAILURE ON LOOKUP FOR INPUT FILE.

               The  specified  input  file  does   not   exist.    The
               simulation run is terminated.

     OPTERR -  ? ILLEGAL FORMAT, TYPE CAT OR MOD.

               The specified job  data  option  must  be  category  or
               modulo.  Do standard format recovery.

     CATERR -  ? ILLEGAL CATEGORY SPECIFICATION.

               TYPE PROJ,PROG:NUMBER (PROJ,PROG IN  OCTAL,  NUMBER  IN
               DECIMAL).    PROJ  is  a  project  number,  PROG  is  a
               programmer number.  PROJ and PROG must contain only the
               digits  0 through 7 and be separated by a comma.  After
               PROJ,PROG there must be a colon followed by the  number
               of  jobs  to  be logged in under the specified PPN.  Do
               standard format recovery.

     PPNERR -  ? ILLEGAL PROJ,PROG NUMBER FORMAT.

               In the modulo option, the base PPN  must  contain  only
               the  digits 0 through 7, and the two octal numbers must
               be separated by a comma.  Do standard format recovery.

     MODERR -  ? ILLEGAL MODULO NUMBER.

               The modulo  number  must  contain  only  the  digits  0
               through 9.  Do standard format recovery.
EXPLANATION OF ERROR MESSAGES                                 Page 4-2


     CHKERR -  ? ILLEGAL COMMAND.  COMMANDS ARE:

               SYSTAT, EXIT, KILL, /EXIT, /KILL.

               An  unrecognizable  command  was  typed.   Retype   the
               command.   Type  SYSTAT  to  get  a  SYSTAT on the line
               printer.  Type EXIT to stop all jobs, delete all files,
               and  exit.   Type  KILL to log out all jobs, delete all
               files, and exit.  Type /EXIT  to  set  the  end-of-test
               flag  to  EXIT.  Type /KILL to set the end-of-test flag
               to KILL.

     LOGERR -  ? TIME  LIMIT  EXCEEDED  LOGGING  IN  JOB   UNDER   PPN
               NNNNN,NNNNN.

               LODTST has issued a LOGIN request over the  controlling
               pseudo-TTY, but the subjob has not returned status bits
               of  job-number-assigned  job-logged-in,  TTY-at-monitor
               level,  and  ready-for-a-command  within  the specified
               time limit (approximately 60 seconds).

               Possible problems are that this PPN is not  allowed  to
               log in (not defined in ACCT.SYS), is in a class with no
               quota, and so forth.

               LODTST assumes the job will complete LOGIN and proceeds
               to issue the RUN command.  Should this assumption prove
               to be false, the test will run without this job.

     RUNERR -  ? TIME LIMIT EXCEEDED TRYING TO RUN  JOB  LODXXX  UNDER
               PPN NNNNN,NNNNN.

               LODTST has issued a RUN command  over  the  pseudo-TTY,
               but  the  subjob  has  not  returned the status bits of
               job-number-assigned,   job-logged-in,    at-user-level,
               not-doing-TTY-output  within  the required interval (60
               seconds).

               Possible problems are that the job did not  get  logged
               in  properly  (per LOGERR), or job type LODXXX does not
               exist.  LODTST assumes that the  job  started  properly
               and  releases  the  pseudo-TTY.  Should this assumption
               prove to be false, the test will run without this job.

     STSERR -  ? JOBSTS UUO FAILED.

               The JOBSTS monitor call used to determine if  jobs  are
               logged  in  and  running has failed.  This should never
               happen.

               The simulation run is terminated.

     GETSPR -  ? ILLEGAL FILE SPEC.

               The required format is:

               DEVICE:FILENAME.EXTENSION[PROJ,PROG]

               The simulation run is terminated.
EXPLANATION OF ERROR MESSAGES                                 Page 4-3


     PTYERR -  ? OPEN FAILURE ON PTY.

               The  OPEN  monitor  call  failed  for  the   pseudo-TTY
               channel.

               Possible problems are that the monitor is not assembled
               with pseudo-TTYs or none are available.

               The simulation run is terminated.

     FINERR -  ? [HH:MM:SS] EXIT TIME LIMIT REACHED.

               SOME LODTST JOBS MAY STILL BE RUNNING.

               The end-of-test procedure failed to stop all jobs (EXIT
               option)  or  some  jobs  did not LOGOUT within the time
               limit (KILL option).  The last job  to  KJOB  sometimes
               gets  hung  up  in  CONFIRM  dialogue  due  to  a  race
               condition in KJOB.

               LODTST exits to monitor.



4.2  ERRORS FROM SIMULATED USER JOBS

The error messages from the  simulated  user  jobs  are  sent  to  the
terminal associated with device OPR.  The messages are of the format:

     ?  [HH:MM:SS] JOB NNN "ERROR MESSAGE"

where NNN is the job number of the job having  the  error  and  "ERROR
MESSAGE"  is one of the messages described below.  The current time is
printed in square brackets.

When an error occurs, the job name is  also  changed  to  contain  the
error number.  For example, if a LODAVE job got the error indicated by
EO4, its name would be changed to EO4AVE.

Some errors cause the job to  be  delayed  for  a  specified  interval
before repeating the function that failed.  The length of the delay is
an installation-dependent parameter (ERRSLP).

Note that any delayed jobs distort the distribution of CPU time,  disk
reads and writes, and so forth, in the test results.

     EO1 -           CORE UUO FAILED.

       Explanation - The amount of  core  requested  exceeded  CORMAX.
                     Either   the  installation-dependent  core  range
                     parameters are too large or the monitor value  is
                     too low.
       Recovery
       Action -      Delay and try again with different random number.

     EO2 -           DISK INIT FAILURE.

       Explanation - Cannot open disk file to do disk  I/O.   Possible
                     problem  getting  core  blocks  from monitor core
                     block pool.
       Recovery
       Action        Delay and try again.
EXPLANATION OF ERROR MESSAGES                                 Page 4-4


     EO3 -           DISK ENTER FAILURE.

       Explanation - Cannot write using this filename.  Possibly  file
                     already exists and is being written by some other
                     program under the same PPN, or  cannot  get  core
                     blocks  from  monitor  core  block  pool.   (Note
                     LODTST system ensures unique filenames by  making
                     job number part of filename.)
       Recovery
       Action        Delay and try again.

     EO4 -           DISK OUTPUT FAILURE.

       Explanation - Public structure full, cannot  get  monitor  core
                     blocks, or possibly device hardware failure.
       Recovery
       Action -      Delete file and exit from  disk  I/O  subroutine.
                     Program  will cycle to next function and continue
                     operation.

     EO5 -           DISK CLOSE FAILURE.

       Explanation - Public structure full, cannot  get  monitor  core
                     blocks, or possibly hardware failure.
       Recovery
       Action -      Delete  file  and  exit  from   I/O   subroutine.
                     Program will continue operation.

     EO6 -           DISK LOOKUP FAILURE.

       Explanation - Cannot  look  up  file  just  written.   Possibly
                     cannot  get  core  blocks,  or there are hardware
                     problems.
       Recovery
       Action -      Program will  cycle  to  the  next  function  and
                     continue operation.

     EO7 -           DISK WRITE AND READ COMPARE FAILURE.

       Explanation - Data read from disk is different  from  what  was
                     written.  Probably hardware failure.
       Recovery
       Action -      Delete file and exit from  disk  I/O  subroutine.
                     Program continues to operate.

     EO8 -           DISK INPUT FAILURE.
       Explanation - Possible hardware error on device.
       Recovery
       Action -      Delete file and exit from  disk  I/O  subroutine.
                     Program continues to operate.

     EO9 -           DISK RENAME FAILURE.

       Explanation - Could not delete disk  file.   Possible  hardware
                     failure.
       Recovery
       Action -      Exit from disk I/O subroutine.  Program continues
                     to operate.











                              CHAPTER 5

                 INSTALLATION-DEPENDENT PARAMETERS  



5.1  LODTST PARAMETERS

     AREA -    Contains the PPN where  the  simulated  user  jobs  are
               stored.  Default value is [5,23] (TST:).

     PRGNAM -  A table containing the  names  of  the  simulated  user
               jobs.   To  add  a new job type to the system, store an
               EXE version of the program under  the  PPN  defined  in
               AREA  and  enter  the job's name as a new entry in this
               table.  The parameter NUMCLS defines the new length  of
               the table automatically.

     KILL -    This is an assembly parameter that  is  stored  as  the
               initial  value  of  the  end-of-test flag.  The default
               value is zero, which gives the EXIT option.  A  nonzero
               value gives the KILL option.

     DEBUG -   This is an assembly parameter that defaults to zero.  A
               nonzero  value  will  include  code  to print any error
               messages received from the subjob on the pseudo-TTY for
               debugging purposes.

     SPOOL -   This is an assembly parameter that defaults to zero.  A
               nonzero  value causes the SYSTATs to be spooled to disk
               by issuing a SET SPOOL LPT command to the job doing the
               SYSTATs.  A zero value causes the SYSTATs to be printed
               immediately on the line printer.

     SYSPRJ -  This is an assembly parameter that defines the  project
               number  of  the  SYSTAT  job  logged in by LODTST.  The
               default value is 1.

     SYSPRG -  This  is  an  assembly  parameter  that   defines   the
               programmer number of the SYSTAT job.  The default value
               is 2.  Note that both this PPN and the  PPN  of  LODTST
               must have high-priority queue privileges to ensure that
               SYSTATs will be printed at accurate intervals.
INSTALLATION-DEPENDENT PARAMETERS                             Page 5-2


5.2  SIMULATED USER JOB PARAMETERS

There are a number of parameters associated with each of the simulated
user  jobs.   Although  the same parameters exist in several jobs (for
example, in LODAVE, LODIO, LODCPU), they  are  defined  separately  in
each  job.   This  is  done  so  that an installation can generate any
number of job types by changing the parameter ranges and defining  new
job  names  in  PRGNAM.   The  meaning  of the parameters is explained
below.

     ERRSLP -  Contains  a  decimal  number  defining  the  number  of
               seconds  to  sleep  after  an error has occurred before
               trying the function again.   This  is  the  delay  time
               indicated  in  the  description  of  error  messages in
               Chapter 4.  The default value is 10 seconds.

               Used in LODAVE,  LODIO,  LODCPU,  LODSLP,  LODPQ1,  and
               LODCOR.

     CORBAS -  Contains a floating-point number defining the base core
               size  in  pages  for  the  routine RANCOR.  The default
               value is 0.

               Used in LODAVE, LODCPU, LODIO, LODSLP and LODPQ1.

     CORRNG -  Contains a  floating-point  number  defining  the  core
               range  for  the  routine  RANCOR.  The default value is
               35.0 pages.

               Used in LODAVE, LODCPU, LODIO, LODSLP, and LODPQ1.

     CORCNT -  Contains  a  decimal  number  defining  how  often  the
               routine  RANCOR  actually  changes core size.  With the
               default value of 10, RANCOR selects a new  random  core
               size every tenth time.

               Used in LODAVE, LODCPU, LODIO, LODSLP and LODPQ1.

     HGHBAS -  Contains a  floating-point  number  defining  the  base
               high-segment  size for the RANHGH routine.  The default
               value is 0.0.

               Used in LODCOR only.

     HGHRNG -  Contains a floating-point number defining the range  of
               high-segment  core  sizes  for the routine RANHGH.  The
               default value is 32.0.

               Used in LODCOR only.

     LOWBAS -  Contains a  floating-point  number  defining  the  base
               low-segment size for routine RANHGH.  The default value
               is 0.0.

               Used in LODCOR only.

     LOWRNG -  Contains a floating-point number defining the range  of
               low-segment  core  sizes  for  the routine RANHGH.  The
               default value is 32.0.

               Used in LODCOR only.
INSTALLATION-DEPENDENT PARAMETERS                             Page 5-3


     MINSIZ -  This parameter is set automatically by each program  in
               the  initialization  routine.   It contains the initial
               program size used by the RANCOR and RANHGH routines.

               Current program sizes are shown below.


                    Program         MINSIZ


                    LODIO             2

                    LODCPU            2

                    LODAVE            2

                    LODPQ1            2

                    LODSLP            2

                    LODCOR            2

                    LODOPN            2


     BLKBAS -  Contains a  floating-point  number  defining  the  base
               number  of  disk words to be written in routine RANDSK.
               The default value is 0.0 word.

               Used in LODIO and LODAVE.

     BLKRNG -  Contains a floating-point number defining the range  of
               words  written in disk I/O routine RANDSK.  The default
               value is 4096.0 words.

               Used in LODIO and LODAVE.

     SLPBAS -  Contains a  floating-point  number  defining  the  base
               sleep  time  for the routine RANSLP.  The default value
               is 0.0 second.

               Used in LODAVE and LODSLP.

     SLPRNG -  Contains a floating-point number defining the range  of
               sleep  times for the routine RANSLP.  The default value
               is 60.0 seconds.

               Used in LODAVE and LODSLP.

     CPUBAS -  Contains a floating-point number defining the base  CPU
               time loop.  The default value is 0.5 second.

               Used in LODAVE and LODCPU.

     CPURNG -  Contains a floating-point number defining the range  of
               the CPU time loop.  The default value is 1.0 second.

               Used in LODAVE and LODCPU.

     SLPRNX -  Contains a floating-point number defining  the  desired
               mean  sleep  time  for  the  exponential  sleep routine
               EXPSLP.  The default value is 6.0 seconds.

               Used in LODPQ1 only.
INSTALLATION-DEPENDENT PARAMETERS                             Page 5-4


     SLPMAX -  Contains a floating-point number defining  the  maximum
               sleep  time  for  the exponential sleep routine EXPSLP.
               The default value is 60.0 seconds.

               Used in LODPQ1 only.

     CPURNX -  Contains a floating-point number defining  the  desired
               mean  CPU  time for the exponential CPU routine EXPCPU.
               The default value is 0.1 second.

               Used in LODPQ1 only.

     CPUMAX -  Contains a floating-point number defining  the  maximum
               CPU  time  loop for the exponential CPU routine EXPCPU.
               The default value is 1.0 second.

               Used in LODPQ1 only.

     DEVLST -  Contains the list of logical device names used  by  the
               RANOPN  routine.  New entries may be added by inserting
               the 6-bit device names into the table.   The  parameter
               DEVNUM   defines   the   new   length   of   the  table
               automatically.

     XITMES -  Contains the KJOB command used in the  KILL  option  of
               the  exit procedure.  It is defined in LODUNV.  It must
               be of the form:

                    KJOB DSK:DUMMYX.LOG=/switches

               The default switches are /K/Z:0/VD:D











                              CHAPTER 6

                            SAMPLE RUNS  



6.1  SAMPLE RUN 1

This sample shows how to run LODTST with input from a disk file.   The
file  contains the responses to all LODTST dialogue questions.  As the
responses are read from the file, they are echoed on  the  controlling
terminal along with the normal prompting messages.

The disk file used in the sample is named WILD.INP.  It contains a set
of  LODTST parameters that generate a very complex job mix that can be
used to verify system software reliability whenever a new  monitor  is
loaded.  The file contents are as follows:

          10                       ;Interval between SYSTATs

          60                       ;Length of test

          M                        ;Job data option

          4,220                    ;Base PPN

          2                        ;MODULO number

          20                       ;20 LODIO jobs

          10                       ;10 LODCPU jobs

          10                       ;10 LODAVE jobs

          10                       ;10 LODPQ1 jobs

          4                        ;4 LODSLP jobs

          8                        ;8 LODCOR jobs

          2                        ;2 LODOPN jobs

The dialogue to start this test is as follows:

     1.  Login a [1,2] job.

     2.  RUN TST:LODTST

     3.  ENTER INPUT FILE SPEC (DEFAULT IS TTY:)
         WILD.INP                    ;Enter the name of the input file

All further responses are read from the disk file WILD.INP.  The  test
proceeds automatically from this point.
SAMPLE RUNS                                                   Page 6-2


6.2  SAMPLE RUN 2

This sample shows how to run a simulation test using an OPSER.ATO file
with  SCDSET  and LODTST reading their parameters from disk files.  In
the sample, the operator copies the SCDSET input file TEST.SCD to  the
standard  input  file SCDSET.INP.  This technique makes it possible to
do multiple runs with the same  job  mix  using  different  scheduling
parameters.  For each run, the operator copies the desired SCDSET file
to the standard input file.

The test procedure is:

     1.  LOGIN a [1,2] job.

     2.  .COPY SCDSET.INP=TEST.SCD

     3.  .R OPSER
         :AUTO TEST.ATO

The simulation test proceeds automatically.

The OPSER.ATO file TEST.ATO contains the following commands:

     :SLOGIN
     :DEFINE LI=
     LI-SET HPQ 1
     LI-R SCDSET
     LI-INPUT
     LI-GET SYS: LINES
     LI-CST
     LI-DET
     :SLOGIN
     :DEFINE M-
     M-RUN TST:LODTST
     M-TEST.INP

The LODTST input file TEST.INP contains the following:

          10                       ;Interval between SYSTATs

          30                       ;Length of test

          M                        ;MODULO option

          4,204                    ;Base PPN

          1                        ;All jobs under 4,204

          12                       ;12 LODIO jobs

          12                       ;12 LODCPU jobs

          28                       ;28 LODAVE jobs

          8                        ;8 LODPQ1 jobs

          0                        ;No LODSLP jobs

          0                        ;No LODCOR jobs

          0                        ;No LODOPN jobs