--------------------------
#
# average: average all of the data files in the given directories
#


--------------------------
#
# boxlog - plot a box plot of distribution of a given event's datum
#   (eg idle time) for a set of elogs
#
# usage:
#   boxlog [-t title] eventcode elogfile...
# Finds the distribution of the data for the given event, for each log.
# Computes the box plot for each distribution and plots them all on one plot.
# The box plot shows the min, max, median, and upper/lower quartiles
#  of the distribution. The plots are ordered in the order the files
#  are given. The x axis is the data axis, the y axis is the file# axis.
# Logs are numbered in the order given.
# Uses bin/boxplot


--------------------------
#
# codelog - rewrite an elogdump in "English", using the event code
#  names
#
# This is meant only for rapid-transit logs. A more general version 
# would be possible in C, I suppose.
#
# usage:
#  elogdump [opts] logfile | codelog 
#


--------------------------
#
# cvident - list the cv with each filename, sorted by cv
#    This goes with cvplot. See that for some explanation. This
# program pairs the cv with the filename, and sorts it, so it is easy
# to find out who has the high cv
# 
# usage:
#   cvident column file.data...
# where column is a column number in the data files (eg 3 is total time). 


--------------------------
#
# cvplot - plot the CDF of the coef of variation for a set of data files.
#    The coef of variation is the std.dev. divided by the mean. Here
# the sample is the 5 or so trials for a given experiment. One hopes
# for a low coef of variation.
# 
# usage:
#   cvplot column [-t title] file.data...
# where column is a column number in the data files (eg 3 is total time). 


--------------------------
#
# demand - print the average demand-wait time for each elog
#
# usage: demand <log.elog>...
#
# Where log is a NORMAL style elog, not a LOG2 type.


--------------------------
#
# diskbusy - plot the number of disks busy over time
#    Note that the plot is shifted by +1 in the y direction, to keep
#  it off the x-axis line.
# This uses the new RTELOG_DISKUSED events
#
# usage: diskbusy logfile.elog...


--------------------------
#
# diskused - plot the disk used for each demand or prefetch issued
#
# This uses the new RTELOG_DISKUSED events
#
# It plots them in a sortof gantt chart 
#
# usage: diskused from to logfile.elog...
#  only intervals [from..to] are plotted. See pickint for details.


--------------------------
#
# diskused - plot the disk used for each demand or prefetch issued
#
# Unfortunately, the timing is not perfect; the time used is that of
# the demand fetch or prefetch elog entry, not when the disk request 
# was queued.
#
# It plots them in a sortof gantt chart 
#
# usage: diskused from to logfile.elog...
#  only intervals [from..to] are plotted. See pickint for details.


--------------------------
#
# diskwait - plot the disk wait time, over time for all disks
#
# This uses the new RTELOG_DISKWAIT events
#
# usage: diskwait logfile.elog...


--------------------------
#
# diskwaittime - print the disk wait time for all disks
#
# This uses the new RTELOG_DISKWAIT events
#
# usage: diskwaittime logfile.elog


--------------------------
#
# diskwaitused - plot the disk wait time, over time, for all disks separately
#
# This uses the new RTELOG_DISKWAIT and RTELOG_DISKUSED events
#
# usage: diskwaitused logfile.elog...


--------------------------
#
# elogfull - report any elogs that overflowed or aborted; ie, that
#    do not have all E_END events in them.
#
# Even this is not a sure measure, as there are often SWAPOUT events
# after E_END.
#
# usage:
#   elogfull logfile...


--------------------------
#
# exall - extract from all files a particular column
#   Useful only for prefetch/no prefetch directories.
#   Not useful for noncached or writing directories.
# 
# usage
#  exall col name dir...
# where col is the column number to extract, name is the name of the
# column (eg total, or tread), and dir... is a list of directories 
# to do it in. It extracts non-prefetched files separately from
# prefetched files, and also extracts the improvement data.
#


--------------------------
#
# extract - extract one column of a set of data files 
#
# usage:
#   extract [-s] [-i | -ic] col file.data-a ...
# 
#  A list of the datum from that column from each file will appear on
# the standard output.
#  The -i flag will use the IMPROVEMENT in that column instead of the raw
# data. The file should be a prefetching file that also has a
# non-prefetched base. 
#  The -ic flag will use the improvement due to non-computation in that
# column instead of the raw data. The file should be a computation
# file that also has a non-computation base.
#  The -s flag will use the std.dev line from the data files instead.
#
# *** WARNING *** 
# The improvement used here is the negative of what is used everywhere
# else, so reductions are listed positive, increases are listed negative
# -- this fits the intuitive notion of most columns that smaller numbers
# are "better".


--------------------------
#
# extracterr - extract one column, plus error, of a set of data files 
#
# usage:
#   extracterr col file.data-a ...
# 
#  Three columns are output: avg, avg-stddev, avg+stddev.
# One line per data file. 
#  These could be used to make an error-bar plot. 


--------------------------
#
# gantt - plot a gantt chart for the given elogs
#
# This picks out the key events - read, demand, hit, prefetch, etc.
# Then it plots them in a sortof gantt chart 
#
# usage: gantt from to logfile.elog...
#  only intervals [from..to] are plotted. See pickint for details.


--------------------------
#
# gapstimes - extract the times from elogs created with the GAPS or
#   RGAPS predictors. These are times needed for various parts of the
#   predictor.
#
# usage: gapstimes logfile...
#
# (logfile may a be compressed elog)
# creates files with the same base filename as logfile, with suffixes:
#    notify  random  contin  wfifo  watch  toseq
# The output files have two columns: elapsed time and event time (in msec)


