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

One station's mutable state. More...

#include <line/solvers/ldes/ldes_engine.h>

Collaboration diagram for line::ldes::engine::StationState:

Classes

struct  BalkRule
 Balking: the (min, max, probability) triples an arrival consults. More...

Public Attributes

Role role = Role::Queue
lang::SchedStrategy sched = lang::SchedStrategy::FCFS
bool ps = false
bool preemptive = false
bool resume = false
 PR (continue the residual) as against PI (redraw).
bool size_ordered = false
 The waiting room is ranked by the job's SAMPLED size, so the size has to exist before the job enters service.
std::size_t nservers = 1
std::size_t lps_limit = 0
 LPS admission cap; 0 = none.
double cap = std::numeric_limits<double>::infinity()
std::vector< double > classcap
std::vector< lang::DropStrategy > droprule
 sn.droprule, per class, declared on the DESTINATION station.
std::vector< double > blocked_at
 Jobs held OUTSIDE this station's buffer but counted in its queue length: a BAS or BBS job whose destination is full occupies the upstream server and is charged to the destination, which is where it is queueing for.
std::vector< double > weight
 schedparam, the DPS/GPS weights
std::vector< double > class_mean
 mean service per class, for SEPT/LEPT
std::vector< double > lld
 sn.lldscaling: the RATE multiplier when n jobs are present, indexed n-1.
lang::CdScaling< double > cd
 sn.cdscaling: beta_r(n), a per-class RATE at the station's population.
bool has_cd = false
bool pas = false
 A PASS-AND-SWAP station serves an ORDERED LIST whose total rate is a function of the whole class sequence (Dorsman and Gardner 2024).
std::function< double(const std::vector< std::size_t > &)> pas_rate
std::vector< std::vector< bool > > pas_swap
std::vector< Job > pas_list
std::uint64_t pas_tag = 0
bool polling = false
 A POLLING SERVER visits the per-class buffers in a fixed cyclic order, paying a SWITCHOVER on each leg.
std::size_t poll_at = 0
 the buffer the server is serving or heading to
bool poll_switching = false
bool poll_parked = false
std::size_t poll_budget = 0
 remaining visit budget; 0 = exhausted
lang::PollingType poll_type = lang::PollingType::EXHAUSTIVE
std::size_t poll_k = 1
std::vector< Sampler > switchover
std::vector< bool > has_switchover
bool has_setup = false
 SETUP AND DELAY-OFF: a station that powers down when it falls idle.
Sampler setup_time
Sampler delayoff_time
bool setup_on = false
 the server has completed its setup
bool setup_running = false
 a setup is in progress
double delayoff_at = std::numeric_limits<double>::infinity()
 when it shuts down
std::vector< Sampler > retrial
 RETRIAL: a job refused admission joins an ORBIT and tries again later, instead of being dropped or queueing.
std::vector< bool > has_retrial
std::vector< int > max_attempts
std::vector< double > orbit_size
 live, per class
std::vector< double > tot_orbit
 time integral of the orbit size
double orbit_last = 0.0
std::vector< double > retried
std::vector< double > retrial_lost
std::vector< Sampler > patience
 Reneging: the abandonment timer of a WAITING job, per class.
std::vector< bool > has_patience
std::vector< std::vector< BalkRule > > balk
std::vector< Sampler > svc
std::vector< bool > off
bool bmsp = false
 BULK SERVICE (BMSP): a THIRD station kind, beside the buffered one and the sharing one.
std::size_t bmsp_cls = 0
 the one enabled class
std::size_t bmsp_pending = 1
 jobs the armed firing will complete
std::uint64_t bmsp_tag = 0
 neutralises a superseded firing
bool has_pools = false
 HETEROGENEOUS SERVER POOLS, empty on a station whose servers are alike.
std::vector< std::size_t > server_type
 per slot, its pool
std::vector< std::size_t > type_first
 per pool, its first slot
std::vector< std::size_t > type_count
 per pool, its server count
