1
pkt -time -time_pnt -hosting_entity -host_pnt -status +pkt(int,double,int):pkt +get_times(pkt):double[] +get_hosts(pkt):int[] +mark_entered_entity(pkt,in t) +mark_leave_time(pkt,double ,int,int) +terminate(pkt,double) queue -entity_idx -type -size -connected_to -next_time -queue_size -pkts_queue -queued -head -tail +queue(int,int,int,int):queue +get_type(queue):int +get_next_event_time(queue):dou ble +how_many_queued(queue):int +calc_next_time(queue):double +get_pkt(queue,double,int,int): void +forward_first_in_line(queue,do uble):int +execute(queue):void +update(queue,int) generator -entity_idx -type - time_between_events_distributio n -dist_param1 -dist_param2 -connected_to -next_time -path_length +generator(int,int,int[],int,in t):generator +get_type(generator):int +get_next_event_time(generator) :void +execute(generator):void +update(generator,int,int) server -entity_idx -type -number_of_serviceable_pkts - time_between_events_distributio n -dist_param1 -dist_param2 -connected_to -connected_from -in_service -pkts_inside -server_times -next_time +server(int,int,int,int[],int[] ,int,int):server +get_type(server):int +get_next_event_time(server):do uble +is_busy(server):int +get_from_queue(server,double,i nt):void +execute(server) +update(server,int,int) -entity_idx -type -connected_from -next_time +out(int[],int):out +get_type(out):int +get_next_event_time(out) :double +get_pkt(out,double,int) +update(out,int,int) User_defined_live_analyzer -var1 -var2 -var3 -var4 +user_defined_live_analyzer():user_defined_live_ analyzer +analyze(user_defined_live_analyzer,double[],int []) +analayze_terminated(user_defined_live_analyzer, double[],int[]) +get_result(user_defined_live_analyzer):double[] System_time_calculator -times -pkt_count -data_to_file -discard_percentage +system_time_calculator(int,int):system_time_ calculator +enter_time(system_time_calculator,int,double ) +count_terminated(system_time_calculator) +execute(generator):void +get_average_sys_time(system_time_calculator) :double[],int[] Motivation Queuing systems are very common in many aspects of our lives, including electrical, software, and networks engineering, in which there is great importance to the waiting time of the packets. Mathematical analysis of queuing systems is far from being simple, and becomes even harder, as the systems’ complexity grows. When mathematical analysis is not practical, there is a need for a quick and easy way to analyze the system – simulation. Goal Design and implement a generic queuing systems simulator , under the requirements: •Modular design – allows to construct of different systems, using the same building blocks. •Reasonable simulation time – finding an efficient update law for the system. •Memory efficient – simulate large number of packets without exceeding memory limitations. •Calculate the time in system, for each type of packets. •Allow saving to files the simulation information, and results. •Allow adding user defined calculations. •Graphic User Interface – easy to use. Sequence Diagram Class Diagram Graphic User Interface Simulations – System Time vs. r in Different Systems Simulations – Accuracy vs. Simulation Length. Summary •Simulation results fit the theory. •Longer simulations grant more accurate results. •MISSION ACCOMPLISHED! Queuing Systems Simulator Department of electrical engineering, Technion Networked software systems laboratory Eyal David, Noga Tamir Supervisor: Boris Oklander Lab engineer: Dr. Ilana David m=1 r=l/m m=1 r=l/m m=1 l2=0.2 r=(l1+l2)m m=1 r=l/(5m) m=1 m=1 l1=l2=0.4 m=1 m=1 l=1.6 •Easy to use - no need for coding skills •Full access to all simulator functions •Save and load systems •Information bar for: •simulation state •errors •successful load or save

Pkt -time -time_pnt -hosting_entity -host_pnt -status +pkt(int,double,int):pkt +get_times(pkt):double[] +get_hosts(pkt):int[] +mark_entered_entity(pkt,int)

  • View
    250

  • Download
    8

