![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
Centralized splitting analysed as an M[K]/M/c bulk arrival system. More...
#include <cstddef>#include <vector>#include "line/api/fj/fj_types.h"#include "line/api/mc/ctmc_solve.h"#include "line/num/number.h"#include "line/util/error.h"#include "line/util/matrix.h"Go to the source code of this file.
Classes | |
| struct | line::fj::FJResptBulkResult< T > |
| [Rreq, Rtask, Q, p] of fj_respt_bulk. More... | |
Namespaces | |
| namespace | line |
| namespace | line::fj |
Functions | |
| template<class T> | |
| FJResptBulkResult< T > | line::fj::fj_respt_bulk (unsigned K, const T &lambda, const T &mu, unsigned c, std::size_t nmax=0) |
| Centralized splitting analysed as an M[K]/M/c bulk arrival system. | |
Centralized splitting analysed as an M[K]/M/c bulk arrival system.
Templated port of matlab/src/api/fj/fj_respt_bulk.m.
A request forks into K tasks held in a single central queue and served by c identical servers, so the same server may serve several tasks of the same request: an M[K]/M/c queue with fixed batch size K. Its level chain is solved by truncation, which is exact up to the tail mass discarded.
The request response time is the completion of the LAST of the K tasks. By PASTA the batch finds n tasks in system, its last task is the (n+K)-th in line, and under first come first served with c exponential servers it starts service after max(0, n+K-c) departures, each an exponential of rate c mu:
E[R_request] = sum_n p_n [ max(0, n+K-c)/(c mu) + 1/mu ].
This lower bounds the distributed splitting fork-join system, because no task is bound to a particular server.
Definition in file fj_respt_bulk.h.