std::vector< std::vector< bool > > type_compat
 [pool][class]
std::vector< std::vector< Sampler > > type_svc
 [pool][class]
std::vector< std::vector< bool > > type_has_svc
 [pool][class], a law of its own
std::vector< std::vector< double > > type_rate
 [pool][class], 1/mean, for FSF
lang::HeteroSchedPolicy hetero_policy = lang::HeteroSchedPolicy::ORDER
std::vector< std::size_t > type_order
 ALIS/FAIRNESS rotate this order; a used pool goes to the back.
std::vector< std::size_t > alfs_order
 ALFS walks the pools least-flexible first: fewest compatible classes.
std::vector< Job > buffer
 The waiting room, as an EXPLICIT HEAP rather than a std::priority_queue.
WaitCmp cmp
std::vector< Job > server
std::vector< bool > server_busy
std::vector< double > server_start
 instant the held job entered service
std::vector< std::uint64_t > server_tag
std::vector< bool > server_blocked
 A server holding a completed job it cannot hand on, because its destination is full.
std::vector< bool > server_held
 A server HELD ACROSS A SYNCHRONOUS CALL.
std::vector< std::size_t > held_cls
std::vector< Job > blocked_job
std::vector< std::size_t > blocked_dest
std::vector< std::size_t > blocked_dest_cls
std::vector< PsJob > ps_jobs
double ps_last_update = 0.0
bool state_dependent = false
 True when the station's service RATE depends on its own population, i.e.
double util_peak = 1.0
 max(c, max(alpha)): the peak capacity the utilization is reported against.
std::vector< std::size_t > parallelism
 Queue.setServerParallelism(class, n): the servers a class-r job seizes for the whole of its service, one entry per class.
bool has_parallelism = false
std::vector< std::vector< std::size_t > > held_extra
 The further slots held beside each primary one, so that releasing the primary releases the whole set.
std::vector< double > gd_peak
 The declared peak of the GLOBAL (Whittle) dependence at this station, one entry per class, 1 when the model declares none.
std::vector< double > ps_cd
 The class-dependent speed a SHARING station is running at right now, one entry per class.
bool has_breakdown = false
 Server breakdown: the server alternates up and down on two clocks.
bool up = true
std::vector< double > down_scale
std::vector< double > down_rate_raw
 The declared absolute rate, kept so the scale can be formed once E[S] is known.
Sampler failure_time
Sampler repair_time
double sd_last_update = 0.0

Detailed Description

One station's mutable state.

Definition at line 516 of file ldes_engine.h.

Member Data Documentation

◆ alfs_order

std::vector<std::size_t> line::ldes::engine::StationState::alfs_order

ALFS walks the pools least-flexible first: fewest compatible classes.

Definition at line 709 of file ldes_engine.h.

◆ balk

std::vector<std::vector<BalkRule> > line::ldes::engine::StationState::balk

Definition at line 652 of file ldes_engine.h.

◆ blocked_at

std::vector<double> line::ldes::engine::StationState::blocked_at

Jobs held OUTSIDE this station's buffer but counted in its queue length: a BAS or BBS job whose destination is full occupies the upstream server and is charged to the destination, which is where it is queueing for.

Charging it upstream would let a full station report a queue below its own capacity while jobs pile up in front of it.

Definition at line 549 of file ldes_engine.h.

◆ blocked_dest

std::vector<std::size_t> line::ldes::engine::StationState::blocked_dest

Definition at line 744 of file ldes_engine.h.

◆ blocked_dest_cls

std::vector<std::size_t> line::ldes::engine::StationState::blocked_dest_cls

Definition at line 745 of file ldes_engine.h.

◆ blocked_job

std::vector<Job> line::ldes::engine::StationState::blocked_job

Definition at line 743 of file ldes_engine.h.

◆ bmsp

bool line::ldes::engine::StationState::bmsp = false

BULK SERVICE (BMSP): a THIRD station kind, beside the buffered one and the sharing one.

