LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
fj_bounds.m
1%{ @file fj_bounds.m
2 % @brief Upper and lower bounds for K-way F/J response time
3 %
4 % @author LINE Development Team
5%}
6
7%{
8 % @brief Upper and lower bounds for K-way F/J response time
9 %
10 % @details
11 % Computes pessimistic (upper) and optimistic (lower) bounds for the
12 % mean response time of a K-way Fork-Join queueing system.
13 %
14 % Upper bound (pessimistic):
15 % R_K^max(rho) = H_K / (mu * (1 - rho)) = H_K * R(rho)
16 %
17 % Lower bound (optimistic) from Varki et al.:
18 % R_K^{F/J(opt)}(rho) = (1/mu) * [H_K + S_{K(K-rho)}]
19 % where S_{K(K-rho)} = sum_{j=1}^{K} (1/j) * (rho/(j - rho))
20 %
21 % The bounds satisfy: R_K^{F/J(opt)}(rho) <= R_K^{F/J}(rho) <= R_K^max(rho)
22 %
23 % @par Syntax:
24 % @code
25 % [Rmax, Rmin] = fj_bounds(K, lambda, mu)
26 % @endcode
27 %
28 % @par Parameters:
29 % <table>
30 % <tr><th>Name<th>Description
31 % <tr><td>K<td>Number of parallel servers (positive integer)
32 % <tr><td>lambda<td>Arrival rate
33 % <tr><td>mu<td>Service rate (mu > lambda for stability)
34 % </table>
35 %
36 % @par Returns:
37 % <table>
38 % <tr><th>Name<th>Description
39 % <tr><td>Rmax<td>Upper bound (pessimistic): R_K^max(rho)
40 % <tr><td>Rmin<td>Lower bound (optimistic): R_K^{F/J(opt)}(rho)
41 % </table>
42 %
43 % @par Reference:
44 % A. Thomasian, "Analysis of Fork/Join and Related Queueing Systems",
45 % ACM Computing Surveys, Vol. 47, No. 2, Article 17, July 2014.
46 % Eq. (1) and Eq. (2) on page 17:9.
47%}
48function [Rmax, Rmin] = fj_bounds(K, lambda, mu)
49
50if K < 1
51 line_error(mfilename, 'K must be a positive integer. Got K=%d.', K);
52end
53
54% Compute utilization
55rho = lambda / mu;
56
57if rho >= 1
58 line_error(mfilename, 'System is unstable: rho = lambda/mu = %.4f >= 1. Require lambda < mu.', rho);
59end
60
61% Compute harmonic number H_K
62H_K = fj_harmonic(K);
63
64% Upper bound (Eq. 1): R_K^max(rho) = H_K / (mu * (1 - rho))
65Rmax = H_K / (mu * (1 - rho));
66
67% Lower bound (Eq. 2): R_K^{F/J(opt)}(rho) = (1/mu) * [H_K + S_{K(K-rho)}]
68% where S_{K(K-rho)} = sum_{j=1}^{K} (1/j) * (rho/(j - rho))
69S_K = sum((1 ./ (1:K)) .* (rho ./ ((1:K) - rho)));
70Rmin = (1 / mu) * (H_K + S_K);
71
72end