########################################################################
#
# SPECmail_fixed.txt
#
# SPECvirt IMAP workload fixed properties file.
#
########################################################################

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

# Below are two parameters required for running SPECvirt IMAP workload
# CS6A = how many messages to APPEND to the SPEC mail folder
#CS6A = 35
CS6A = 1
#CS6R = how many messages to FETCH from the INBOX mail folder
#CS6R = 70
CS6R = 1
#HEADER_SEARCHES = how many SEARCH ALL SUBJECT searches occurs per INBOX loop
#HEADER_SEARCHES = 35
HEADER_SEARCHES = 1

# READBUFFERKBYTES determines the size of the client's receive buffer 
# (in Kbytes) used for reading the responses from the IMAP server
READBUFFERKBYTES = 50

# The mix tolerances (LOW_MIX_HEAVY-WEIGHT_TOLERANCE, 
# LOW_MIX_HEAVY-WEIGHT_TOLERANCE, REGULAR_MIX_TOLERANCE) are used after the run
# to validate that the actual IMAP command mix distribution is within the
# expected limits.  For some IMAP commands which occur infrequently but consume
# a fairly heavy amount of IMAP server resources (LOW_MIX_HEAVY-WEIGHT), the
# variation between the target mix and actual mix has increased tolerances for
# validation. 
#
# For IMAP commands that are used primarily to maintain the consistency of the
# user mailboxes from run-to-run (LOW_MIX_LOW-WEIGHT), this tolerance is 
# further relaxed to alleviate unreasonably high 'validation failures' that may occur for these low-impact txns.
#
#    LOW_MIX_LOW-WEIGHT transactions include: EXPUNGE, STORE_ALL_FLAGS_DELETED,
#    STORE_ALL_FLAGS_UNDELETED
#
#    LOW_MIX_HEAVY-WEIGHT transactions include: Connect, 
#    FETCH_NUM_RFC822HEADER_MIX, LOGIN, LOGOUT, SEARCH_UNSEEN
# 
#    REGULAR_MIX transactions include: APPEND, FETCH_RFC822, SEARCH_ALL_SUBJECT,
#    SELECT_INBOX, SELECT_INBOX.SPEC, UID_STORE_NUM_UNSET_FLAGS_SEEN_MIX

LOW_MIX_LOW-WEIGHT_TOLERANCE = 0.10
LOW_MIX_HEAVY-WEIGHT_TOLERANCE = 0.05
REGULAR_MIX_TOLERANCE = 0.015

APPEND_MIX = 26.712
FETCH_RFC822_MIX = 67.808
SEARCH_ALL_SUBJECT_MIX = 3.425
SEARCH_UNSEEN_MIX = 2.055

Connect_MIX = 100.0
EXPUNGE_MIX = 1.3333333
FETCH_NUM_RFC822HEADER_MIX = 515
LOGIN_MIX = 100.0
LOGOUT_MIX = 100.0
SELECT_INBOX_MIX = 8.852222337
SELECT_INBOX.SPEC_MIX = 7.936475199
STORE_ALL_FLAGS_DELETED_MIX = 1.333333
STORE_ALL_FLAGS_UNDELETED_MIX = 1.333333
UID_STORE_NUM_UNSET_FLAGS_SEEN_MIX = 30.00

########################################################################
########################################################################
#  
#  Most, if not all of the below values do not apply for the SPECvirt
#  IMAP workload and should never be changed. 
#
########################################################################

# The load factors with which we scale the load in a 
# set of consecutive test runs.
# Original POP3 benchmark
# LOAD_FACTORS = "80%;100%;120%"
# IMAP benchmark changed due to overall storage growth during run
LOAD_FACTORS = "100%"

# The size of a message distribution
#MSG_SIZE_DISTRIBUTION = "10240,18.51%; 15360,19.50%; 30720,14.29%; 51200,20.00%; 61440,26.00%; 81920,1.00%; 92160,0.50%; 102400,0.14%; 1024000,0.05%; 2738998,0.01%"
MSG_SIZE_DISTRIBUTION = "12008,100%"
# The number of recipients for a message distribution
#MSG_RECP_DISTRIBUTION = "1,46.3875%; 2,11.00%; 3,9.00%; 4,8.00%; 5,7.00%; 6,6.00%; 7,5.00%; 8,4.00%; 10,2.00%; 11,1.00%; 12,0.30%; 13,0.10%; 14,0.05%; 15,0.05%; 16,0.05%; 30,0.05%; 50,0.01%; 100,0.0025%"
MSG_RECP_DISTRIBUTION = "1,50%; 2,50.00%"

