2 % @brief Varma-Makowski approximation
for K-way F/J response time
4 % @author LINE Development Team
8 % @brief Varma-Makowski approximation
for K-way F/J response time
11 % Computes an approximate mean response time
for a K-way Fork-Join
12 % queueing system with Poisson arrivals and exponential service times.
14 % R_K^{F/J}(rho) ≈ [H_K + (A_K - H_K) * rho] * (mu - lambda)^{-1}
16 % where A_K = sum_{i=1}^{K} C(K,i) * (-1)^{i-1} * sum_{m=1}^{i} C(i,m) * (m-1)! / i^{m+1}
18 % and C(n,k) denotes the binomial coefficient
"n choose k".
22 % R = fj_respt_vm(K, lambda, mu)
27 % <tr><th>Name<th>Description
28 % <tr><td>K<td>Number of parallel servers (positive integer)
29 % <tr><td>lambda<td>Arrival rate
30 % <tr><td>mu<td>Service rate (mu > lambda
for stability)
35 % <tr><th>Name<th>Description
36 % <tr><td>R<td>Approximate K-way F/J response time R_K^{F/J}(rho)
40 % A. Thomasian,
"Analysis of Fork/Join and Related Queueing Systems",
41 % ACM Computing Surveys, Vol. 47, No. 2, Article 17, July 2014.
42 % Table I, Eq. (4) on page 17:10.
44 % Original: S. Varma and A.M. Makowski,
"Interpolation Approximations for
45 % Symmetric Fork-Join Queues", Performance Evaluation, 20, 1994.
47function R = fj_respt_vm(K, lambda, mu)
50 line_error(mfilename,
'K must be a positive integer. Got K=%d.', K);
57 line_error(mfilename,
'System is unstable: rho = lambda/mu = %.4f >= 1. Require lambda < mu.', rho);
60% Compute harmonic number H_K
63% Compute A_K = sum_{i=1}^{K} C(K,i) * (-1)^{i-1} * sum_{m=1}^{i} C(i,m) * (m-1)! / i^{m+1}
68 inner_sum = inner_sum + nchoosek(i, m) * factorial(m - 1) / (i^(m + 1));
70 A_K = A_K + nchoosek(K, i) * ((-1)^(i - 1)) * inner_sum;
73% Varma-Makowski approximation (Eq. 4):
74% R_K^{F/J}(rho) ≈ [H_K + (A_K - H_K) * rho] * (mu - lambda)^{-1}
75R_rho = 1 / (mu - lambda);
76R = (H_K + (A_K - H_K) * rho) * R_rho;