pub struct System<'a> { /* private fields */ }Expand description
Type representing a System of Servers
Implementations§
Source§impl<'a> System<'a>
impl<'a> System<'a>
Sourcepub const fn new(servers: &'a [Server<'a>]) -> System<'a>
pub const fn new(servers: &'a [Server<'a>]) -> System<'a>
Create a new System from a slice of Servers, indexed by their priority, lowest index being the highest priority
Sourcepub const fn as_servers(&self) -> &'a [Server<'a>]
pub const fn as_servers(&self) -> &'a [Server<'a>]
Get a slice reference to the systems servers
Sourcepub fn aggregated_higher_priority_demand_curve_iter<'b, CSDCI>(
constrained_demand_curves: CSDCI,
) -> impl CurveIterator<CurveKind = HigherPriorityServerDemand> + Clone + 'bwhere
CSDCI::Item: CurveIterator<CurveKind = ConstrainedServerDemand> + Clone + 'b,
CSDCI: IntoIterator,
pub fn aggregated_higher_priority_demand_curve_iter<'b, CSDCI>(
constrained_demand_curves: CSDCI,
) -> impl CurveIterator<CurveKind = HigherPriorityServerDemand> + Clone + 'bwhere
CSDCI::Item: CurveIterator<CurveKind = ConstrainedServerDemand> + Clone + 'b,
CSDCI: IntoIterator,
Calculate the aggregated higher priority demand curve
by aggregating the aggregated demand curves of all Servers with higher priority
(lower value) than index.
Based on the papers Definition 12.
pub fn aggregated_higher_priority_actual_execution_curve_iter<'b>( &'b self, server_index: usize, ) -> AggregationIterator<Box<dyn ClonableCurveIterator<'b, CurveKind = ActualServerExecution> + 'b>, <ActualServerExecution as CurveType>::WindowKind>
Sourcepub fn system_wide_hyper_period(&self, server_index: usize) -> TimeUnit
pub fn system_wide_hyper_period(&self, server_index: usize) -> TimeUnit
Calculate the system wide hyper period
accounting for all servers and tasks
up to and including the server with priority server_index
Section 7.1 §2 Sentence 3, allows to exclude lower priority servers from the swh period calculation, when analysing tasks of a server
pub fn analysis_end(&self, server_index: usize) -> TimeUnit
Sourcepub fn original_unconstrained_server_execution_curve_iter(
&self,
server_index: usize,
) -> impl CurveIterator<CurveKind = UnconstrainedServerExecution> + Clone + '_
pub fn original_unconstrained_server_execution_curve_iter( &self, server_index: usize, ) -> impl CurveIterator<CurveKind = UnconstrainedServerExecution> + Clone + '_
Calculate the unconstrained execution curve
for the server with priority index.
See Definition 13. of the paper for reference
pub fn fixed_unconstrained_server_execution_curve_iter( &self, server_index: usize, ) -> impl CurveIterator<CurveKind = UnconstrainedServerExecution> + Clone + '_
Sourcepub fn original_actual_execution_curve_iter(
&self,
server_index: usize,
) -> impl CurveIterator<CurveKind = ActualServerExecution> + Clone + '_
pub fn original_actual_execution_curve_iter( &self, server_index: usize, ) -> impl CurveIterator<CurveKind = ActualServerExecution> + Clone + '_
Calculate the Constrained Execution Curve using Algorithm 4. from the paper TODO more detail, what do the parameters mean
§Panics
When a server is not guaranteed its capacity every interval