# This file contains following sections:
# - jApp workload driver properties
# - Diagnostic and driver scaling parameters
# - SPECvirt rmiPort, warmUp settings
# - Fixed properties, changing them will cause non-compliant results
#   -- jApp driver fixed properties
#   -- SPECvirt burstiness, loadFactor, etc


# --------------------------------------------------------------------------------- #
# This is the input properties file to the SPECjAppServer driver                    #
# All entries must be of the form <name> = <value> where spaces or tabs             #
# are allowed as seperators.                                                        #
# See the JDK documentation of the Properties.load method for more info             #
# --------------------------------------------------------------------------------- #
# Url is the url of the SPECjAppServer2004 web application.
Url=http://specdelivery:8000/SPECjAppServer/app?

# --------------------------------------------------------------------------------- #
# Name of  directory in which output of runs go                                     #
# --------------------------------------------------------------------------------- #
outDir = /opt/SPECjAppServer2004/output


# --------------------------------------------------------------------------------- #
# Optional command to invoke RMI registry                                           #
# default is JAVA_HOME/bin/rmiregistry.  Uncomment this entry to specify a          #
# specific rmiregistry.                                                             #
# --------------------------------------------------------------------------------- #
# rmiCommand = /usr/java/bin/rmiregistry


# --------------------------------------------------------------------------------- #
# dumpDir is directory to dump output to = /tmp on Unix.  The names of output       #
# files will be /tmp/ords_thruput and /tmp/mfg_thruput.  Note that these files need #
# to be named pipes, the 'driver.sh' script will create the pipes before each run.  #
# If you change dumpDir, be sure to edit ../driver.sh                               #
# --------------------------------------------------------------------------------- #
dumpDir = /tmp


# --------------------------------------------------------------------------------- #
# Time between launching each thread, in millisecs.                                 #
# --------------------------------------------------------------------------------- #
msBetweenThreadStart = 15


# --------------------------------------------------------------------------------- #
# Run times in seconds                                                              #
# Trigger time is the amount of time it takes for all the client threads            #
# to start up. It will depend on the number of threads per JVM                      #
# The driver will automatically set the minimum trigger time if triggerTime=0       #
# and the msBetweenThreadStart > 0                                                  #
# --------------------------------------------------------------------------------- #
triggerTime = 90


# --------------------------------------------------------------------------------- #
# How many agents to run                                                            #
#                                                                                   #
# - Note:  If required for client scaling the number for runDealerEntry and         #
#          runMfg can be specified as a numeric value greater than 1.  This         #
#          indicates to the driver the number of agents to start.  For example,     #
#          runDealerEntry = 3 would start three DealerAgents and the client threads #
#          would be evenly distributed across the clients.  Test runs have been     #
#          successfully completed up to an Ir of 600 without changing these values. #
# --------------------------------------------------------------------------------- #
# *NOTE:  Number of LO agents must match what is deployed in the SPECjApp ear on 
#   the appserver VMs. If you change it in the ear, update here as well.
runDealerEntry = 1
runMfg = 1
runLO = 2

homePrefix = ejb/

# --------------------------------------------------------------------------------- #
#                                                                                   # 
#                 Diagnostic and driver scaling parameters                          #
#                                                                                   #
# These parameters are used for scaling the driver system and are generally used    #
# for either diagnostic purposes or for scaling the driver on one or multiple       #
# driver systems.  They are ordered by properties for scaling and diagnostic        #
# purposes.                                                                         #
#                                                                                   # 
# --------------------------------------------------------------------------------- #

# --------------------------------------------------------------------------------- #
# This property is used for scaling the driving system.  When set to false it       #
# assumes that the driver is on a single system (the default).  When set to true    #
# the launcher will not start the controller or the driver manager.  This means     #
# that only the number of DealerAgents and MfgAgents as specified above will be     #
# started.  This is for scaling large workloads and has not been needed for loads   # 
# up to an injection rate of 600.                                                   #
# --------------------------------------------------------------------------------- #
satellite=false


# --------------------------------------------------------------------------------- #
# These properties are used to set the driver agent's name.  You would change these #
# properties only when running the Launcher/Driver in a distributed mode for        #
# driver scaling.  This is not related to the runtime configuration of              #
# centralized/distributed workload.  This is used to ensure that all agents for a   #
# given test configuration are unique.                                              #
# --------------------------------------------------------------------------------- #
dealerEntryStartingNumber=1
mfgStartingNumber=1
loStartingNumber=1