# The size of a given MIME part
#MIME_PART_SIZE = "2,0.6%; 4,0.1%; 8,0.4%; 16,0.8%; 32,1.8%; 64,4.1%; 128,7.2%; 256,10.5%; 512,15.6%; 1024,13.6%; 2048,13.9%; 4096,13.4%; 8192,8.5%; 16384,4.3%; 32768,2.3%; 65536,1.2%; 131072,0.7%; 262144,0.4%; 524288,0.3%; 1048576,0.2%; 2097152,0.1%"
MIME_PART_SIZE = "2048,100%"

# The depth of a given MIME part (nesting)
MIME_PART_LEVEL = "1,100%"

# The number of top MIME parts
MIME_TOP_PART_COUNT = "1,100%"

########################################################################
# Data Rate values
########################################################################

# The distribution of speed of simulated local connections
# ETHERNET mean full speed - no simulated delay
DATA_RATE_DISTRIBUTION = "ETHERNET,20.0%; FAST,80.0%"

# Characters per second for 28.8Kbps modem; used for SLOW in DATA_RATE_DISTRIBUTION
SLOW_MODEM_DATA_RATE = 2750

# Characters per second for 56.6Kbps modem; used for FAST in DATA_RATE_DISTRIBUTION
# (not used in the default workload)
FAST_MODEM_DATA_RATE = 5500

# Characters per second for 2Mbps cable; used for CABLE in DATA_RATE_DISTRIBUTION
# (not used in the default workload)
CABLE_MODEM_DATA_RATE = 200000

########################################################################
# Remote delivery values
########################################################################

# The percentage of remote deliveries which are to be refused immediately
REMOTE_REFUSED_PERCENT = 2

# The distribution of response delays in milliseconds for those connections
# that are accepted (as opposed to REFUSED).
REMOTE_DELAY_DISTRIBUTION = "0,75%;500,10%;1000,5%;3000,4%;5000,3%;10000,2%;20000,0.75%;86400000,0.25%"

########################################################################
# Timeouts and Quality of Service (Qos) values
########################################################################

# The time after which a connection is deemed to have timed out
PROTOCOL_TIMEOUT_SECONDS = 60

# The percentage of connections that should NOT time out
PROTOCOL_TIMEOUT_PERCENT = 99

# The percentage of client connections that will unexpectedly 
# disconnect
DISCONNECT_PERCENT = 1

# The percentage of SMTP messages that should be checked for QoS
DELIVERY_TIME_CHECK_PERCENT = 1.0

# The number of seconds within which a local SMTP message should 
# be delivered to meet the QoS standard
SMTP_DELIVERY_QOS_SECONDS = 60

# The percentage of local SMTP messages that should be delivered
# within the time limit to meet the QoS standard
SMTP_DELIVERY_QOS_PERCENT = 95

# The number of seconds within which a remote SMTP message should 
# be delivered to meet the QoS standard
REMOTE_DELIVERY_QOS_SECONDS = 60

# The percentage of remote SMTP messages that should be delivered
# within the time limit to meet the QoS standard
REMOTE_DELIVERY_QOS_PERCENT = 95

# The number of seconds within which a simple command should respond
# to meet the QoS standard
SIMPLE_COMMAND_QOS_SECONDS = 5

# The percentage of simple commands that should respond within the
# time limit to meet the QoS standard
SIMPLE_COMMAND_QOS_PERCENT = 95

# The number of seconds within which a complex command should respond
# to meet the QoS standard
COMPLEX_COMMAND_QOS_SECONDS = 5

# The percentage of complex commands that should respond within the 
# time limit to meet the QoS standard
COMPLEX_COMMAND_QOS_PERCENT = 95

########################################################################
# Values for determining SMTP load
########################################################################

# Percent of provisioned users receiving messages in the peak hour (also known as 'Active users').
PEAK_PCT_USERS = 78

# Number of messages received by 'Active users' in the peak hour
MSG_RECEIVED_PER_PEAK_HOUR = 5

# Percentage of total messages sent from Local users to Local users
LOCAL_TO_LOCAL_PCT = 56

# Percentage of total messages sent from Remote users to Local users
REMOTE_TO_LOCAL_PCT = 31

# Percentage of total messages sent from Local users to Remote users
LOCAL_TO_REMOTE_PCT = 13




# The percentage of the daily load occuring during the peak hour
# (this is the load simulated by SPECmail at the 100% mark).
PEAK_LOAD_PERCENT = 32

########################################################################
# Values for IMAP
########################################################################

IA_ADJUSTMENT = 1.0


CS3_MEAN_IA = 274350

CS1_PRIMARY_PCT = 74.54
CS2_PRIMARY_PCT = 100

#CLIENT_TYPE_DISTRIBUTION = "1,31.373%; 3,32.353%; 4,3.922%; 5,2.941%; 13,3.922%; 14,10.784%; 15,1.961%; 24,0.980%; 34,2.941%; 45,2.941%; 134,0.980%; 145,3.922%; 1245,0.980%"
CLIENT_TYPE_DISTRIBUTION = "6,100%"

