LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
main_example.m
1% This script provides an example use of the returnPercentiles.m function,
2% which implements the approximation method proposed in paper
3% 'Beyond the Mean in Fork-Join Queues: Efficient Approximation for
4% Response-Time Tails', which is accepted in IFIP Performance 2015.
5%
6% It returns the approximated values of the RT percentiles for a K-node FJ queue
7% according to Section 6 of the paper.
8% The RT percentiles for 1-node queue is exact, while the results for a
9% 2-node FJ queue are based on the approximation proposed in Section 4,
10%
11% % arrival is a structure that must contain arrival.lambda, arrival.lambda0
12% and arrival.lambda1, where lambda is the mean arrival rate, lambda0 is
13% the intensity-matrix for state changes in the arrival process not
14% accompanied by arrivals and lambda1 is the intensity-matrix for state
15% changes accompanied by arrivals.
16%
17% % service is a structure that must contain service.mu, service.ST,
18% service.tau_st, where mu is the mean service rate, and tau_st and ST
19% corresponds to the PH representation (tau_st,ST) for the service time
20% of each of the homogeneous K servers.
21%
22% % pers are the targeted percentiles, e.g., 0.90 = 90-th, 0.95 = 95-th.
23%
24% % K is the number of nodes in the FJ queue, e.g., K=16 represents a
25% 16-node FJ queue.
26%
27% % Cs: limits of the value C as introduced in Section 4.
28% The larger the C, the more accurate the results.
29%
30%
31% % Two methods are provided to solve the T matrix: (default: 'NARE')
32% 'Sylves' : solves a Sylvester matrix equation at each step
33% using a Hessenberg algorithm
34% 'NARE ' : solves the Sylvester matrix equation by defining
35% a non-symmetric algebraic Riccati equation (NARE)
36%
37%
38
39clear
40clc
41
42%% Arrival
43% Four possibilities of arrival process are provided
44% 1=Exp; 2=HE2 (2-phase Hyper-exponential);
45% 3=ER2 (2-phase Erlang); 4 = MAP2 (2-phase MAP)
46ArrChoice = 2;
47
48arrival.lambda = 0.5; % mean arrival rate
49CX2 = 10; % squared coefficient of variation of the arrival process
50decay = 0.5; % decay rate of the auto-correlation function, only applies to MAP arrivals
51[arrival.lambda0, arrival.lambda1] = get_distribution(arrival.lambda, ArrChoice, CX2, decay);
52arrival.ma = size(arrival.lambda0,2);
53arrival.Ia = eye(arrival.ma);
54
55%% Service
56% Three possibilities of arrival process are provided
57service.SerChoice = 1; % 1: Exp; 2: HE2; 3: ER2;
58
59service.mu = 1; % mean service rate
60service_CX2 = 10; % squared coefficient of variation of the services
61[service.ST, service.St, service.tau_st] = get_serviceDis(service.mu, service.SerChoice, service_CX2);
62
63%% Targeted percentiles
64% 0.95 = 95-th percentile of the response times
65pers = [ 0.90, 0.95, 0.99 ];
66
67%% System settings
68K = [10, 512, 1024]; % the targeted K-node queues
69Cs = 100; % the limit of the difference
70T_Mode = 'NARE'; % the method to compute T
71
72%% Response time
73percentileRT = mainFJ(arrival, service, pers, K, Cs, T_Mode);
74for k = 1:length(K)
75 disp(['K: ', int2str(K(k))]);
76 for j = 1:length(percentileRT{k}.percentiles)
77 disp(['RT(', num2str(percentileRT{k}.percentiles(j)), '): ', num2str(percentileRT{k}.RTp(j))]);
78 end
79 disp(' ');
80end
81
Definition mmt.m:92