CSIM Simulation - PowerPoint PPT Presentation

About This Presentation
Title:

CSIM Simulation

Description:

Interarrival time of class A (B) is exponential with mean being 10.0 (20.0) For a particular class A (B) flow, the number of generated packets is uniformly ... – PowerPoint PPT presentation

Number of Views:193
Avg rating:3.0/5.0
Slides: 27
Provided by: johnc54
Category:
Tags: csim | simulation

less

Transcript and Presenter's Notes

Title: CSIM Simulation


1
CSIM Simulation
(or everything you want to know about CSIM but
were afraid to ask)
  • John C.S. Lui

2
Why we want to simulate?
  • Tradeoff between analytical modeling and system
    implementation
  • Can relax the restrictive assumption in
    analytical modeling
  • To confirm our analytical modeling

3
Issues
  • What items need to be abstracted away, what
    cannot be abstracted away?
  • What are the performance measures I want?
  • How long do I need to run? What are the
    confidence intervals?
  • What is the run time of my simulation?

4
CSIM
  • Process-oriented, discrete event simulation.
  • Based on C or C
  • Easy to learn, takes moderate time to master.
  • If you know the concept of processes, then it
    will be EASY to learn CSIM in 30 mins.

5
Outline
  • CSIM M/M/1
  • CSIM M/M/K
  • CSIM Two servers with JSQ policy
  • CSIM Fork-Join Queue
  • CSIM Markov Chain Simulation
  • CSIM Generating Synthetic Trace files

6
M/M/1
  • Arrival process is Poisson, or the interarrival
    time is exponentially distributed.
  • Service time of a job is exponentially
    distributed.
  • TWO types of event arrival, departure.