# --------------------------------------------------------------------------------- #
# satPostRunWaitTime is the amount of time a satellite driver waits after the run   #
# completes before exiting. This gives the master driver time to gather all results #
# from the satellite agents. For high injection rates, this parameter might have to #
# be increased, since the driver would need more time to complete auditing and      #
# collect results.                                                                  #
# --------------------------------------------------------------------------------- #
satPostRunWaitTime = 600


# --------------------------------------------------------------------------------- #
# This property is used for diagnotics on the driver side.  When set to true stderr #
# is redirected to a file on the filesystem for each of the driver agents (Dealer,  #
# Mfg and LargeOrder).  The files will be created in the directory the driver is    #
# started in.  They will be named based on the agent name (ie. D1.err, M1.err,      #
# L1.err, etc).                                                                     #
# --------------------------------------------------------------------------------- #
redirectStderr=false


# --------------------------------------------------------------------------------- #
# Heap settings for Dealer and Mfg agent                                            #
# --------------------------------------------------------------------------------- #
dlrAgentMinHeapMB = 1024
dlrAgentMaxHeapMB = 1024
mfgAgentMinHeapMB = 512
mfgAgentMaxHeapMB = 512


# ----------------------------------------------------------------------------------#
#                                                                                   #
#                           SPECvirt specific SPECjApp features:                    #
#                                (rmiPort, warmUp settings)                         #
#                                                                                   #
#-----------------------------------------------------------------------------------#
rmiPort=2098


#-----------------------------------------------------------------------------------#
# warmUpStyle = one of three modes for warmUp:                                      # 
#   NOTE: Only warmUpStyle 0 and 1 can be used for a compliant SPECvirt_sc2013      #
#         benchmark run.                                                            #
#     0 = Linear only.  Warmup will linearly increase load from IR=0 to IR=warmUpIR #
#         over the entire warmUp phase.                                             #
#     1 = Linear followed by the normal 'burstiness curve' for each given tile,     #
#         until poll interval begins.                                               #
#     2 = Linear followed by 'IR neutral zigzag mode' (technically, an alternating  #
#         linearly increasing/decreasing ) cancelling IR until poll interval begins #
#     *For modes 1 and 2, if linearWarmUpPercentage=1.0, the behavior will be the   #
#      same as mode 0.                                                              #
#     **For modes 1 and 2, when poll interval starts, each tile will begin at the   #
#       predetermined burst point for that tile, regardless of where the warmup IR  #
#       was just prior to poll interval begining.                                   #
#
#   ******************************************************************************  #
#   ******************************************************************************  #
#   ******************************************************************************  #
#    Compliant SPECvirt runs using the burstiness curve during warmUp MUST ensure   #
#    that the following holds true:                                                 #
#        (1.0 - linearWarmUpPercentage) * WARMUP_SECONDS = 1200 * X                 #
#        (where X is a whole number >=1 ).                                          #
#   ******************************************************************************  #
#   ******************************************************************************  #
#   ******************************************************************************  #
#
#    This is to ensure that there is a smooth transition from the warmUp burstiness #
#    phase into the polling interval phase. i.e., the last IR point of the warmUp   #
#    burstiness phase corresponds to the IR point immediately prior to the given    #
#    "tile #" * startPointMultiplier (See definition of startPointMultiplier above) #
#
# The appserver warm up configuration parameters: warmUpStyle, warmUpIR,
# linearWarmUpPercentage, and warmUpStepRate must be uniform across all tiles.
# Note: The Control.config option: PRIME_CONFIG_FILE[0] = "run.properties" may 
# be used to help ensure all appserver workloads use the same settings.
#-----------------------------------------------------------------------------------#

#-----------------------------------------------------------------------------------#
#  Default warmUpStyle = 0 (linear IR warmUpIR from 0 to warmUpIR
#-----------------------------------------------------------------------------------#
#warmUpStyle = 0


#-----------------------------------------------------------------------------------#
#warmUpIR = ramp up to an IR other than txRate (or average IR of the 'burstiness curve').  
# This may be useful if the application server responds/performs better if it is warmed up 
# to a higher IR than the avg IR.  (Avg IR = 100 for SPECvirt bustriness runs). 
# Default warmUpIR = 100
#-----------------------------------------------------------------------------------#
#warmUpIR=100


