![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
A job held by a station. More...
#include <line/solvers/ldes/ldes_station.h>
Public Attributes | |
| std::size_t | cls = 0 |
| int | priority = 0 |
| double | t_arr = 0.0 |
| arrival instant at this station | |
| double | t_sys = 0.0 |
| instant the current passage started | |
| double | service = 0.0 |
| the sampled requirement, drawn at arrival | |
| double | remaining = 0.0 |
| residual work; equals service before any preemption | |
| double | elapsed = 0.0 |
| attained service across all its service intervals | |
| double | rank = 0.0 |
| SIRO's random key, drawn at arrival. | |
| double | deadline = std::numeric_limits<double>::infinity() |
| EDD/EDF key. | |
| double | vft = 0.0 |
| FSP's virtual finish time, recomputed on demand. | |
| std::uint64_t | id = 0 |
| Identity of this job while it waits, so a reneging timer can find it. | |
| std::uint64_t | parent = 0 |
| The fork synchronization this job is a sibling of, 0 when it is not one. | |
| int | attempts = 0 |
| How many times this job has already retried from an orbit. | |
| std::uint64_t | call = 0 |
| The SYNCHRONOUS CALL this job belongs to, 0 when it belongs to none. | |
A job held by a station.
service, remaining and elapsed are the three quantities the size-based orders need and are NOT redundant. service is the ORIGINAL requirement PSJF orders by; remaining is the residual SRPT and LRPT order by, equal to service until the job is first preempted; elapsed is the attained service FB and SETF order by. The reference keeps them in a side table (preemptedJobHistory, keyed by the arrival instants) because its wait queue holds a plain Customer; carrying them on the job is the same information without the lookup, and without the key collision two jobs arriving at the same instant would produce.
Definition at line 66 of file ldes_station.h.
| int line::ldes::engine::Job::attempts = 0 |
How many times this job has already retried from an orbit.
It rides on the job because maxAttempts bounds the retries of ONE job, not of the station: a per-station counter would cap the orbit's total traffic instead and would let a job retry forever as long as others gave up.
Definition at line 102 of file ldes_station.h.
| std::uint64_t line::ldes::engine::Job::call = 0 |
The SYNCHRONOUS CALL this job belongs to, 0 when it belongs to none.
It rides on the job because the call is answered by a REPLY that comes back from somewhere else entirely: this identity is the only link between that reply and the server still held for it, and id cannot serve as one, being reassigned at every admission.
Definition at line 111 of file ldes_station.h.
| std::size_t line::ldes::engine::Job::cls = 0 |
Definition at line 67 of file ldes_station.h.
Referenced by line::ldes::engine::ps_shares().
| double line::ldes::engine::Job::deadline = std::numeric_limits<double>::infinity() |
EDD/EDF key.
Definition at line 75 of file ldes_station.h.
Referenced by line::ldes::engine::WaitCmp::operator()().
| double line::ldes::engine::Job::elapsed = 0.0 |
attained service across all its service intervals
Definition at line 73 of file ldes_station.h.
Referenced by line::ldes::engine::WaitCmp::operator()(), and line::ldes::engine::preemption_victim().
| std::uint64_t line::ldes::engine::Job::id = 0 |
Identity of this job while it waits, so a reneging timer can find it.
A timer names the job it was armed for, and the job may by then have entered service, been preempted back into the queue, or already left. An identity is the only thing that survives all three; the arrival instant cannot serve as one, because two jobs admitted at the same instant – routine on a closed model placed at t=0 – would share it.
Definition at line 86 of file ldes_station.h.
| std::uint64_t line::ldes::engine::Job::parent = 0 |
The fork synchronization this job is a sibling of, 0 when it is not one.
It rides on the JOB and not on the station because siblings of different parents interleave freely at every station between the Fork and the Join.
Definition at line 93 of file ldes_station.h.
| int line::ldes::engine::Job::priority = 0 |
Definition at line 68 of file ldes_station.h.
Referenced by line::ldes::engine::WaitCmp::operator()(), line::ldes::engine::preemption_victim(), and line::ldes::engine::ps_shares().
| double line::ldes::engine::Job::rank = 0.0 |
SIRO's random key, drawn at arrival.
Definition at line 74 of file ldes_station.h.
Referenced by line::ldes::engine::WaitCmp::operator()().
| double line::ldes::engine::Job::remaining = 0.0 |
residual work; equals service before any preemption
Definition at line 72 of file ldes_station.h.
Referenced by line::ldes::engine::WaitCmp::operator()(), and line::ldes::engine::preemption_victim().
| double line::ldes::engine::Job::service = 0.0 |
the sampled requirement, drawn at arrival
Definition at line 71 of file ldes_station.h.
Referenced by line::ldes::engine::WaitCmp::operator()(), and line::ldes::engine::preemption_victim().
| double line::ldes::engine::Job::t_arr = 0.0 |
arrival instant at this station
Definition at line 69 of file ldes_station.h.
Referenced by line::ldes::engine::WaitCmp::operator()().
| double line::ldes::engine::Job::t_sys = 0.0 |
instant the current passage started
Definition at line 70 of file ldes_station.h.
| double line::ldes::engine::Job::vft = 0.0 |
FSP's virtual finish time, recomputed on demand.
Definition at line 76 of file ldes_station.h.
Referenced by line::ldes::engine::WaitCmp::operator()().