Embed Size (px)

Citation preview

Page 1: Pkt -time -time_pnt -hosting_entity -host_pnt -status +pkt(int,double,int):pkt +get_times(pkt):double[] +get_hosts(pkt):int[] +mark_entered_entity(pkt,int)

pkt

-time-time_pnt-hosting_entity-host_pnt-status

+pkt(int,double,int):pkt+get_times(pkt):double[]+get_hosts(pkt):int[]+mark_entered_entity(pkt,int)+mark_leave_time(pkt,double,int,int)+terminate(pkt,double)

queue

-entity_idx-type-size-connected_to-next_time-queue_size-pkts_queue-queued-head-tail

+queue(int,int,int,int):queue+get_type(queue):int+get_next_event_time(queue):double+how_many_queued(queue):int+calc_next_time(queue):double+get_pkt(queue,double,int,int):void+forward_first_in_line(queue,double):int+execute(queue):void+update(queue,int)

generator

-entity_idx-type-time_between_events_distribution-dist_param1-dist_param2-connected_to-next_time-path_length

+generator(int,int,int[],int,int):generator+get_type(generator):int+get_next_event_time(generator):void+execute(generator):void+update(generator,int,int)

server

-entity_idx-type-number_of_serviceable_pkts-time_between_events_distribution-dist_param1-dist_param2-connected_to-connected_from-in_service-pkts_inside-server_times-next_time

+server(int,int,int,int[],int[],int,int):server+get_type(server):int+get_next_event_time(server):double+is_busy(server):int+get_from_queue(server,double,int):void+execute(server)+update(server,int,int)

out

-entity_idx-type-connected_from-next_time

+out(int[],int):out+get_type(out):int+get_next_event_time(out):double+get_pkt(out,double,int)+update(out,int,int)

User_defined_live_analyzer

-var1-var2-var3-var4

+user_defined_live_analyzer():user_defined_live_analyzer+analyze(user_defined_live_analyzer,double[],int[])+analayze_terminated(user_defined_live_analyzer,double[],int[])+get_result(user_defined_live_analyzer):double[]

System_time_calculator

-times-pkt_count-data_to_file-discard_percentage

+system_time_calculator(int,int):system_time_calculator+enter_time(system_time_calculator,int,double)+count_terminated(system_time_calculator)+execute(generator):void+get_average_sys_time(system_time_calculator):double[],int[]

Motivation Queuing systems are very common in many aspects of our lives, including electrical, software, and networks engineering, in which there is great importance to the waiting time of the packets.Mathematical analysis of queuing systems is far from being simple, and becomes even harder, as the systems’ complexity grows. When mathematical analysis is not practical, there is a need for a quick and easy way to analyze the system – simulation.

Goal

Design and implement a generic queuing systems simulator , under the requirements:•Modular design – allows to construct of different systems, using the same building blocks.•Reasonable simulation time – finding an efficient update law for the system.•Memory efficient – simulate large number of packets without exceeding memory limitations.•Calculate the time in system, for each type of packets.•Allow saving to files the simulation information, and results.•Allow adding user defined calculations.•Graphic User Interface – easy to use.

Sequence Diagram

Class Diagram

Graphic User Interface

Simulations – System Time vs. r in Different Systems

Simulations – Accuracy vs. Simulation Length. Summary

• Simulation results fit the theory.•Longer simulations grant more accurate results.

•MISSION ACCOMPLISHED!

Queuing Systems Simulator

Department of electrical engineering, TechnionNetworked software systems laboratoryEyal David, Noga TamirSupervisor: Boris OklanderLab engineer: Dr. Ilana David

m=1= /r l m

m=1= /r l m

m=1l2=0.2=(r l1+l2)m

m=1= /(5 )r l m

m=1m=11=l l2=0.4

m=1m=1=1.6l

• Easy to use - no need for coding skills• Full access to all simulator functions• Save and load systems• Information bar for:•simulation state•errors•successful load or save