![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
Majumdar-Woodside robust box bounds on the throughput of a layered network. More...
#include <cstddef>#include <vector>#include "line/api/pfqn/pfqn_mwrbb.h"#include "line/lang/lang_types.h"#include "line/lang/lqn/lqn_struct.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::lqn::LqnBoxBounds< T > |
| What lqn_boxbounds returns, in the layout of the reference's out struct. More... | |
Namespaces | |
| namespace | line |
| namespace | line::lqn |
Functions | |
| template<class T> | |
| LqnBoxBounds< T > | line::lqn::lqn_boxbounds (const LqnStruct< T > &lqn) |
| Evaluate the box bounds of lqn. | |
Majumdar-Woodside robust box bounds on the throughput of a layered network.
Port of matlab/src/api/lqn/lqn_boxbounds.m. The layered model is collapsed onto its PROCESSOR-CONTENTION model – the stations are the hosts and the classes are the reference-task call chains – and pfqn_mwrbb is evaluated on it. The per-chain demand at a processor is the total host demand executed there during one cycle of the reference task, obtained by walking the entry/activity/call graph and scaling by the mean number of synchronous calls.
WHAT THIS IS AND IS NOT. It generalizes the classical LQN Type-1 throughput bound X <= mult/(Z + D_total) – the no-contention bound lqns -b reports – by adding the processor-utilization upper bound and the Majumdar-Woodside lower bound. It does NOT model a software bottleneck (a task with finitely many threads is not a station here) and it assumes activities execute sequentially, so an OR-branch probability and a loop count are ignored rather than averaged. A bound that ignores a resource is still a valid bound on the model it does describe, which is why this is worth having; it is not a substitute for solving the layers.
NO ITERATION HAPPENS HERE. This is what method = 'mwba.upper' / 'mwba.lower' reports INSTEAD of a fixed point, so a caller asking for it pays one graph walk and one bound evaluation, and gets NaN for every metric the bound does not define (queue lengths, response times, residence times).
Definition in file lqn_boxbounds.h.