7
Animation of M/M/1
8
// C/CSIM Model of M/M/1 queue // file
ex1cpp.cpp include "cpp.h"
// class definitions define NARS 5000 //
number of arrivals to simulate define IAR_TM
2.0 // specify average interarrival time define
SRV_TM 1.0 // specify average service
time event done("done") //
the event named done facility f("facility")
// the facility named f table
tbl("resp tms") // table of
response times qhistogram qtbl("num in sys",
10l) // qhistogram of number in system int
cnt // count of
remaining processe void customer() extern "C"
void sim(int, char ) void sim(int argc, char
argv) set_model_name("M/M/1
Queue") create("sim") cnt
NARS for(int i 1 i lt NARS i)
hold(expntl(IAR_TM)) //
interarrival interval customer()
// generate next customer
done.wait()
// wait for last customer to depart
theory() mdlstat()
// model statistics void customer()
// arriving customer
float t1 create("cust") t1
clock // record start
time qtbl.note_entry() //
note arrival f.reserve()
// reserve facility
hold(expntl(SRV_TM)) // service interval
f.release() // release
facility tbl.record(clock - t1)
// record response time
qtbl.note_exit() // note
departure if(--cnt 0)
done.set() // if last customer,
set done
9
OUTPUT
  • Let us look at the output file, mm1.out, of the
    program ex1cpp.cpp
  • The M/M/1 is our model name.
  • It displayed the simulation time
  • It displayed the statistics of facility f,
    table resp tms and qtable QTABLE. As well as
    the resource used.
  • Let us take a closer look of the output file,
    mm1.out, and see how we get performance measures.

10
Important concept about CSIM
  • CSIM has passive objects and active objects.
  • Passive object facility, table, event,
    messages.etc
  • Active object Customer. In other words, you
    CODE UP THE DYNAMICS
  • Differentiate CPU time and simulation time.
  • Dynamic object consumes CPU time, but it takes
    ZERO simulation time UNLESS it executes
    statements like hold, wait, reserve,
    release.etc
  • Dynamic object (or a process) will GIVE UP the
    CPU resource to other ready process when it
    executes statements like hold, wait,
    reserve, releaseetc.

11
Understanding the dynamics of CSIM
  • Let us look at the trace file, mm1_trace.out, of
    the previous program.
  • To limit the size of the trace file, set NARS to
    20
  • To turn on the trace, run the program like
  • a.out -T gt mm1_trace.out
  • IF YOU UNDERSTAND THE TRACE, YOU UNDERSTAND THE
    PROCESS CONCEPT OF CSIM.

12
Trace File of M/M/1 mm1_trace.out
  • The first process, sim.
  • It generates a random based on exp
    distribution. It holds (or sleep) for that
    amount of time (time is 1.332).
  • Since there is only ONE process (which is sim) in
    the CSIM kernel, so the simulation jumps to time
    t1.332.
  • For the simulation time t1.332, sim still has
    the CPU resource, it calls a function customer().
  • The first statement of a function is create,
    which changes the function to a process. The
    thread of control goes back to the CSIM kernel.
  • There are two processes in the system, sim and
    cust, since sim DIDNT give up its thread of
    control, the CSIM kernel gives the CPU to sim.

13
  • sim generates another random number based on
    exponential distribution, and hold (or sleep)
    at time t1.332 and sleep for 3.477. Therefore,
    sim should wake up at t4.809.
  • At simulation time t1.332, thread of control
    goes back to csim kernel. Since there is only one
    active process, which is cust, that process
    has the CPU.
  • Process cust enters the empty facility and
    hold (or occupy the resource f) for some
    random time (generated by exp. distribution) of
    1.176. This process should wait up at time 2.507.
  • Thread of control returns to CSIM kernel. Since
    at simulation time t1.332, there is no more
    active process, kernel jumps to time2.507, and
    gives the CPU to cust.
  • cust releases the resource and terminates.

14
  • Thread of control returns to CSIM kernel. At
    t2.507, there is no more active process. So it
    jumps to the nearest time in which the system
    will have an active process, that is t4.809.
  • At t4.809, the only active process is sim. So
    sim has the CPU resource.
  • sim wakes up at t4.809, calls the customer
    function.
  • Question under what condition the system is
    stable?

15
Another way to look at the M/M/1 simulation
  • One process for traffic generation
  • Each job (or customer) as a process.
  • Have a master to control coordination.
  • Let us look at mm1_v2.cpp
  • Question under what condition the system is
    stable?

16
Simple variation M/M/K
  • Arrival is a Poisson process (or the interarrival
    time is exponentially distributed) with rate
  • The service rate of each server is exponentially
    distributed
  • Single queue, but with K servers.
  • CSIM provides many queueing functionalities.
  • Let us look at mmk.cpp and mmk.out
  • Question under what situation the system is
    stable?

17
Two Servers with JSQ Policy
  • The system has two independent servers (e.g.,
    with individual queue)
  • Arrival is Poisson
  • Service rate is exponential
  • Customer will choose the server with the
    shorter queue.
  • Let us look at shorter_queue.cpp and
    shorter_queue.out
  • Question under what situation the system is
    stable?

18
Fork-Join Queueing System
  • Assume two independent servers
  • Job arrival rate is Poisson
  • Upon arrival, a job is splitted into two tasks,
    each join different queue
  • A job is completed when BOTH tasks are done
    (therefore, need synchronization)
  • Let us look at fork_join.cpp and fork_join.out
  • Question under what situation the system is
    stable?

19
Other functionalities of CSIM
  • Facilities
  • Reserving a Facility with a Time-out
    f.timed_reserved(10.0), etc
  • hanging the Service Discipline
    f.service(prc_shr), etc
  • load dependent service rate f.loaddep(rate, 10)
  • Inspector Methods
  • f.qlength() determine of process waiting
  • f.completions() number of completions so far
  • f.qlen() mean queue length
  • f.tput() mean throughput rate
  • Events
  • Waiting with a time-out e.timed_wait(3.0)
  • Queueing for an event to occur e.queue()
  • Inspector Methods
  • e.wait_cnt() of processes waiting for the
    event e.
  • e.state() state of the event, either occurred or
    not occurred.
  • e.wait_length() average wait queue length

20
  • Random number generation
  • Uniform(double min, double max)
  • Exponential(double mean)
  • Gamma (double mean, double stddev)
  • Hyperx( double mean, double var)
  • Zipf, Parteo, heavy tail distributions.
  • Single random number stream vs. multiple random
    number streams.
  • Tables storing statistics
  • Qtable to create historgram
  • Storages, Buffers, Mailboxesetc
  • Other interesting features
  • Turn on/off the trace at any point in the program
  • Alter priority for processes
  • Managing queues
  • Confidence interval
  • Manipulating queued processes within a facility
  • Finite buffer to model communication network

21
Simulation of Markov Chain
  • Let us consider a Markov Chain for M/M/1
  • For this MC, it has two events, arrival and
    departure (only when the number of jobs is
    greater than 0)
  • Paradigm
  • For a given state, generate events
  • Determine which type of event
  • Determine the next state
  • Record state (for your performance measures)
  • Repeat
  • Program mm1_mc.cpp

22
M/M/1 via Markov Chain
  • Program mm1_mc.cpp
  • Performance measures average of customers,
    average response time.

N(t)
23
M/M/1 via Markov Chain state probability
  • Program mm1_mc_prob.cpp
  • Let us consider the first few state
    probabilities. P0 to P4 and the rest is in
    P5.
  • Steady state probability

N(t)
K
24
M/M/1 via Markov Chain PASTA
  • PASTA Poisson arrivals see time average
  • The previous state probability was an estimate
    for time average, let us see PASTA
  • Program mm1_mc_pasta.cpp

N(t)
K
n (or number of arrivals)
25
Generating Synthetic Trace File
  • Two classes of traffic A and B
  • Interarrival time of class A (B) is exponential
    with mean being 10.0 (20.0)
  • For a particular class A (B) flow, the number of
    generated packets is uniformly distributed with
    inter-packet spacing exponentially distributed
    with mean being 2.0 (1.0)
  • We want to generate traffic for some duration T.
  • Program tracefile.cpp

26
Conclusion
  • Simulation can help you
  • Build a better model
  • Validate your model
  • Takes time to debug (e.g., via tracing)
  • Needs to worry about transient errors,
    stability,etc.
  • Yet, csim is a very powerful tool. You need to
    spend time reading the manual (which is
    well-written) to appreciate the power of this
    tool.
Write a Comment
User Comments (0)
About PowerShow.com