![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
One in-flight request: a reference-task job somewhere in its call tree. More...
#include <line/solvers/ldes/ldes_ln_engine.h>
Public Attributes | |
| std::size_t | id = 0 |
| std::size_t | ref_task = 0 |
| std::vector< std::size_t > | stack |
| The activity stack: what this job is executing and what it will return to. | |
| std::vector< std::size_t > | act_pos |
| next activity of each stacked entry | |
| std::vector< std::size_t > | calls_left |
| Repetitions of the CURRENT call still to be made, per stack level. | |
| std::vector< std::size_t > | call_pos |
| next call index of the current activity | |
| std::vector< double > | entry_t0 |
| When each stacked entry was entered, for its response time and occupancy. | |
| std::vector< double > | act_t0 |
| When the current activity of each level began; -1 between activities. | |
| std::vector< std::size_t > | repl_of |
| Replica of the task owning each stacked entry. | |
| std::vector< std::size_t > | thr_slot |
| The task thread each stacked entry holds. | |
| std::vector< std::size_t > | thr_id |
| double | t_start = 0.0 |
| when the current top-level invocation began | |
| double | host_t0 = 0.0 |
| When this job last asked its host processor for service – the instant the residence at the host starts, queueing included. | |
| bool | holding_thread = false |
| std::size_t | thread_task = 0 |
One in-flight request: a reference-task job somewhere in its call tree.
Definition at line 92 of file ldes_ln_engine.h.
| std::vector<std::size_t> line::ldes::engine::LnJob::act_pos |
next activity of each stacked entry
Definition at line 97 of file ldes_ln_engine.h.
| std::vector<double> line::ldes::engine::LnJob::act_t0 |
When the current activity of each level began; -1 between activities.
An activity's span runs from the moment it becomes current to the moment its host demand completes, so it CARRIES THE NESTED CALLS it makes – that is what makes it a response time and not a residence.
Definition at line 118 of file ldes_ln_engine.h.
| std::vector<std::size_t> line::ldes::engine::LnJob::call_pos |
next call index of the current activity
Definition at line 108 of file ldes_ln_engine.h.
| std::vector<std::size_t> line::ldes::engine::LnJob::calls_left |
Repetitions of the CURRENT call still to be made, per stack level.
NOTDRAWN means the count has not been sampled yet for this execution of the activity. An LQN call carries a MEAN NUMBER OF CALLS (calls-mean), not a single dispatch, and the count is drawn once when the call is first reached – so A.synchCall(E, 3) blocks on E three times per execution of A, which is three times the callee's demand in the caller's cycle.
Definition at line 107 of file ldes_ln_engine.h.
| std::vector<double> line::ldes::engine::LnJob::entry_t0 |
When each stacked entry was entered, for its response time and occupancy.
Definition at line 110 of file ldes_ln_engine.h.
| bool line::ldes::engine::LnJob::holding_thread = false |
Definition at line 141 of file ldes_ln_engine.h.
| double line::ldes::engine::LnJob::host_t0 = 0.0 |
When this job last asked its host processor for service – the instant the residence at the host starts, queueing included.
A job is at one host at a time, so one scalar carries it.
Definition at line 140 of file ldes_ln_engine.h.
| std::size_t line::ldes::engine::LnJob::id = 0 |
Definition at line 93 of file ldes_ln_engine.h.
| std::size_t line::ldes::engine::LnJob::ref_task = 0 |
Definition at line 94 of file ldes_ln_engine.h.
| std::vector<std::size_t> line::ldes::engine::LnJob::repl_of |
Replica of the task owning each stacked entry.
A call picks the callee replica once and the request stays on it until it replies, so the whole of one invocation runs on one copy of the callee and its processor.
Definition at line 124 of file ldes_ln_engine.h.
| std::vector<std::size_t> line::ldes::engine::LnJob::stack |
The activity stack: what this job is executing and what it will return to.
entry indices, innermost last
Definition at line 96 of file ldes_ln_engine.h.
| double line::ldes::engine::LnJob::t_start = 0.0 |
when the current top-level invocation began
Definition at line 134 of file ldes_ln_engine.h.
| std::vector<std::size_t> line::ldes::engine::LnJob::thr_id |
Definition at line 133 of file ldes_ln_engine.h.
| std::vector<std::size_t> line::ldes::engine::LnJob::thr_slot |
The task thread each stacked entry holds.
A caller keeps its thread across a synchronous call, so every level of the stack holds one of its own task's threads at once, and that is the layered contention the model represents. NOTHR marks a level whose thread is not yet held (it is queueing, or its thread is powering up) or a level on an infinite-thread task.
Definition at line 132 of file ldes_ln_engine.h.
| std::size_t line::ldes::engine::LnJob::thread_task = 0 |
Definition at line 142 of file ldes_ln_engine.h.