A BMAP or BMMAPt assigned as a SERVICE process is a batch Markovian service process: the station has no per-job service time at all, only a station-level FIRING CLOCK, and one firing completes min(b, present) jobs at once. Neither existing path can express that – draw_at_arrival gives every job a Job::service, and a sharing station divides one server among everyone – so this is its own arm in the admit path and in the departure arm.

The clock is armed when the station goes from EMPTY to non-empty and re-armed at every firing, so the server fires continuously while it holds work. That is what makes a wall-clock schedule walk exact for a BMMAPt clock: the firing interval is drawn from the instant the clock is armed, never from a job's arrival.

Restricted BY NAME to a single-server, single-class FCFS queue with no preemption, polling, PAS, setup, load dependence, server pools, immediate feedback or blocking destination, exactly as the Java engine restricts it: a bulk server is a single server by construction, and "which of the b jobs it just released is the one blocking" has no answer.

Definition at line 679 of file ldes_engine.h.

◆ bmsp_cls

std::size_t line::ldes::engine::StationState::bmsp_cls = 0

the one enabled class

Definition at line 680 of file ldes_engine.h.

◆ bmsp_pending

std::size_t line::ldes::engine::StationState::bmsp_pending = 1

jobs the armed firing will complete

Definition at line 681 of file ldes_engine.h.

◆ bmsp_tag

std::uint64_t line::ldes::engine::StationState::bmsp_tag = 0

neutralises a superseded firing

Definition at line 682 of file ldes_engine.h.

◆ buffer

std::vector<Job> line::ldes::engine::StationState::buffer

The waiting room, as an EXPLICIT HEAP rather than a std::priority_queue.

FSP is why. Its order is the virtual finish time of a processor-sharing schedule over the residual work PRESENT AT THE STATION, so it changes whenever the station's composition does and cannot be stamped on a job when it arrives. A container that hides its storage cannot be reordered or rescanned; this one is scanned linearly for FSP and kept as a heap for every other discipline, whose keys are per-job constants.

Definition at line 721 of file ldes_engine.h.

◆ cap

double line::ldes::engine::StationState::cap = std::numeric_limits<double>::infinity()

Definition at line 531 of file ldes_engine.h.

◆ cd

lang::CdScaling<double> line::ldes::engine::StationState::cd

sn.cdscaling: beta_r(n), a per-class RATE at the station's population.

Definition at line 561 of file ldes_engine.h.

◆ class_mean

std::vector<double> line::ldes::engine::StationState::class_mean

mean service per class, for SEPT/LEPT

Definition at line 551 of file ldes_engine.h.

◆ classcap

std::vector<double> line::ldes::engine::StationState::classcap

Definition at line 532 of file ldes_engine.h.

◆ cmp

WaitCmp line::ldes::engine::StationState::cmp

Definition at line 722 of file ldes_engine.h.

◆ delayoff_at

double line::ldes::engine::StationState::delayoff_at = std::numeric_limits<double>::infinity()

when it shuts down

Definition at line 623 of file ldes_engine.h.

◆ delayoff_time

Sampler line::ldes::engine::StationState::delayoff_time

Definition at line 620 of file ldes_engine.h.

◆ down_rate_raw

std::vector<double> line::ldes::engine::StationState::down_rate_raw

The declared absolute rate, kept so the scale can be formed once E[S] is known.

Definition at line 819 of file ldes_engine.h.

◆ down_scale

std::vector<double> line::ldes::engine::StationState::down_scale

Definition at line 817 of file ldes_engine.h.

◆ droprule

std::vector<lang::DropStrategy> line::ldes::engine::StationState::droprule

sn.droprule, per class, declared on the DESTINATION station.

JMT's convention and the reference's: the policy belongs to the station whose capacity is limited, not to the upstream one whose server ends up blocked. A model that declared it on the source would be read as having no policy at all.

Definition at line 541 of file ldes_engine.h.

◆ failure_time

Sampler line::ldes::engine::StationState::failure_time

Definition at line 820 of file ldes_engine.h.

◆ gd_peak