#-----------------------------------------------------------------------------------#
#linearWarmUpPercentage = percentage of warmUp time used to linearly increase to    
#the warmUpIR. 
#  E.g., if the WARMUP_SECONDS in Control.config is 1500 seconds and linear warmup=0.20,
#  then for the first 300 seconds of warmup, the IR will increase linearly from 0 to 
#  'warmUpIR' (20 by default)
#The default linearWarmUpPercentage is 1.0.
#The value of .20 below is provided as an example of a value you might want to use 
#when using a warmUpStyle other than 0.
#-----------------------------------------------------------------------------------#
#linearWarmUpPercentage=.20

#-----------------------------------------------------------------------------------#
#warmUpStepRate (only applies for values of linearWarmUpPercentage not equal to 1.0).  
#  warmUpStepRate = The rate (in milliseconds) each tile will either increase or 
#  decrease 1 IR value up to the maxTxRate of the bursty curve.  The IR will increase to maxTxRate, 
#  then decrease to zero, then back to maxTxRate, etc - until the polling interval starts.
#-----------------------------------------------------------------------------------#
#warmUpStepRate=40000






##################################################################################### 
##                                                                                 ##
##                        FIXED WORKLOAD PROPERTIES                                ## 
## Changing any of the property values, below, will result in a                    ##
## NON-COMPLIANT benchmark run                                                     ##
##                                                                                 ##
##################################################################################### 




# --------------------------------------------------------------------------------- #
#                                                                                   #
#                       jApp driver fixed properties                                #
#                                                                                   #
# --------------------------------------------------------------------------------- #


# --------------------------------------------------------------------------------- #
# Enable this to turn the benchmark to EAStress Research Workload mode.
# This turns off the LargeOrders line and changes the metric to HASOPM.
# This property is not supported for SPECvirt benchmark.
# --------------------------------------------------------------------------------- #
researchMode = false


# --------------------------------------------------------------------------------- #
# Set to 1 to gather Audit Reports (required for submission).  Set to 0 to ignore.  #
# When set to 1 the Audit Session beans in the various domains will confirm         #
# database cardinality, reset the emulator and supplier Servlets.  Set to 0 for     #
# testing if auditing is not required.                                              #
# --------------------------------------------------------------------------------- #
doAudit = 1

# --------------------------------------------------------------------------------- #
#  Transaction weights.  These cannot be changed for publishing runs.               #
# --------------------------------------------------------------------------------- #
purchaseWeight = 25
manageWeight = 25
browseWeight = 50

# dumpStats will cause data to be dumped during the run for Charting
# WARNING: Setting this to 1 will cause the Driver to hang, unless the
# charting application has been started first
dumpStats = 0

# Set this if your app server has prefix for ejb jndi names 
# make sure you have included trailing '/' in the name

# dlrDumpTarget and mfgDumpTarget are the targets stats info is written to.
# They can be file names or port numbers. In the case of port numbers, the
# driver will serve as the server allowing stats display tools like charts
# to join in.
dlrDumpTarget = 9988
mfgDumpTarget = 9989

# --------------------------------------------------------------------------------- #
#  The following parameters are generally not changed but available for enabling    #
#  debugging  the http conversation between the DealerEntry threads and the SUT     #
#  HTMLOUTPUT=true :  will write all non error html to a .trc file in current dir   #
#  DEBUGOUTPUT=true : will write all error html to a .trc file in current dir       #
#  Warning: turning these flags to true will significantly reduce throughput so use #
#           only at low txrates                                                     #
# --------------------------------------------------------------------------------- #
HTMLOUTPUT=false
DEBUGOUTPUT=false


# The following parameters should not be changed
scaleFactor = 1
numPGS = 1

# --------------------------------------------------------------------------------- #
# RTThinkThreshold, and ThinkBoost are experimental knobs used during SPECvirt      #
# prototyping. Unless you really know what you are doing, these should remain at the#
# below levels (7000, and 1.0) else the run will be non-compliant                   #
# --------------------------------------------------------------------------------- #
#RTThinkThreshold=7000
#ThinkBoost=1.0