--------------------------
#
# gapstplot - plot a gapstimes file as a cdf
#
# usage:
#   gapstplot pattern alg synch event
# where pattern is the directory, alg and synch are one-letter codes,
# and time is the event name (contin, watch, etc).


--------------------------
#
# global - make the global file from sub files
#
# usage: global columnname...


--------------------------
#
# idleqq - plot the QQ of idles for a given prefetch elog (pair)
#
# usage: idleqq <log.elog> [<log2.elog>]
#
# Where logs are a NORMAL style elog, not a LOG2 type.
# If one elog is given, the second is assumed to be the
# non-prefetching version of the first. 
# The first file is on the y axis, the second on the x axis.


--------------------------
#
# improve: list the improvement due to prefetching for all sets of parameters
#
# average must be run first


--------------------------
#
# interval - print length of all intervals for all procs, with 
# maximum and LBE listed
#
# usage: interval <log.elog>...
#
# Where log is a NORMAL style elog, not a LOG2 type.


--------------------------
#
# lbe - print LBE value for all intervals in a log
#
# usage: lbe <log.elog>
#
# Where log is a NORMAL style elog, not a LOG2 type.


--------------------------
#
# lbeall - collect LBE value for all intervals in all logs in dir
#
# usage: lbeall dir...
#


--------------------------
#
# lbeplot - plot LBE distribution for several logs
#
# usage: lbeplot [-t title] <log.elog>...
#
# Where log is a NORMAL style elog, not a LOG2 type.


--------------------------
#
# makedoc - make a documentation listing for Process directory
#
# takes the top few comments from each csh script


--------------------------
# miss2ratio - convert absolute misses to ratio
#   very crude.
#
# usage:
#  miss2ratio file...
# changes are made in place
#


--------------------------
#
# mpextract - extract multiple parameters from a set of data files 
#
# usage:
#   mpextract col1 col2 file.data-a ...
# 
# col1 and col2 specify a range of columns from col1 to col2
# inclusive. 
#   A list of the parameter from those columns from each file will appear on
# the standard output. The parameters are numbered as in the file PARMS.
# The first two parameters, pattern/prefetch? may not be extracted 
# correctly.
#
# WARNING: pipe through 'dm x1' or equivalent to strip leading zeroes
# from each column, if desired. Remember scanf bug.


--------------------------
#
# noncachefile - give the name of the non-cached file corresponding
# to each cached file given as an argument. One is output on each line.
#
# usage:
#  noncachefile file...
#
# typical usage:
#  set base=`noncachefile $file`
# or
#  set bases=`noncachefile $files`
#


--------------------------
#
# nonprefile - give the name of the non-prefetched file corresponding
# to each prefetching file given as an argument. One is output on each line.
#
# usage:
#  nonprefile file...
#
# typical usage:
#  set base=`nonprefile $file`
# or
#  set bases=`nonprefile $files`
#


--------------------------
#
# pexall - extract from all files a particular parameter
#
# usage
#  pexall col name dir...
# where col is the parameter number to extract, name is the name of the
# parameter (eg, limit), and dir... is a list of directories 
# to do it in. It extracts non-prefetched files separately from
# prefetched files.
#


--------------------------
#
# pextract - extract one parameter from a set of data files 
#
# usage:
#   pextract col pat/file.data-a ...
# 
#  A list of the parameter from that column from each file will appear on
# the standard output. The parameters are numbered as in the file PARMS.
#
# Though the usage indicates that there should be a directory name as
# part of each file name, it is not necessary.
#


--------------------------
#
# pickint - pick out specific synch intervals from the elogdump coming
#  through the stdin.
#
# usage: elogdump foo.elog | pickint from to
# selects intervals [from..to] (inclusive). If "to" is missing, it means
# to=from. If to=0, it means print through the end of the log.
# To include the stuff before the E_BEGIN,
# use from=0. If from > to, nothing is printed. 
# Note that pickint 0 selects the whole log (a no-op). 
#
# This requires at least event codes 5, 6, and 3 to be included in the log.
#


--------------------------
# 
# printparms - print the parameters by looking at one of the file names
#


--------------------------
#
# printwide - print in wide mode on either printer
#


--------------------------
#
# readtime - print the fivepoint summary for read time distribution for
# each elog, one log per line. Each line begins with the file name.
#
# The output of this program can be plotted with boxplot -5
# For example,
#    readtime *.elog | boxplot -5
#
# usage: readtime <log.elog>...
#
# Where log is a NORMAL style elog, not a LOG2 type.


--------------------------
#
# readyhits - return the fraction of sectors that were ready when hit
# This is the value of the cdf at zero.
#
# usage: readyhits <log.elog>...
#
# Where log is a NORMAL style elog, not a LOG2 type.


--------------------------
# 
# results - print  a huge table of results for the given directories
#
# usage: 
#   results [-w] dir...
#


--------------------------
#
# scatter - produce a scatter plot of two data sets
#
# usage:
#   scatter [-t title] file1 file2
# where each file has an ordered set of data values, one value per line.
# They should have the same number of points.
# File1 will appear on the y axis, file2 on the x axis.
#


--------------------------
#
# superexall - do all the standard exall's
#
# usage
#  superexall dir...
# where dir... is a list of directories 
# to do it in.
#


--------------------------
# tics2msec - convert file to msec