#Below are the folder and folder with sub-folder distributions from the Mirapoint sample.
LEVELXFOLDERS[0] = "1,34.8%; 2,21.7%; 3,11.6%; 4,7%; 5,2%; 6,2.4%; 7,1.5%; 8,.7%; 9,.7%; 10,.7%; 20,8.1%; 30,3.7%; 40,1.8%; 50,2%; 103,1.3%"
LEVELXFOLDERS[1] = "1,31.4%; 2,12.4%; 3,7.4%; 4,5.6%; 5,4%; 6,2.4%; 7,5%; 9,5.8%; 10,2.6%; 15,7.4%; 20,3.2%; 30,7.2%; 70,3.4%; 200,1.8%; 246,.4%"
LEVELXFOLDERS[2] = "1,43%; 2,14.9%; 3,9.1%; 4,6.8%; 5,3.5%; 6,4.1%; 7,2%; 8,2%; 9,3.3%; 10,1%; 11,1.5%; 12,1.3%; 13,.8%; 14,.3%; 15,.5%; 17,.3%; 19,1.3%; 25,.3%; 26,.8%; 28,1.3%; 29,.3%; 30,.5%; 38,.3%; 39,.2%; 41,.2%; 47,.2%; 61,.2%"
LEVELXFOLDERS[3] = "1,39.6%; 2,12.6%; 3,8.1%; 4,10.8%; 5,2.7%; 6,7.2%; 7,2.7%; 8,.9%; 9,1.8%; 11,1.8%; 12,1%; 13,.9%; 15,.9%; 16,.9%; 19,1.8%; 20,.9%; 22,1.8%; 25,.9%; 26,1.8%; 42,.9%"
LEVELXFOLDERS[4] = "1,36.8%; 2,7.9%; 3,39.5%; 4,5.3%; 6,2.6%; 7,2.6%; 8,5.3%"
LEVELXFOLDERS[5] = "1,100.0%"
LEVELXFOLDERS[6] = "1,100.0%"
LEVELXFOLDERS[7] = "1,100.0%"

LEVELXWITHSUB[0] = "0,59%; 1,21.9%; 2,7.5%; 3,3.3%; 4,2%; 5,.4%; 6,1.3%; 7,2%; 8,.4%; 9,.7%; 10,.7%; 11,.4%; 21,.25; 26,.15%"
LEVELXWITHSUB[1] = "0,64%; 1,20.6%; 2,9%; 3,1.4%; 4,1.2%; 5,.8%; 6,1%; 7,.6%; 8,.2%; 9,.2%; 10,.4%; 15,.4%; 19,.2%"
LEVELXWITHSUB[2] = "0,80%; 1,15.7%; 2,2.3%; 3,.8%; 4,1%; 6,.2%"
LEVELXWITHSUB[3] = "0,78.4%; 1,14.4%; 2,3.6%; 3,1.8%; 4,1.8%"
LEVELXWITHSUB[4] = "0,97.4%; 1,2.6%"
LEVELXWITHSUB[5] = "1,100.0%"
LEVELXWITHSUB[6] = "1,100.0%"
LEVELXWITHSUB[7] = "0,100.0%"

# Below sets the percent of users who will be involved in the message verify phase
#USE_PERCENT_FOR_VERIFICATION = 2
USE_PERCENT_FOR_VERIFICATION = 100

# Number of concurrent threads simultaneously gathering context
BULK_CONTEXT_GATHER = 6

# These sample overrides make a short run.
# LOAD_FACTORS = "100%"

# How long to run before starting to gather statistics
RAMPUP_SECONDS = 180

# The below values of 9000 (9 seconds) is the required values for 
# SPECvirt IMAP workload. 
READ_SLEEP_DELAY = 9000
WRITE_SLEEP_DELAY = 9000
SEARCH_DELAY = 9000

#loginThreshhold = 3
#deleteThreshhold = 13

#Below is the assigned 'mix' of operation types for SPECvirt-IMAP 
# These should sum to 100 (%)
APPENDTHRESHOLD = 26
FETCHTHRESHOLD = 66
SEARCHHEADERTHRESHOLD = 5
CHECKNEWTHRESHOLD = 3

########################################################################
#
# Log/Report related variables
# 
# Changing the following variables has some performance impact on the 
# client. These trace flags should all be commented out when running
# the benchmark to produce pubilshable results.
#
#-----------------------------------------------------------------------
#
# Each of the following controls some of the debug/diagnostic information
# printed by the benchmark. This is mainly useful in debugging the benchmark
# itself and using the benchmark as a diagnostic tool
#

# This one gives a message for each event initiated.
# TRACE_EVENTS = 1
# TRACE_CONFIGREAD = 1