# ----------------------------------------------------------------------------------#
#                                                                                   #
#                       SPECvirt specific SPECjApp features:                        #
#                           (burstiness, loadFactor, etc)                           #
#                                                                                   #
#-----------------------------------------------------------------------------------#

# --------------------------------------------------------------------------------- #
# The timestamps on all three tiers (client, appserver VM, and database VM)         #
# must be synched to be within +/- timeSkewTolerance of each other                  #
# in order to be considered a compliant run. The orders table Audit check           #
# is a count of transactions that occurred within the timestamps bounded by         #
# the beginning and end of the 'POLL_INTERVAL_SECS' (a.k.a., the                    #
# measurement interval, which is set in Control.config).  The only compliant        #
# value that can be used is 3 seconds.  Using a skew tolerance other than 3         #
# seconds results in the run being flagged as non-compliant.                        #
# --------------------------------------------------------------------------------- #
#timeSkewTolerance = 3

# --------------------------------------------------------------------------------- #
# Loadfactor: For the SPECvirt modified driver, where the Dealer and Mfg agents use # 
#    a database larger than the injection rate by a given factor  (IR * loadFactor) #
#    The database MUST be loaded for txRate * loadFactor.                           #
# --------------------------------------------------------------------------------- #
#loadFactor = 5


# --------------------------------------------------------------------------------- #
# ChangeRate:  In an effort to increase the DBMS disk I/O given the increased database
#    working set, 'changeRate' is used to determine the frequency (per minute) of user 
#    login/logouts. 
#
#    E.g., changeRate = 10 means that over every minute of the test, 10 ( randomly
#    chosen) dealers will logout of the appserver, then log back in as new (randomly 
#     chosen) dealers. 
#    Changerate occurs uniformly, meaning that for the above example, every 6 seconds 
#     a dealer logout/login occurs. 
# --------------------------------------------------------------------------------- #
#changeRate = 30

 
# --------------------------------------------------------------------------------- #
# "burstyMode":   Uses the "burstyCurve" values to vary the IR during the run. 
#     The txRate MUST be the *average* IR for the bursty curve used.
#
# "stepRate": The stepRate determines the frequency of the curve, and defines 
#     the amount of time (in milliseconds) between consecutive points on the 
#     curve. Default = 40000
#
# "smoothFactor": To prevent an artificial 'stair step' setting of the IR, 
#     intermediate points between consecutive values will be set using the 
#     "smoothFactor" parameter. Default =1 (i.e., there will be no intermediate IR 
#     values between points on the curve)
#
#     E.g., with stepRate=40000, and a smoothFactor=2, every 20 seconds 
#     (40000 / 2) an intermediate point between the current IR value and the 
#     next IR value is sent to all Dealer and Mfg agents. The intermediate IR values
#     are scaled linearly between the current and next IR points.
#            
# "startPointMultiplier": The corresponding 'tile number' along with 'startPointMultiplier' 
#     is used to determine where each tile will *begin* in the 'burstyCurve' array 
#     at the beggining of the steady state (polling interval).  The formula used is:
#
#     StartingPoint = (TileNumber * startPointMultiplier) 'modulus' 30 
#
#     (*The default curve has 30 points in the array)
#         
#     For example, if the burstyCurve has 30 values, and 'startPointMultiplier'=
#     7, for Tile #4, once steadyState start time is reached the IR rate 
#     will be set to start at the 28th burst point on the burstyCurve (and will 
#     proceed from that point at the beggining of steadyState). Tile Number 1 
#     will start at point 7, Tile 2 will start     at point 14, etc...
#
#     When the last point on the curve is reached, the next point will be set to
#     the first burstyCurve point (point '0') and will continue from there.
# --------------------------------------------------------------------------------- #
# For bursty mode, set txRate to the average value of the curve.  The following 
# 100IR curve is the compliant curve for SPECvirt_sc2013.
burstyCurve=37,72,61,87,132,77,0,49,137,93,187,103,174,138,200,173,153,107,225,44,36,44,48,68,138,125,116,88,38,50
#burstyMode = 1
#stepRate=40000
#smoothFactor=1
#startPointMultiplier=7
#txRate = 100
# --------------------------------------------------------------------------------- #
# Dealer Injection rate/PlannedLine workorder rate                                  #
# This will cause 10*txRate DealerEntry threads and 3*txRate PlannedLine threads    #
# --------------------------------------------------------------------------------- #

