[mod.computers.vax] response time on VMS

jl%dac.triumf.cdn%ubc.CSNET@CSNET-RELAY.ARPA (John Lloyd) (05/20/86)

A helpful thing to do is run an interactive-priority batch job
every hour to sample the response time.  Have it run in its own
queue (or a system manager's queue) to prevent interaction
with user jobs.

It should

 sample the current time (f$time())
 sample the cpu time (f$getjpi(...))
 do something "representative".  We measure disk operation counts using
    f$getdvi, group logical names to store previous measurements, and
    several lines of DCL to calculate the differences.
    It doesn't really matter what this step is, as long as you don't
    change it, in order to keep measurements comparable over the course
    of a few months.
 resubmit the batch job
 sample the current time
 calculate the elapsed time difference (half dozen lines of DCL)
 open/append a log file and write the results.

Then, write a little program to read the log file, calculate interesting
figures like average, std deviation (we use 80 percentile response), max,
min.  The program we use calculates each of thiese figures for all 24
hours of the day (hence 30 x 24 measures become 24), and writes out a
small file.  Next, a little Datatrieve graphing and you have things
like

 graph of best, worst, average response time (seconds) by hour of day(0..23)
 graph of normalized response time (average, 80 percentile divided
    by "best") by hour of day (We call it "stretch factor")

By appending all your samples, and plotting average or worst or whatever
by the week for the last few months on a scatterplot, you get a bit of
an idea whether your response times are getting better or worse as time
goes by.

I can send some sources if anyone feels lazy, but your best choice for
the DCL part must be made knowing the workload your VAX(es) run.

PS: In a cluster batch jobs start up to 1 or 2 minutes early, as only one
VAX is the timekeeper.  Use this trick to resubmit a job "on the hour":
  now=f$cvtime("+0000-1:30:00.00","ABSOLUTE")
  hour=f$cvtime(now,"ABSOLUTE","DATE")+":"+ -
       f$cvtime(now,"ABSOLUTE","HOUR")+"::"
  me=f$environment("PROCEDURE")
  me=f$elem(0,";",me)
  submit /after="''hour'" 'me' /nolog /...etcetera

------
John