LINE Solver (C++)
Templated C++ port of the LINE queueing solver
Loading...
Searching...
No Matches
fj_respt_bulk.h File Reference

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"
Include dependency graph for fj_respt_bulk.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.

Detailed Description

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.