std::vector<double> line::ldes::engine::StationState::gd_peak

The declared peak of the GLOBAL (Whittle) dependence at this station, one entry per class, 1 when the model declares none.

It MULTIPLIES whatever peak the station already reports against, because phi multiplies the rate the class-, joint- and load-dependent scalings have already set; getPeakScaling folds the same product.

Definition at line 790 of file ldes_engine.h.

◆ has_breakdown

bool line::ldes::engine::StationState::has_breakdown = false

Server breakdown: the server alternates up and down on two clocks.

down_scale[r] is the RATE MULTIPLIER while down, down_rate(r) * E[S(i,r)], so the whole outage is expressed as a state-dependent rate change and needs no separate machinery: a zero multiplier stalls the job with its residual intact (nothing is rescheduled, so nothing departs until repair) and a positive one is the degraded server. That is exactly the reference's semantics – a breakdown does not evict the job in service, and downServiceRates degrades rather than stops.

Definition at line 815 of file ldes_engine.h.

◆ has_cd

bool line::ldes::engine::StationState::has_cd = false

Definition at line 562 of file ldes_engine.h.

◆ has_parallelism

bool line::ldes::engine::StationState::has_parallelism = false

Definition at line 776 of file ldes_engine.h.

◆ has_patience

std::vector<bool> line::ldes::engine::StationState::has_patience

Definition at line 645 of file ldes_engine.h.

◆ has_pools

bool line::ldes::engine::StationState::has_pools = false

HETEROGENEOUS SERVER POOLS, empty on a station whose servers are alike.

A pool is count servers that accept only compatible classes and serve them at a law of their own, so a model that declares them is a DIFFERENT system from the multiserver it would otherwise look like: flattening the pools into nservers answers that other system, plausibly and silently.

The slots are laid out POOL BY POOL in declaration order, so slot type_first[t] .. type_first[t] + type_count[t] - 1 belongs to pool t and server_type[slot] is the inverse. Every other part of the engine addresses a server by its slot and needs to know nothing about this.

Definition at line 697 of file ldes_engine.h.

◆ has_retrial

std::vector<bool> line::ldes::engine::StationState::has_retrial

Definition at line 636 of file ldes_engine.h.

◆ has_setup

bool line::ldes::engine::StationState::has_setup = false

SETUP AND DELAY-OFF: a station that powers down when it falls idle.

The server runs a four-state machine. It starts OFF; an arrival puts it in SETUP for the setup time and only then does service begin; when it empties it enters DELAYOFF and shuts down when that timer expires, so a job arriving during the delay-off window pays NOTHING and one arriving after it pays the full setup. Collapsing the two idle states makes every arrival to an idle server pay the setup, which is the model of a server with no delay-off at all.

Definition at line 619 of file ldes_engine.h.

◆ has_switchover

std::vector<bool> line::ldes::engine::StationState::has_switchover

Definition at line 606 of file ldes_engine.h.

◆ held_cls

std::vector<std::size_t> line::ldes::engine::StationState::held_cls

Definition at line 742 of file ldes_engine.h.

◆ held_extra

std::vector<std::vector<std::size_t> > line::ldes::engine::StationState::held_extra

The further slots held beside each primary one, so that releasing the primary releases the whole set.

Empty at a station that declares none.

Definition at line 781 of file ldes_engine.h.

◆ hetero_policy

lang::HeteroSchedPolicy line::ldes::engine::StationState::hetero_policy = lang::HeteroSchedPolicy::ORDER

Definition at line 705 of file ldes_engine.h.

◆ lld

std::vector<double> line::ldes::engine::StationState::lld

sn.lldscaling: the RATE multiplier when n jobs are present, indexed n-1.

It divides the sampled service time at an ordinary station and IS the effective server count at a sharing one – the same table read two ways, because a share of c servers and a c-fold rate are the same thing only for PS.

Definition at line 559 of file ldes_engine.h.

◆ lps_limit

std::size_t line::ldes::engine::StationState::lps_limit = 0

