LINE Solver (C++)
Templated C++ port of the LINE queueing solver
Loading...
Searching...
No Matches
line::ldes::engine::Job Struct Reference

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.

Detailed Description

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.

Member Data Documentation

◆ attempts

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.

◆ call

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.

◆ cls

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().

◆ deadline

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()().

◆ elapsed

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().

◆ id

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.

◆ parent

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.

◆ priority

int line::ldes::engine::Job::priority = 0

◆ rank

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()().

◆ remaining

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().

◆ service

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().

◆ t_arr

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()().

◆ t_sys

double line::ldes::engine::Job::t_sys = 0.0

instant the current passage started

Definition at line 70 of file ldes_station.h.

◆ vft

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()().


The documentation for this struct was generated from the following file: