![]() |
Peano
|
Cascade of load balancing schemes. More...
#include <Cascade.h>
Public Member Functions | |
Cascade (Configuration *configuration=new DefaultConfiguration(), CostMetrics *costMetrics=new toolbox::loadbalancing::metrics::CellCount()) | |
virtual | ~Cascade () |
We have piped through any pointers to a configuration and the cost metrics. | |
virtual void | finishStep () override |
Inform the active aggregate about finishStep() and then check afterwards if the active load balancing has stagnated. | |
virtual bool | hasSplitRecently () const override |
virtual int | getGlobalNumberOfTrees () const override |
Delegate to stats. | |
virtual bool | hasStagnated () const override |
A load balancing can either be stagnating or be switched off for this predicate to hold. | |
virtual void | finishSimulation () override |
virtual void | enable (bool value) override |
Switch on/off. | |
![]() | |
AbstractLoadBalancing (Configuration *configuration, CostMetrics *costMetrics) | |
Constructor. | |
virtual | ~AbstractLoadBalancing () |
Destructor. | |
virtual std::string | toString () const |
Generic string serialisation. | |
bool | isEnabled (bool globally) const |
Clarifies whether load balancing is, in principle, enabled. | |
void | setConfigurationAndMetricsNullWithoutDelete () |
This is only used when you concatenate balancing rules and you want to disable any deletion. | |
Private Attributes | |
HostedLoadBalancing0 | _hostedLoadBalancing0 |
HostedLoadBalancing1 | _hostedLoadBalancing1 |
int | _activeLoadBalancing |
Pick the active load balancing. | |
Static Private Attributes | |
static tarch::logging::Log | _log |
Additional Inherited Members | |
![]() | |
static constexpr int | NoHeaviestTreeAvailable = -1 |
Is used by tree identification and either indicates that there are no trees at all or means that the heaviest tree is on the blacklist. | |
![]() | |
bool | fitsIntoMemory (State state) const |
Ensure enough memory is left-over. | |
bool | isInterRankBalancingBad () const |
Is the balancing between the ranks ok. | |
bool | isIntraRankBalancingBad () const |
Is the balancing on the rank ok. | |
bool | areRanksUnemployed () const |
double | getWeightOfHeaviestLocalSpacetree () const |
int | getIdOfHeaviestLocalSpacetree () const |
Determines the maximum spacetree size a tree should have in the optimal case. | |
int | getIdOfHeaviestLocalSpacetree (double tolerance) const |
Similar to getIdOfHeaviestLocalSpacetree() but you might get one of the trees back that is close to the heaviest one up to tolerance. | |
![]() | |
Blacklist | _blacklist |
Statistics | _statistics |
Configuration * | _configuration |
CostMetrics * | _costMetrics |
State | _state |
Ensure that you invoke. | |
![]() | |
static tarch::logging::Log | _log |
Cascade of load balancing schemes.
We run through a series of load balancing schemes. If one is stagnating or switching off, we switch to the next one.
I tried to play around with variadic templates, but that did not work for multiple reasons, so I went down the manual way.
toolbox::loadbalancing::strategies::cascade::Cascade< HostedLoadBalancing0, HostedLoadBalancing1 >::Cascade | ( | Configuration * | configuration = new DefaultConfiguration(), |
CostMetrics * | costMetrics = new toolbox::loadbalancing::metrics::CellCount() ) |
|
virtual |
We have piped through any pointers to a configuration and the cost metrics.
Now we set these pointers manually to nullptr, so no piped through attribute is actually deleted. Instead, we trust on the current class' supertype to actually destroy object.
Definition at line 50 of file Cascade.h.
References toolbox::loadbalancing::strategies::cascade::Cascade< HostedLoadBalancing0, HostedLoadBalancing1 >::_hostedLoadBalancing0, and toolbox::loadbalancing::strategies::cascade::Cascade< HostedLoadBalancing0, HostedLoadBalancing1 >::_hostedLoadBalancing1.
|
overridevirtual |
Switch on/off.
Reimplemented from toolbox::loadbalancing::AbstractLoadBalancing.
Definition at line 137 of file Cascade.h.
References toolbox::loadbalancing::strategies::cascade::Cascade< HostedLoadBalancing0, HostedLoadBalancing1 >::_activeLoadBalancing, toolbox::loadbalancing::strategies::cascade::Cascade< HostedLoadBalancing0, HostedLoadBalancing1 >::_hostedLoadBalancing0, toolbox::loadbalancing::strategies::cascade::Cascade< HostedLoadBalancing0, HostedLoadBalancing1 >::_hostedLoadBalancing1, toolbox::loadbalancing::AbstractLoadBalancing::enable(), and logInfo.
|
overridevirtual |
Reimplemented from toolbox::loadbalancing::AbstractLoadBalancing.
Definition at line 122 of file Cascade.h.
References toolbox::loadbalancing::strategies::cascade::Cascade< HostedLoadBalancing0, HostedLoadBalancing1 >::_activeLoadBalancing, toolbox::loadbalancing::strategies::cascade::Cascade< HostedLoadBalancing0, HostedLoadBalancing1 >::_hostedLoadBalancing0, toolbox::loadbalancing::strategies::cascade::Cascade< HostedLoadBalancing0, HostedLoadBalancing1 >::_hostedLoadBalancing1, and assertion1.
|
overridevirtual |
Inform the active aggregate about finishStep() and then check afterwards if the active load balancing has stagnated.
If so, switch to the next one in the cascade.
Implements toolbox::loadbalancing::AbstractLoadBalancing.
Definition at line 61 of file Cascade.h.
References toolbox::loadbalancing::strategies::cascade::Cascade< HostedLoadBalancing0, HostedLoadBalancing1 >::_activeLoadBalancing, toolbox::loadbalancing::strategies::cascade::Cascade< HostedLoadBalancing0, HostedLoadBalancing1 >::_hostedLoadBalancing0, toolbox::loadbalancing::strategies::cascade::Cascade< HostedLoadBalancing0, HostedLoadBalancing1 >::_hostedLoadBalancing1, assertion1, and logInfo.
|
overridevirtual |
Delegate to stats.
Reimplemented from toolbox::loadbalancing::AbstractLoadBalancing.
Definition at line 98 of file Cascade.h.
References toolbox::loadbalancing::strategies::cascade::Cascade< HostedLoadBalancing0, HostedLoadBalancing1 >::_activeLoadBalancing, toolbox::loadbalancing::strategies::cascade::Cascade< HostedLoadBalancing0, HostedLoadBalancing1 >::_hostedLoadBalancing0, toolbox::loadbalancing::strategies::cascade::Cascade< HostedLoadBalancing0, HostedLoadBalancing1 >::_hostedLoadBalancing1, and assertion1.
|
overridevirtual |
Reimplemented from toolbox::loadbalancing::AbstractLoadBalancing.
Definition at line 84 of file Cascade.h.
References toolbox::loadbalancing::strategies::cascade::Cascade< HostedLoadBalancing0, HostedLoadBalancing1 >::_activeLoadBalancing, toolbox::loadbalancing::strategies::cascade::Cascade< HostedLoadBalancing0, HostedLoadBalancing1 >::_hostedLoadBalancing0, toolbox::loadbalancing::strategies::cascade::Cascade< HostedLoadBalancing0, HostedLoadBalancing1 >::_hostedLoadBalancing1, and assertion1.
|
overridevirtual |
A load balancing can either be stagnating or be switched off for this predicate to hold.
Reimplemented from toolbox::loadbalancing::AbstractLoadBalancing.
Definition at line 112 of file Cascade.h.
References toolbox::loadbalancing::strategies::cascade::Cascade< HostedLoadBalancing0, HostedLoadBalancing1 >::_activeLoadBalancing, toolbox::loadbalancing::strategies::cascade::Cascade< HostedLoadBalancing0, HostedLoadBalancing1 >::_hostedLoadBalancing1, toolbox::loadbalancing::AbstractLoadBalancing::_state, and toolbox::loadbalancing::SwitchedOff.
|
private |
Pick the active load balancing.
Definition at line 158 of file Cascade.h.
Referenced by toolbox::loadbalancing::strategies::cascade::Cascade< HostedLoadBalancing0, HostedLoadBalancing1 >::enable(), toolbox::loadbalancing::strategies::cascade::Cascade< HostedLoadBalancing0, HostedLoadBalancing1 >::finishSimulation(), toolbox::loadbalancing::strategies::cascade::Cascade< HostedLoadBalancing0, HostedLoadBalancing1 >::finishStep(), toolbox::loadbalancing::strategies::cascade::Cascade< HostedLoadBalancing0, HostedLoadBalancing1 >::getGlobalNumberOfTrees(), toolbox::loadbalancing::strategies::cascade::Cascade< HostedLoadBalancing0, HostedLoadBalancing1 >::hasSplitRecently(), and toolbox::loadbalancing::strategies::cascade::Cascade< HostedLoadBalancing0, HostedLoadBalancing1 >::hasStagnated().
|
private |
Definition at line 152 of file Cascade.h.
Referenced by toolbox::loadbalancing::strategies::cascade::Cascade< HostedLoadBalancing0, HostedLoadBalancing1 >::enable(), toolbox::loadbalancing::strategies::cascade::Cascade< HostedLoadBalancing0, HostedLoadBalancing1 >::finishSimulation(), toolbox::loadbalancing::strategies::cascade::Cascade< HostedLoadBalancing0, HostedLoadBalancing1 >::finishStep(), toolbox::loadbalancing::strategies::cascade::Cascade< HostedLoadBalancing0, HostedLoadBalancing1 >::getGlobalNumberOfTrees(), toolbox::loadbalancing::strategies::cascade::Cascade< HostedLoadBalancing0, HostedLoadBalancing1 >::hasSplitRecently(), and toolbox::loadbalancing::strategies::cascade::Cascade< HostedLoadBalancing0, HostedLoadBalancing1 >::~Cascade().
|
private |
Definition at line 153 of file Cascade.h.
Referenced by toolbox::loadbalancing::strategies::cascade::Cascade< HostedLoadBalancing0, HostedLoadBalancing1 >::enable(), toolbox::loadbalancing::strategies::cascade::Cascade< HostedLoadBalancing0, HostedLoadBalancing1 >::finishSimulation(), toolbox::loadbalancing::strategies::cascade::Cascade< HostedLoadBalancing0, HostedLoadBalancing1 >::finishStep(), toolbox::loadbalancing::strategies::cascade::Cascade< HostedLoadBalancing0, HostedLoadBalancing1 >::getGlobalNumberOfTrees(), toolbox::loadbalancing::strategies::cascade::Cascade< HostedLoadBalancing0, HostedLoadBalancing1 >::hasSplitRecently(), toolbox::loadbalancing::strategies::cascade::Cascade< HostedLoadBalancing0, HostedLoadBalancing1 >::hasStagnated(), and toolbox::loadbalancing::strategies::cascade::Cascade< HostedLoadBalancing0, HostedLoadBalancing1 >::~Cascade().
|
staticprivate |