LPS admission cap; 0 = none.

Definition at line 530 of file ldes_engine.h.

◆ max_attempts

std::vector<int> line::ldes::engine::StationState::max_attempts

Definition at line 637 of file ldes_engine.h.

◆ nservers

std::size_t line::ldes::engine::StationState::nservers = 1

Definition at line 529 of file ldes_engine.h.

◆ off

std::vector<bool> line::ldes::engine::StationState::off

Definition at line 654 of file ldes_engine.h.

◆ orbit_last

double line::ldes::engine::StationState::orbit_last = 0.0

Definition at line 640 of file ldes_engine.h.

◆ orbit_size

std::vector<double> line::ldes::engine::StationState::orbit_size

live, per class

Definition at line 638 of file ldes_engine.h.

◆ parallelism

std::vector<std::size_t> line::ldes::engine::StationState::parallelism

Queue.setServerParallelism(class, n): the servers a class-r job seizes for the whole of its service, one entry per class.

The job holds the WHOLE SET or it waits, so the station serves at most floor(c/n) of them at once and the utilization one contributes is n/c rather than 1/c. That is JMT's Server.serverNumRequired, and it is not the same model as an n-fold slower server, which would leave the other slots free for someone else.

Definition at line 775 of file ldes_engine.h.

◆ pas

bool line::ldes::engine::StationState::pas = false

A PASS-AND-SWAP station serves an ORDERED LIST whose total rate is a function of the whole class sequence (Dorsman and Gardner 2024).

The rate of the token at position p is the INCREMENT mu(c1..cp) - mu(c1..c_{p-1}), which is what makes the station order-independent. On a completion at position p the departing job is not the one at p: the SWAP GRAPH chains forward from p to the last position reachable through it, and that job departs while the chain shifts into the hole. An empty swap graph is the plain OI station, where p itself departs.

Definition at line 575 of file ldes_engine.h.

◆ pas_list

std::vector<Job> line::ldes::engine::StationState::pas_list

Definition at line 578 of file ldes_engine.h.

◆ pas_rate

std::function<double(const std::vector<std::size_t>&)> line::ldes::engine::StationState::pas_rate

Definition at line 576 of file ldes_engine.h.

◆ pas_swap

std::vector<std::vector<bool> > line::ldes::engine::StationState::pas_swap

Definition at line 577 of file ldes_engine.h.

◆ pas_tag

std::uint64_t line::ldes::engine::StationState::pas_tag = 0

Definition at line 579 of file ldes_engine.h.

◆ patience

std::vector<Sampler> line::ldes::engine::StationState::patience

Reneging: the abandonment timer of a WAITING job, per class.

Definition at line 644 of file ldes_engine.h.

◆ poll_at

std::size_t line::ldes::engine::StationState::poll_at = 0

the buffer the server is serving or heading to

Definition at line 599 of file ldes_engine.h.

◆ poll_budget

std::size_t line::ldes::engine::StationState::poll_budget = 0

remaining visit budget; 0 = exhausted

Definition at line 602 of file ldes_engine.h.

◆ poll_k

std::size_t line::ldes::engine::StationState::poll_k = 1

Definition at line 604 of file ldes_engine.h.

◆ poll_parked

bool line::ldes::engine::StationState::poll_parked = false

Definition at line 601 of file ldes_engine.h.

◆ poll_switching

bool line::ldes::engine::StationState::poll_switching = false

Definition at line 600 of file ldes_engine.h.

◆ poll_type

lang::PollingType line::ldes::engine::StationState::poll_type = lang::PollingType::EXHAUSTIVE

Definition at line 603 of file ldes_engine.h.

◆ polling

bool line::ldes::engine::StationState::polling = false

A POLLING SERVER visits the per-class buffers in a fixed cyclic order, paying a SWITCHOVER on each leg.