# IMAP client side
# TRACE_IMAPCLEAN = 1
# TRACE_FOLDERINIT = 1
# TRACE_FOLDERVRFY = 1
# TRACE_MESSAGEINIT = 1
# TRACE_MESSAGEVRFY = 1
# TRACE_CS6 = 1

# Verification/compliance
# TRACE_VERIFY_MBOX_COUNT = 1
# TRACE_VERIFY_MSG_SIZE = 1

###########################################################################
###########################################################################
#  The below values should have no effect for SPECvirt IMAP workload,
#  but to be safe, should not be changed.

# TRACE_TP1 = 1
# TRACE_TP2 = 1
# TRACE_TP3 = 1

# SMTP client side
# TRACE_SMTPQOS = 1
# TRACE_SMTP = 1
# TRACE_SMTPSINK = 1


# WOrkload related
# TRACE_MISC = 1
# TRACE_MDIM_KEYS = 1
# TRACE_CLIENT_MSGS = 1
# TRACE_SETDESTPERCENT = 1
# TRACE_SETMSGSIZES = 1
# TRACE_SETMBOXSIZES = 1
# TRACE_READFROM = 1
# TRACE_SETRECIP_MSGS = 1
# TRACE_SETDELAYS = 1
# TRACE_MODEM_RATES = 1

# Reporting
# TRACE_CALCRESULT = 1
# TRACE_GETFORMATTEDRESULT = 1
# TRACE_RESULTS = 1
# TRACE_MSGSIZE = 1
# TRACE_WORKLOAD = 1

# TRACE_LOADGENERATOR = 1
#
# This is for debugging purposes
# TRACE_WHILE_LOOPS = 1

#-----------------------------------------------------------------------
# The host name and the port number of the benchmark server that
# will act as a  mail sink during the benchmark
SINK_SERVERS = "none:1100"
SINK_PORT = 25

# The POP3 server 
POP3_SERVER = none
POP3_PORT = 110
# The SMTP server
SMTP_SERVER = none
SMTP_PORT = 25

#-----------------------------------------------------------------------
# Adjust the following values according to your SUT's minimum interval
# needed to start or reset after certain session types.
#-----------------------------------------------------------------------
#
# How many milliseconds to wait after sending each message sent
# during mailbox initialization to prevent overloads
SMTPINIT_SEND_DELAY_MILLISECONDS = 80

# How many minutes to wait after completing mailbox initialization
# to give the server a chance to deliver all the messages
SMTP_INIT_REST_MINUTES = 15

# Poll clients after each such interval (specified in milliseconds)
POLL_DELAY_MILLI = 10000

#############################################
#
#	SPECvirt_sc2013 / SPECimap Bursty Mode
#
#  The following settings are used for running in 'Bursty Mode' where 
#  the SPECimap driver will dynamically change the average 'think-times'
#  (aka 'Sleep delay') for each active user.
#
#  burstyMode = 1	Enable burstyMode
#  burstyCurve 		A semi-colon (;) separated list of think time multiplier values
#  stepRate = 20000     Time in milliseconds between each point on the burstyCurve.  
#
#			*NOTE: 
#			The SPECvirt POLL_INTERVAL_SECS*1000 should be an even multiple of 
#			stepRate * 'number of points in the burstyCurve'  
#
#			I.e, for the default curve with 30 points defining the curve,
#			with a stepRate of 20000ms the curve wavelength will be
#			600000ms (10 minutes).  A POLLING_INTERVAL_SECS of 7200secs in Control.config
#			(which equals 2 hours) results in 12 iterations of the burstyCurve.
#			(7200000ms / 600000ms = 12)
#  
#
#  During each point in the curve, the the delay values in SPECimap_fixed.rc (READ_SLEEP_DELAY,
#  WRITE_SLEEP_DELAY, and SEARCH_DELAY) are 're-factored' by the value of the current curve point 
#  value. (*Note, for each interaction type, the delay value is a random value that results in an 
#  overall average approaching the above delay values).   
#
#  This means, curve point values < 1.0 result in shorter average Sleep() durations, which will result in 
#  a more active driver. The converse is true of values > 1.0.  
#
#  *Note, for initial testing, the "valid" bursty curve is:
#
#  * Values of zero are not allowed permissible (will result in an error)  
#
#  ** Values approaching zero (e.g., 0.01) are discouraged for anything other than VERY aggressive 
#  SPECimap research-mode testing (Using values such as 0.01 will be close to having all 500 users issue 
#  requests as fast as the SUT can process them.  

burstyMode = 1
stepRate = 20000
burstyCurve ="1;0.9;0.7;0.5;0.3;1.3;0.3;0.6;1.7;1.2;0.4;2.7;0.7;0.4;0.7;0.25;0.6;1.2;1.8;3;2.6;1;1.2;0.75;0.5;0.3;0.4;0.9;0.5;1.6"
startPointMultiplier = 7


