![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
Ports of matlab/src/api/sn/sn_get_node_arvr_from_tput.m and sn_get_node_tput_from_tput.m: the NODE-level arrival rate and throughput tables behind getAvgNode, getAvgNodeTable and the node chain getters. More...
#include <cstddef>#include <map>#include <vector>#include "line/lang/qn/network_struct.h"#include "line/num/number.h"Go to the source code of this file.
Classes | |
| struct | line::api::CacheActualProb< T > |
| The converged cache split, per ORIGINAL class of one Cache node. More... | |
Namespaces | |
| namespace | line |
| namespace | line::api |
Functions | |
| template<class T> | |
| Matrix< T > | line::api::sn_get_node_arvr_from_tput (const qn::NetworkStruct< T > &sn, const Matrix< T > &TN, const Matrix< T > &AN) |
| Port of sn_get_node_arvr_from_tput. | |
| template<class T> | |
| Matrix< T > | line::api::sn_get_node_tput_from_tput (const qn::NetworkStruct< T > &sn, const Matrix< T > &TN, const Matrix< T > &ANn, const std::map< std::size_t, CacheActualProb< T > > &cache_prob=std::map< std::size_t, CacheActualProb< T > >()) |
| Port of sn_get_node_tput_from_tput. | |
Ports of matlab/src/api/sn/sn_get_node_arvr_from_tput.m and sn_get_node_tput_from_tput.m: the NODE-level arrival rate and throughput tables behind getAvgNode, getAvgNodeTable and the node chain getters.
Station metrics are what a solver returns; node metrics are what the user asks for when the model has nodes that are not stations – a Router, a ClassSwitch, a Cache, a Fork or a Join. Those nodes have no service and no queue, so their only meaningful averages are the rates flowing through them, and those come from the station throughputs plus the NODE-level routing sn.rtnodes and the per-chain node visits.
REFERENCE STATION INDEX. Both functions read sn.refstat(c) with c a CHAIN index, while sn.refstat is indexed by CLASS. The two agree whenever the chain's classes are numbered from its own index, which every single-chain and every non-switching model satisfies, and the refresh already refuses a chain whose classes disagree on their reference station. Reproduced as the reference has it: correcting the index here alone would make these tables disagree with MATLAB, the JAR and native Python at once.
CACHE HIT AND MISS RATES. The reference splits a Cache node's flow with the ACTUAL hit and miss probabilities the cache fixed point converged to, which this struct does not store on the node – refresh_cacheqn_actual_visits folds them into the visits instead. They are therefore optional arguments: a caller holding the converged probabilities passes them and gets the reference's first branch, and a caller that does not gets its second, the visit-ratio split, which is what the folded visits already encode.
ARITHMETIC: field. Sums and quotients only.
Definition in file sn_node_metrics.h.