# This is a comment which is completely ignored. # A line beginning #pragma text... defines an lqns pragma (see lqns \ # man page or type lqns ? # The last line has a continuation (\) # Ecommerce system # control variables may be optionally defined here. These expressions # set the default values # $convergence_limit = .00001 #(real) # $iteration_limit = 100 #(integer) # $print_interval = 1 #(integer) # $coefficient_of_variation = 0.9 # (real) (should be named under_relaxation) # execution control # $solver = lqns (analytic) OR parasrvn (simulation) OR petrisrvn # (petri-net, needs GreatSPN2.0 tool from Genoa) # options for simulation: # parasrvn -A time/block, %-accuracy-at-95%-confidence, transient-time-to-skip # e.g. parasrvn -A 1000,1,50 # $hosts = suntan, sunset, sunspot, sunrise.... hosts to run # experiments round-robin (you maust have auto rlogin) # Parameter settings $name = value OR $name = v1, v2, v3... # OR $name = v1 v2 v3 OR $name = start-value:end-value , step-value. # Values are numeric. #values are betwee 0.1 and 3 times the parameters given in a base model $case = [1:100,10] $case, $nusers = floor(100*(0.1 + 2.9*rand())) $case, $userThink = 1000*(0.1 + 2.9*rand()) $case, $dem_order = 25*(0.1 + 2.9*rand()) $case, $req_browse_read = 7.3*(0.1 + 2.9*rand()) $case, $order_rate = 0.09*(0.1 + 2.9*rand()) $browse_rate = 1 - $order_rate # The rest of the file has exactly the same syntax as the orginal # lqns/srvn model file syntax except that the values of the named parameters # defined above may be used in place of hard-coded values. G "..." 0.01 100 1 0.9 -1 # Processor Information: No of processors P 0 # Processor parameters, ending with optional observation of throughput # of form: %u $obs-name #p ProcessorName SchedDiscipline [multiplicity, default = 1] # Discipline = f fifo|r random|p premptive| # h hol or non-pre-empt|s proc-sharing # multiplicity = m value (multiprocessor)|i (infinite) p PUsers f i p PImgDisk f p PWebServer s #p PImgDisk f p PStore s m 3 p PDBs s p PFileServer s # End of Processor Information -1 # Task Information: No of Tasks T 0 # Task parameters, with optional observation controls at end of line # of form: %u0 $varname..... total task utilization # %u2 $varname..... phase 2 utilization (any phase after u) # %f $varname..... throughput # %pu $varname..... processor utilization of the task #t TaskName RefFlag EntryList -1 Processor [multiplicity] # RefFlag = r (reference or user)|n (other) # multiplicity = m value (multiprocessor)|i (infinite) t TUsers r EUserBeh -1 PUsers m $nusers t TWebServer n EAccess -1 PWebServer m 150 t TImgDisk n ERdImg -1 PImgDisk t TStoreApp n EBrowse EOrder -1 PStore m 90 t TCart n EBuy -1 PStore m 10 t TInvDB n EInvRd EInvUpd -1 PDBs m 7 t TCustDB n ECustRd ECustUpd -1 PDBs t TFS n EFRd EFWrite -1 PFileServer m 10 # End of Task Information -1 #Entry Information: No. of Entries E 0 # Entry parameters, with observation controls at end of line # of form % $obs-name # ParameterToken EntryName Phase1value Phase2 Phase3 -1 # Tokens and Value Definitions are: # a External arrival rate of requests # %w $varname..... waiting time of requests at the entry. # s HostServiceRequests for EntryName # %u0 $varname..... total utilization of the entry # %u2 $varname..... utiliation of phase 2 (any phase) # %f $varname..... throughput of the entry # %pu $varname..... processor utilization of the entry # %s2 $varname..... total phase 2 service time of the entry (any phase) # %v $varname..... coefficient of variation of the service time #of phase 2 (or any phase in place of 2) # %fb $varname..... throughput bound calculated by lqns # %pw $varname..... processor waiting for execution in this entry # c HostServiceCoeeficientofVariation # f PhaseTypeFlag (0 for stochastic, 1 for deterministic no of calls) # These lines go Token FromEntry ToEntry Phase1Value Phase2 Phase3 -1 # Tokens and Value definitions are: # F ProbForwarding (forward to this entry rather than replying) # z AsynchronousCalls (or no. of sned-no-reply messages) # o Fanout (for replicated servers) # i FanIn (for replicated servers) # y SynchronousCalls (no. of rendezvous) # %w2 $varname.... waiting for service by a message sent to ToEntry s EUserBeh $userThink -1 %fb $MaxUserThru s EAccess 2 -1 s ERdImg 1 -1 s EBrowse 15 -1 s EOrder $dem_order -1 s EBuy 30 -1 s EInvRd 2 -1 s EInvUpd 1 10 -1 s ECustRd 3 -1 s ECustUpd 1 5 -1 s EFRd 3 -1 s EFWrite 1 3 -1 y EUserBeh EAccess 1 -1 y EAccess ERdImg 15 -1 y EAccess EBrowse $browse_rate -1 y EAccess EOrder $order_rate -1 y EBrowse EInvRd $req_browse_read -1 y EOrder EBuy 1 -1 y EBuy EInvRd 3 -1 y EBuy EInvUpd 1 -1 y EInvRd EFRd 1.8 -1 y EInvUpd EFRd 1 -1 y EInvUpd EFWrite 0 2.5 -1 y ECustRd EFRd 4 -1 y ECustUpd EFRd 1 -1 y ECustUpd EFWrite 0 2 -1 z EBuy ECustUpd 1 -1 #End of Entry Information -1 # The next section provides the observation information to be reported. # It is a list of parameter names and observation varicable names, # and expressions in these variables, with names for the expressions # for which values will be printed in tabular format or plotted. # $0 = variable defines a variable to be printed first and to be used # as the independent variable for plots. # Plotting is a command line option -F gnu, (for gnuplot) or -F mat # (for matlab) R 0 $0 = $case $nusers $userThink $dem_order $order_rate $req_browse_read $MaxUserThru $MinURT = $nusers/$MaxUserThru - $userThink -1