![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
Focused layered performance model by aggregation (FSPT). More...
#include <algorithm>#include <cctype>#include <cmath>#include <cstddef>#include <functional>#include <limits>#include <map>#include <set>#include <stdexcept>#include <string>#include <utility>#include <vector>#include "line/lang/lang_types.h"#include "line/lang/lqn/lqn_reader.h"#include "line/lang/lqn/lqn_struct.h"#include "line/solvers/ln/solver_ln.h"Go to the source code of this file.
Classes | |
| struct | line::lqn::LqnFocusOptions |
| Options of lqn_focus, as the MATLAB name/value pairs. More... | |
| struct | line::lqn::LqnFocusGroup |
| One dependency group and its aggregate task. More... | |
| struct | line::lqn::LqnFocusRetained |
| OM and FM metrics of the retained tasks, entries and hosts. More... | |
| struct | line::lqn::LqnFocusResult |
| Focused model and diagnostics, fields named as the MATLAB info struct. More... | |
| struct | line::lqn::focus_detail::Call |
| struct | line::lqn::focus_detail::Inv |
| struct | line::lqn::focus_detail::Om |
| struct | line::lqn::focus_detail::Sat |
Namespaces | |
| namespace | line |
| Conservation laws of a layered queueing network, enumerated from its structure. | |
| namespace | line::lqn |
| namespace | line::lqn::focus_detail |
Functions | |
| double | line::lqn::focus_detail::nan_ () |
| bool | line::lqn::focus_detail::is_prio (SchedStrategy s) |
| double | line::lqn::focus_detail::dmean (const Distrib< double > &d) |
| bool | line::lqn::focus_detail::has_time (const Distrib< double > &d) |
| void | line::lqn::focus_detail::fail (const std::string &msg) |
| std::size_t | line::lqn::focus_detail::index_of (const std::vector< std::string > &v, const std::string &s) |
| Inv | line::lqn::focus_detail::inventory (const LqnModel< double > &m) |
| double | line::lqn::focus_detail::z (double v) |
| Om | line::lqn::focus_detail::solve (const LqnModel< double > &m, const LqnFocusOptions &opt, const Inv &inv) |
| Sat | line::lqn::focus_detail::saturation (const Inv &inv, const Om &om) |
| void | line::lqn::focus_detail::closure (const Inv &inv, std::vector< bool > &PT, std::vector< bool > &PH) |
| std::string | line::lqn::focus_detail::unique_name (std::set< std::string > &all, std::string nm) |
| std::string | line::lqn::focus_detail::map_name (int g, const std::string &name, const std::vector< LqnFocusGroup > &grp, bool task) |
| LqnFocusResult | line::lqn::focus_detail::build (const LqnModel< double > &model, const Inv &inv, const Om &om, const Sat &sat, std::vector< bool > PT, std::vector< bool > PH, const LqnFocusOptions &opt, bool validate) |
| LqnFocusResult | line::lqn::lqn_focus (const LqnModel< double > &model, const LqnFocusOptions &opt=LqnFocusOptions()) |
| Focused model of a layered network by FSPT aggregation. | |
Focused layered performance model by aggregation (FSPT).
Port of matlab/src/api/lqn/lqn_focus.m, on the raw model LqnModel<double> (the form LqnBuilder and the .lqnx reader produce). Reduces a layered network to a focused model (FM) that keeps a set of preserved tasks and hosts as they are and replaces every other task by one aggregate task per dependency group, following Islam, Petriu and Woodside, "Focused Layered Performance Modelling by Aggregation", ACM TOMPECS 7(2-4), 2022.
The original model (OM) is solved once with SolverLN to obtain the saturations S = U/m of every task and host. The preserved set is chosen by the sat (forced elements plus every resource with S > Smax/r), acc (forced elements plus the i most saturated resources, i grown until the reference-task throughput error is below x) or manual (forced elements, the most saturated resource and preserve) strategy. A preserved task preserves its host and a preserved host all of its tasks. Tasks using features FSPT does not aggregate (priorities, AND forks/joins, second phases, asynchronous calls, forwarding, open arrivals, replication, fan-in or fan-out, setup/delay-off and activity think times) are always preserved.
Non-preserved tasks with the same set Pi(T) of preserved tasks depending on them form a group, replaced by one aggregate task with one entry and one activity (eqs. 7-11). A host shared by several groups is split into shadow hosts of speed s_H (1 - saturation by the other groups) (eq. 15), or preserved when that capacity is not positive. Aggregate processors have unit speed, the aggregate speed of eq. 9 being folded into the aggregate demand.
Definition in file lqn_focus.h.