It advances ONE STEP AT A TIME and pays that step's switchover whether or not the buffer it reaches holds work. Skipping ahead to the next non-empty buffer for a single switchover is a different and much faster discipline: it shortens the cycle and understates the waiting time by tens of percent against Takagi's exact formulas, which assume the walking server. The one exception is a lap made entirely of zero-time legs, which would spin forever at the same instant: there the server PARKS and the next arrival restarts it.

The switchover charged to a leg is the one stored against the buffer being LEFT – that is Takagi's r_i and what Queue.setSwitchover means – not the one against the buffer being entered.

Definition at line 598 of file ldes_engine.h.

◆ preemptive

bool line::ldes::engine::StationState::preemptive = false

Definition at line 520 of file ldes_engine.h.

◆ ps

bool line::ldes::engine::StationState::ps = false

Definition at line 519 of file ldes_engine.h.

◆ ps_cd

std::vector<double> line::ldes::engine::StationState::ps_cd

The class-dependent speed a SHARING station is running at right now, one entry per class.

It is cached rather than recomputed because ps_advance integrates the interval that just ENDED while the caller has already written the new population: reading the handle there would credit that interval at the speed that only starts now. ps_reschedule refreshes it in the same breath as it re-times the departures, which is the moment the new speed actually takes effect – the same flush-then-install order Accum::set_busy_scale uses for load dependence.

Definition at line 803 of file ldes_engine.h.

◆ ps_jobs

std::vector<PsJob> line::ldes::engine::StationState::ps_jobs

Definition at line 748 of file ldes_engine.h.

◆ ps_last_update

double line::ldes::engine::StationState::ps_last_update = 0.0

Definition at line 749 of file ldes_engine.h.

◆ repair_time

Sampler line::ldes::engine::StationState::repair_time

Definition at line 820 of file ldes_engine.h.

◆ resume

bool line::ldes::engine::StationState::resume = false

PR (continue the residual) as against PI (redraw).

Definition at line 521 of file ldes_engine.h.

◆ retrial

std::vector<Sampler> line::ldes::engine::StationState::retrial

RETRIAL: a job refused admission joins an ORBIT and tries again later, instead of being dropped or queueing.

The orbit is not a buffer. Its occupants are not at the station, do not occupy its capacity and are not in its queue length; they are a separate population that re-offers itself at the retrial rate. Treating a retrial job as queued makes the station hold more than its own capacity, which is exactly what the model says it cannot.

Definition at line 635 of file ldes_engine.h.

◆ retrial_lost

std::vector<double> line::ldes::engine::StationState::retrial_lost

Definition at line 641 of file ldes_engine.h.

◆ retried

std::vector<double> line::ldes::engine::StationState::retried

Definition at line 641 of file ldes_engine.h.

◆ role

Role line::ldes::engine::StationState::role = Role::Queue

Definition at line 517 of file ldes_engine.h.

◆ sched

lang::SchedStrategy line::ldes::engine::StationState::sched = lang::SchedStrategy::FCFS

Definition at line 518 of file ldes_engine.h.

◆ sd_last_update

double line::ldes::engine::StationState::sd_last_update = 0.0

Definition at line 821 of file ldes_engine.h.

◆ server

std::vector<Job> line::ldes::engine::StationState::server

Definition at line 723 of file ldes_engine.h.

◆ server_blocked

std::vector<bool> line::ldes::engine::StationState::server_blocked

A server holding a completed job it cannot hand on, because its destination is full.

It is NOT free: refusing to start a new service is the whole content of blocking, and a blocked slot treated as idle turns a blocking network into a lossless one with the same topology.

Definition at line 733 of file ldes_engine.h.

◆ server_busy

std::vector<bool> line::ldes::engine::StationState::server_busy

Definition at line 724 of file ldes_engine.h.

◆ server_held

std::vector<bool> line::ldes::engine::StationState::server_held

A server HELD ACROSS A SYNCHRONOUS CALL.

Its job has left for the callee and the slot is NOT free: releasing it would let the caller serve someone else while its own call is outstanding, which is the asynchronous model under the synchronous one's name. Separate from server_blocked, which holds a COMPLETED job whose destination is full.

