Class PmooAnalysis
- java.lang.Object
-
- org.networkcalculus.dnc.tandem.AbstractTandemAnalysis
-
- org.networkcalculus.dnc.tandem.analyses.PmooAnalysis
-
- All Implemented Interfaces:
TandemAnalysis
public class PmooAnalysis extends AbstractTandemAnalysis
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.networkcalculus.dnc.tandem.TandemAnalysis
TandemAnalysis.Analyses
-
-
Field Summary
-
Fields inherited from class org.networkcalculus.dnc.tandem.AbstractTandemAnalysis
configuration, result, server_graph
-
-
Constructor Summary
Constructors Modifier Constructor Description private
PmooAnalysis()
PmooAnalysis(ServerGraph server_graph)
PmooAnalysis(ServerGraph server_graph, AnalysisConfig configuration)
-
Method Summary
Modifier and Type Method Description protected static ServiceCurve
computePartialPMOOServiceCurve(Path path, ServiceCurve[] service_curves, java.util.List<Flow> cross_flow_substitutes, java.util.Map<Flow,java.lang.Integer> flow_tb_iter_map, int[] server_rl_iters)
Calculates the partial PMOO service curve for the given flow set by combining all servers having an outgoing turn contained in the given turn path.java.util.Set<ServiceCurve>
getLeftOverServiceCurves()
private java.util.Map<java.util.Set<Flow>,java.util.LinkedList<Path>>
getProlongationsToSubpaths(Path path, java.util.Map<Path,java.util.Set<Flow>> xtx_subpath_grouped_original)
static ServiceCurve
getServiceCurve(Path path, java.util.List<Flow> cross_flow_substitutes)
Concatenates the service curves along the given pathpath
according to the PMOO approach and returns the result.java.util.Set<ServiceCurve>
getServiceCurves(Flow flow_of_interest, Path path, java.util.Set<Flow> flows_to_serve)
private java.util.Set<ServiceCurve>
getServiceCurvesFP(Flow flow_of_interest, Path path, java.util.Set<Flow> flows_to_serve)
private java.util.Set<ServiceCurve>
getServiceCurvesStandard(Flow flow_of_interest, Path path, java.util.Set<Flow> flows_to_serve)
void
performAnalysis(Flow flow_of_interest)
Performs a pay-multiplexing-only-once (PMOO) analysis for theflow_of_interest
.void
performAnalysis(Flow flow_of_interest, Path path)
private java.util.Set<ServiceCurve>
xtxSubpathBetas(Flow flow_of_interest, Path path, java.util.Map<Path,java.util.Set<Flow>> xtx_subpath_grouped)
-
Methods inherited from class org.networkcalculus.dnc.tandem.AbstractTandemAnalysis
getBacklogBound, getDelayBound, getServerAlphasMap, getServerAlphasMapString, getServerGraph, toString
-
-
-
-
Constructor Detail
-
PmooAnalysis
private PmooAnalysis()
-
PmooAnalysis
public PmooAnalysis(ServerGraph server_graph)
-
PmooAnalysis
public PmooAnalysis(ServerGraph server_graph, AnalysisConfig configuration)
-
-
Method Detail
-
getServiceCurve
public static ServiceCurve getServiceCurve(Path path, java.util.List<Flow> cross_flow_substitutes)
Concatenates the service curves along the given pathpath
according to the PMOO approach and returns the result.It first decomposes all arrival curves (service curves) into token buckets (rate latency curves), enumerates over all combinations of token buckets and rate latency curves, and calls
computePartialPMOOServiceCurve()
for each combination. The total PMOO service curve is the maximum of all partial service curves.- Parameters:
path
- The Path traversed for which a PMOO left-over service curve will be computed.cross_flow_substitutes
- Flow substitutes according to PMOO's needs and abstracting from the actual cross-flows.- Returns:
- The PMOO service curve
-
computePartialPMOOServiceCurve
protected static ServiceCurve computePartialPMOOServiceCurve(Path path, ServiceCurve[] service_curves, java.util.List<Flow> cross_flow_substitutes, java.util.Map<Flow,java.lang.Integer> flow_tb_iter_map, int[] server_rl_iters)
Calculates the partial PMOO service curve for the given flow set by combining all servers having an outgoing turn contained in the given turn path. For each flow considers only one of its token bucket components (selected via the flow_tb_iter_map) and for each service curve considers only one rate latency curve (selected via the server_rl_iters).- Parameters:
path
- The tandem of servers the left-over service curve holds for.service_curves
- The service curves on the path.cross_flow_substitutes
- Flows representing a group of segregated flows.flow_tb_iter_map
- Defines which token bucket component of a flow's arrival bound to use.server_rl_iters
- Defines which rate latency component of a server's service curve to use.- Returns:
- A partial PMOO service curve.
-
performAnalysis
public void performAnalysis(Flow flow_of_interest) throws java.lang.Exception
Performs a pay-multiplexing-only-once (PMOO) analysis for theflow_of_interest
.- Parameters:
flow_of_interest
- the flow for which the end-to-end service curve shall be computed.- Throws:
java.lang.Exception
-
performAnalysis
public void performAnalysis(Flow flow_of_interest, Path path) throws java.lang.Exception
- Throws:
java.lang.Exception
-
getServiceCurves
public java.util.Set<ServiceCurve> getServiceCurves(Flow flow_of_interest, Path path, java.util.Set<Flow> flows_to_serve) throws java.lang.Exception
- Throws:
java.lang.Exception
-
getServiceCurvesFP
private java.util.Set<ServiceCurve> getServiceCurvesFP(Flow flow_of_interest, Path path, java.util.Set<Flow> flows_to_serve) throws java.lang.Exception
- Throws:
java.lang.Exception
-
getProlongationsToSubpaths
private java.util.Map<java.util.Set<Flow>,java.util.LinkedList<Path>> getProlongationsToSubpaths(Path path, java.util.Map<Path,java.util.Set<Flow>> xtx_subpath_grouped_original) throws java.lang.Exception
- Throws:
java.lang.Exception
-
getServiceCurvesStandard
private java.util.Set<ServiceCurve> getServiceCurvesStandard(Flow flow_of_interest, Path path, java.util.Set<Flow> flows_to_serve) throws java.lang.Exception
- Throws:
java.lang.Exception
-
xtxSubpathBetas
private java.util.Set<ServiceCurve> xtxSubpathBetas(Flow flow_of_interest, Path path, java.util.Map<Path,java.util.Set<Flow>> xtx_subpath_grouped) throws java.lang.Exception
- Throws:
java.lang.Exception
-
getLeftOverServiceCurves
public java.util.Set<ServiceCurve> getLeftOverServiceCurves()
-
-