Definition at line 741 of file ldes_engine.h.

◆ server_start

std::vector<double> line::ldes::engine::StationState::server_start

instant the held job entered service

Definition at line 725 of file ldes_engine.h.

◆ server_tag

std::vector<std::uint64_t> line::ldes::engine::StationState::server_tag

Definition at line 726 of file ldes_engine.h.

◆ server_type

std::vector<std::size_t> line::ldes::engine::StationState::server_type

per slot, its pool

Definition at line 698 of file ldes_engine.h.

◆ setup_on

bool line::ldes::engine::StationState::setup_on = false

the server has completed its setup

Definition at line 621 of file ldes_engine.h.

◆ setup_running

bool line::ldes::engine::StationState::setup_running = false

a setup is in progress

Definition at line 622 of file ldes_engine.h.

◆ setup_time

Sampler line::ldes::engine::StationState::setup_time

Definition at line 620 of file ldes_engine.h.

◆ size_ordered

bool line::ldes::engine::StationState::size_ordered = false

The waiting room is ranked by the job's SAMPLED size, so the size has to exist before the job enters service.

A time-inhomogeneous law is drawn at the service start instant everywhere else (see draw_at_arrival); here it cannot be, and is drawn on arrival as the reference does.

Definition at line 528 of file ldes_engine.h.

◆ state_dependent

bool line::ldes::engine::StationState::state_dependent = false

True when the station's service RATE depends on its own population, i.e.

it declares a load- or class-dependence table.

Such a station cannot schedule a departure once and forget it: the rate in force changes every time the population does, so the residual work must be integrated forward and the completion re-timed at each change – the same discipline a sharing station needs, for a different reason. Applying the scaling only at service start would time every completion at the rate that happened to hold when it began.

Definition at line 762 of file ldes_engine.h.

◆ svc

std::vector<Sampler> line::ldes::engine::StationState::svc

Definition at line 653 of file ldes_engine.h.

◆ switchover

std::vector<Sampler> line::ldes::engine::StationState::switchover

Definition at line 605 of file ldes_engine.h.

◆ tot_orbit

std::vector<double> line::ldes::engine::StationState::tot_orbit

time integral of the orbit size

Definition at line 639 of file ldes_engine.h.

◆ type_compat

std::vector<std::vector<bool> > line::ldes::engine::StationState::type_compat

[pool][class]

Definition at line 701 of file ldes_engine.h.

◆ type_count

std::vector<std::size_t> line::ldes::engine::StationState::type_count

per pool, its server count

Definition at line 700 of file ldes_engine.h.

◆ type_first

std::vector<std::size_t> line::ldes::engine::StationState::type_first

per pool, its first slot

Definition at line 699 of file ldes_engine.h.

◆ type_has_svc

std::vector<std::vector<bool> > line::ldes::engine::StationState::type_has_svc

[pool][class], a law of its own

Definition at line 703 of file ldes_engine.h.

◆ type_order

std::vector<std::size_t> line::ldes::engine::StationState::type_order

ALIS/FAIRNESS rotate this order; a used pool goes to the back.

Definition at line 707 of file ldes_engine.h.

◆ type_rate

std::vector<std::vector<double> > line::ldes::engine::StationState::type_rate

[pool][class], 1/mean, for FSF

Definition at line 704 of file ldes_engine.h.

◆ type_svc

std::vector<std::vector<Sampler> > line::ldes::engine::StationState::type_svc

[pool][class]

Definition at line 702 of file ldes_engine.h.

◆ up

bool line::ldes::engine::StationState::up = true

Definition at line 816 of file ldes_engine.h.

◆ util_peak

double line::ldes::engine::StationState::util_peak = 1.0

max(c, max(alpha)): the peak capacity the utilization is reported against.

Definition at line 764 of file ldes_engine.h.

◆ weight

std::vector<double> line::ldes::engine::StationState::weight

schedparam, the DPS/GPS weights

Definition at line 550 of file ldes_engine.h.


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