info = privateLinks_.at(src->id() * linkCountPerNode_);
route->link_list->push_back(info.linkUp);
if (lat)
- *lat += info.linkUp->getLatency();
+ *lat += info.linkUp->latency();
return;
}
if (info.linkUp) { // link up
route->link_list->push_back(info.linkUp);
if (lat)
- *lat += info.linkUp->getLatency();
+ *lat += info.linkUp->latency();
}
}
if (backbone_) {
route->link_list->push_back(backbone_);
if (lat)
- *lat += backbone_->getLatency();
+ *lat += backbone_->latency();
}
if (! dst->isRouter()) { // No specific link for router
if (info.linkDown) { // link down
route->link_list->push_back(info.linkDown);
if (lat)
- *lat += info.linkDown->getLatency();
+ *lat += info.linkDown->latency();
}
if (hasLimiter_){ // limiter for receiver
info = privateLinks_.at(dst->id() * linkCountPerNode_ + hasLoopback_);
route->link_list->push_back(info.linkUp);
if (latency)
- *latency += info.linkUp->getLatency();
+ *latency += info.linkUp->latency();
return;
}
//node->router local link
route->link_list->push_back(myRouter->myNodes_[myCoords[3]*numLinksperLink_]);
if(latency) {
- *latency += myRouter->myNodes_[myCoords[3]*numLinksperLink_]->getLatency();
+ *latency += myRouter->myNodes_[myCoords[3] * numLinksperLink_]->latency();
}
if (hasLimiter_) { // limiter for sender
//go to the nth router in our chassis
route->link_list->push_back(currentRouter->greenLinks_[targetCoords[0]]);
if(latency) {
- *latency += currentRouter->greenLinks_[targetCoords[0]]->getLatency();
+ *latency += currentRouter->greenLinks_[targetCoords[0]]->latency();
}
currentRouter=routers_[myCoords[0]*(numChassisPerGroup_*numBladesPerChassis_)+myCoords[1] * numBladesPerChassis_+targetCoords[0]];
}
//go to the first chassis of our group
route->link_list->push_back(currentRouter->blackLinks_[0]);
if(latency) {
- *latency += currentRouter->blackLinks_[0]->getLatency();
+ *latency += currentRouter->blackLinks_[0]->latency();
}
currentRouter=routers_[myCoords[0]*(numChassisPerGroup_*numBladesPerChassis_)+targetCoords[0]];
}
//go to destination group - the only optical hop
route->link_list->push_back(currentRouter->blueLinks_[0]);
if(latency) {
- *latency += currentRouter->blueLinks_[0]->getLatency();
+ *latency += currentRouter->blueLinks_[0]->latency();
}
currentRouter=routers_[targetCoords[0]*(numChassisPerGroup_*numBladesPerChassis_)+myCoords[0]];
}
if(targetRouter->blade_ != currentRouter->blade_){
route->link_list->push_back(currentRouter->greenLinks_[targetCoords[2]]);
if(latency) {
- *latency += currentRouter->greenLinks_[targetCoords[2]]->getLatency();
+ *latency += currentRouter->greenLinks_[targetCoords[2]]->latency();
}
currentRouter=routers_[targetCoords[0]*(numChassisPerGroup_*numBladesPerChassis_)+targetCoords[2]];
}
if(targetRouter->chassis_ != currentRouter->chassis_){
route->link_list->push_back(currentRouter->blackLinks_[targetCoords[1]]);
if(latency) {
- *latency += currentRouter->blackLinks_[targetCoords[1]]->getLatency();
+ *latency += currentRouter->blackLinks_[targetCoords[1]]->latency();
}
currentRouter=routers_[targetCoords[0]*(numChassisPerGroup_*numBladesPerChassis_)+targetCoords[1]*numBladesPerChassis_+targetCoords[2]];
}
//router->node local link
route->link_list->push_back(targetRouter->myNodes_[targetCoords[3]*numLinksperLink_+numLinksperLink_-1]);
if(latency) {
- *latency += targetRouter->myNodes_[targetCoords[3]*numLinksperLink_+numLinksperLink_-1]->getLatency();
+ *latency += targetRouter->myNodes_[targetCoords[3] * numLinksperLink_ + numLinksperLink_ - 1]->latency();
}
xbt_free(myCoords);
if(source->id == destination->id && this->hasLoopback_) {
into->link_list->push_back(source->loopback);
if(latency) {
- *latency += source->loopback->getLatency();
+ *latency += source->loopback->latency();
}
return;
}
into->link_list->push_back(currentNode->parents[d]->upLink);
if(latency) {
- *latency += currentNode->parents[d]->upLink->getLatency();
+ *latency += currentNode->parents[d]->upLink->latency();
}
if (this->hasLimiter_) {
destination->label[currentNode->level - 1]) {
into->link_list->push_back(currentNode->children[i]->downLink);
if(latency) {
- *latency += currentNode->children[i]->downLink->getLatency();
+ *latency += currentNode->children[i]->downLink->latency();
}
currentNode = currentNode->children[i]->downNode;
if (this->hasLimiter_) {
route->link_list->push_back(info.linkUp);
if (lat)
- *lat += info.linkUp->getLatency();
+ *lat += info.linkUp->latency();
return;
}
if (use_lnk_up == false) {
route->link_list->push_back(info.linkDown);
if (lat)
- *lat += info.linkDown->getLatency();
+ *lat += info.linkDown->latency();
} else {
route->link_list->push_back(info.linkUp);
if (lat)
- *lat += info.linkUp->getLatency();
+ *lat += info.linkUp->latency();
}
current_node = next_node;
next_node = 0;
for (auto link: *e_route->link_list) {
route->link_list->insert(route->link_list->begin(), link);
if (lat)
- *lat += static_cast<Link*>(link)->getLatency();
+ *lat += static_cast<Link*>(link)->latency();
}
}
for (auto link : *e_route_as_to_as) {
route->link_list->insert(pos, link);
if (lat)
- *lat += link->getLatency();
+ *lat += link->latency();
pos++;
}
}
for (auto link: *e_route->link_list) {
route->link_list->insert(route->link_list->begin(), link);
if (lat)
- *lat += static_cast<Link*>(link)->getLatency();
+ *lat += static_cast<Link*>(link)->latency();
}
size++;
}
for (auto link: *e_route->link_list) {
route->link_list->push_back(link);
if (lat)
- *lat += link->getLatency();
+ *lat += link->latency();
}
prev_dst_gw = e_route->gw_dst;
for (auto link : *e_route->link_list) {
res->link_list->push_back(link);
if (lat)
- *lat += static_cast<Link*>(link)->getLatency();
+ *lat += static_cast<Link*>(link)->latency();
}
}
}
for (surf::Link *link : *bypassed_route) {
links->push_back(link);
if (latency)
- *latency += link->getLatency();
+ *latency += link->latency();
}
return;
}
if(info.linkUp) {
route->link_list->push_back(info.linkUp);
if (lat)
- *lat += info.linkUp->getLatency();
+ *lat += info.linkUp->latency();
}
}
if (privateLinks_.size() >dst->id()) {
if(info.linkDown) {
route->link_list->push_back(info.linkDown);
if (lat)
- *lat += info.linkDown->getLatency();
+ *lat += info.linkDown->latency();
}
}
bandwidth_bound = -1.0;
if (sg_weight_S_parameter > 0)
for (auto link : *route)
- action->weight_ += sg_weight_S_parameter / link->getBandwidth();
+ action->weight_ += sg_weight_S_parameter / link->bandwidth();
for (auto link : *route) {
- double bb = bandwidthFactor(size) * link->getBandwidth();
+ double bb = bandwidthFactor(size) * link->bandwidth();
bandwidth_bound = (bandwidth_bound < 0.0) ? bb : std::min(bandwidth_bound, bb);
}
lmm_system_t system)
: Link(model, name, props, lmm_constraint_new(system, this, sg_bandwidth_factor * bandwidth))
{
- m_bandwidth.scale = 1.0;
- m_bandwidth.peak = bandwidth;
+ bandwidth_.scale = 1.0;
+ bandwidth_.peak = bandwidth;
- m_latency.scale = 1.0;
- m_latency.peak = latency;
+ latency_.scale = 1.0;
+ latency_.peak = latency;
if (policy == SURF_LINK_FATPIPE)
lmm_constraint_shared(getConstraint());
{
/* Find out which of my iterators was triggered, and react accordingly */
- if (triggered == m_bandwidth.event) {
- updateBandwidth(value);
- tmgr_trace_event_unref(&m_bandwidth.event);
+ if (triggered == bandwidth_.event) {
+ setBandwidth(value);
+ tmgr_trace_event_unref(&bandwidth_.event);
- } else if (triggered == m_latency.event) {
- updateLatency(value);
- tmgr_trace_event_unref(&m_latency.event);
+ } else if (triggered == latency_.event) {
+ setLatency(value);
+ tmgr_trace_event_unref(&latency_.event);
- } else if (triggered == m_stateEvent) {
+ } else if (triggered == stateEvent_) {
if (value > 0)
turnOn();
else {
}
}
}
- tmgr_trace_event_unref(&m_stateEvent);
+ tmgr_trace_event_unref(&stateEvent_);
} else {
xbt_die("Unknown event!\n");
}
getConstraint());
}
-void NetworkCm02Link::updateBandwidth(double value) {
+void NetworkCm02Link::setBandwidth(double value)
+{
- m_bandwidth.peak = value;
+ bandwidth_.peak = value;
lmm_update_constraint_bound(getModel()->getMaxminSystem(), getConstraint(),
- sg_bandwidth_factor * (m_bandwidth.peak * m_bandwidth.scale));
- TRACE_surf_link_set_bandwidth(surf_get_clock(), getName(), sg_bandwidth_factor * m_bandwidth.peak * m_bandwidth.scale);
+ sg_bandwidth_factor * (bandwidth_.peak * bandwidth_.scale));
+ TRACE_surf_link_set_bandwidth(surf_get_clock(), getName(), sg_bandwidth_factor * bandwidth_.peak * bandwidth_.scale);
if (sg_weight_S_parameter > 0) {
- double delta = sg_weight_S_parameter / value - sg_weight_S_parameter / (m_bandwidth.peak * m_bandwidth.scale);
+ double delta = sg_weight_S_parameter / value - sg_weight_S_parameter / (bandwidth_.peak * bandwidth_.scale);
lmm_variable_t var;
lmm_element_t elem = nullptr, nextelem = nullptr;
}
}
-void NetworkCm02Link::updateLatency(double value){
- double delta = value - m_latency.peak;
+void NetworkCm02Link::setLatency(double value)
+{
+ double delta = value - latency_.peak;
lmm_variable_t var = nullptr;
lmm_element_t elem = nullptr;
lmm_element_t nextelem = nullptr;
int numelem = 0;
- m_latency.peak = value;
+ latency_.peak = value;
while ((var = lmm_get_var_from_cnst_safe(getModel()->getMaxminSystem(), getConstraint(), &elem, &nextelem, &numelem))) {
NetworkCm02Action *action = (NetworkCm02Action*) lmm_variable_id(var);
lmm_system_t system);
~NetworkCm02Link() override;
void apply_event(tmgr_trace_iterator_t event, double value) override;
- void updateBandwidth(double value) override;
- void updateLatency(double value) override;
+ void setBandwidth(double value) override;
+ void setLatency(double value) override;
virtual void gapAppend(double size, const Link* link, NetworkAction* action);
};
return link->sharingPolicy();
}
double sg_link_bandwidth(Link *link){
- return link->getBandwidth();
+ return link->bandwidth();
}
double sg_link_latency(Link *link){
- return link->getLatency();
+ return link->latency();
}
void* sg_link_data(Link *link) {
return link->getData();
{
links->insert({name, this});
- m_latency.scale = 1;
- m_bandwidth.scale = 1;
+ latency_.scale = 1;
+ bandwidth_.scale = 1;
XBT_DEBUG("Create link '%s'",name);
}
if (strcmp(name,"__loopback__"))
xbt_assert(!Link::byName(name), "Link '%s' declared several times in the platform.", name);
- m_latency.scale = 1;
- m_bandwidth.scale = 1;
+ latency_.scale = 1;
+ bandwidth_.scale = 1;
links->insert({name, this});
XBT_DEBUG("Create link '%s'",name);
return lmm_constraint_used(getModel()->getMaxminSystem(), getConstraint());
}
- double Link::getLatency()
+ double Link::latency()
{
- return m_latency.peak * m_latency.scale;
+ return latency_.peak * latency_.scale;
}
- double Link::getBandwidth()
+ double Link::bandwidth()
{
- return m_bandwidth.peak * m_bandwidth.scale;
+ return bandwidth_.peak * bandwidth_.scale;
}
int Link::sharingPolicy()
}
}
void Link::setStateTrace(tmgr_trace_t trace) {
- xbt_assert(m_stateEvent==nullptr,"Cannot set a second state trace to Link %s", getName());
- m_stateEvent = future_evt_set->add_trace(trace, 0.0, this);
+ xbt_assert(stateEvent_ == nullptr, "Cannot set a second state trace to Link %s", getName());
+ stateEvent_ = future_evt_set->add_trace(trace, 0.0, this);
}
void Link::setBandwidthTrace(tmgr_trace_t trace)
{
- xbt_assert(m_bandwidth.event==nullptr,"Cannot set a second bandwidth trace to Link %s", getName());
- m_bandwidth.event = future_evt_set->add_trace(trace, 0.0, this);
+ xbt_assert(bandwidth_.event == nullptr, "Cannot set a second bandwidth trace to Link %s", getName());
+ bandwidth_.event = future_evt_set->add_trace(trace, 0.0, this);
}
void Link::setLatencyTrace(tmgr_trace_t trace)
{
- xbt_assert(m_latency.event==nullptr,"Cannot set a second latency trace to Link %s", getName());
- m_latency.event = future_evt_set->add_trace(trace, 0.0, this);
+ xbt_assert(latency_.event == nullptr, "Cannot set a second latency trace to Link %s", getName());
+ latency_.event = future_evt_set->add_trace(trace, 0.0, this);
}
static simgrid::xbt::signal<void(surf::NetworkAction*, s4u::Host* src, s4u::Host* dst)> onCommunicate;
/** @brief Get the bandwidth in bytes per second of current Link */
- virtual double getBandwidth();
+ virtual double bandwidth();
/** @brief Update the bandwidth in bytes per second of current Link */
- virtual void updateBandwidth(double value)=0;
+ virtual void setBandwidth(double value) = 0;
/** @brief Get the latency in seconds of current Link */
- virtual double getLatency();
+ virtual double latency();
/** @brief Update the latency in seconds of current Link */
- virtual void updateLatency(double value)=0;
+ virtual void setLatency(double value) = 0;
/** @brief The sharing policy is a @{link e_surf_link_sharing_policy_t::EType} (0: FATPIPE, 1: SHARED, 2: FULLDUPLEX) */
virtual int sharingPolicy();
virtual void setBandwidthTrace(tmgr_trace_t trace); /*< setup the trace file with bandwidth events (peak speed changes due to external load). Trace must contain percentages (value between 0 and 1). */
virtual void setLatencyTrace(tmgr_trace_t trace); /*< setup the trace file with latency events (peak latency changes due to external load). Trace must contain absolute values */
- tmgr_trace_iterator_t m_stateEvent = nullptr;
- s_surf_metric_t m_latency = {1.0,0,nullptr};
- s_surf_metric_t m_bandwidth = {1.0,0,nullptr};
+ tmgr_trace_iterator_t stateEvent_ = nullptr;
+ s_surf_metric_t latency_ = {1.0, 0, nullptr};
+ s_surf_metric_t bandwidth_ = {1.0, 0, nullptr};
/* User data */
public:
if (strcmp(src,dst) && (already_seen.find(link) == already_seen.end())) {
already_seen.insert(link);
XBT_DEBUG("Route from '%s' to '%s' with link '%s'", src, dst, link->getName());
- char * link_bdw = bprintf("%fBps", link->getBandwidth());
- char * link_lat = bprintf("%fs", link->getLatency());
+ char* link_bdw = bprintf("%fBps", link->bandwidth());
+ char* link_lat = bprintf("%fs", link->latency());
// XBT_DEBUG("src (%s), dst (%s), src_id = %d, dst_id = %d",src,dst, src_id, dst_id);
XBT_DEBUG("\tLink (%s) bdw:%s lat:%s", link->getName(), link_bdw, link_lat);
LinkNS3::LinkNS3(NetworkNS3Model *model, const char *name, xbt_dict_t props, double bandwidth, double latency)
: Link(model, name, props)
{
- m_bandwidth.peak = bandwidth;
- m_latency.peak = latency;
+ bandwidth_.peak = bandwidth;
+ latency_.peak = latency;
Link::onCreation(this);
}
~LinkNS3();
void apply_event(tmgr_trace_iterator_t event, double value) override;
- void updateBandwidth(double value) override {THROW_UNIMPLEMENTED;}
- void updateLatency(double value) override {THROW_UNIMPLEMENTED;}
+ void setBandwidth(double value) override { THROW_UNIMPLEMENTED; }
+ void setLatency(double value) override { THROW_UNIMPLEMENTED; }
void setBandwidthTrace(tmgr_trace_t trace) override;
void setLatencyTrace(tmgr_trace_t trace) override;
};
e_surf_link_sharing_policy_t policy)
: Link(model, name, props, lmm_constraint_new(model->getMaxminSystem(), this, bandwidth))
{
- m_bandwidth.peak = bandwidth;
- m_latency.peak = latency;
+ bandwidth_.peak = bandwidth;
+ latency_.peak = latency;
if (policy == SURF_LINK_FATPIPE)
lmm_constraint_shared(getConstraint());
void LinkL07::apply_event(tmgr_trace_iterator_t triggered, double value) {
XBT_DEBUG("Updating link %s (%p) with value=%f", getName(), this, value);
- if (triggered == m_bandwidth.event) {
- updateBandwidth(value);
- tmgr_trace_event_unref(&m_bandwidth.event);
+ if (triggered == bandwidth_.event) {
+ setBandwidth(value);
+ tmgr_trace_event_unref(&bandwidth_.event);
- } else if (triggered == m_latency.event) {
- updateLatency(value);
- tmgr_trace_event_unref(&m_latency.event);
+ } else if (triggered == latency_.event) {
+ setLatency(value);
+ tmgr_trace_event_unref(&latency_.event);
- } else if (triggered == m_stateEvent) {
+ } else if (triggered == stateEvent_) {
if (value > 0)
turnOn();
else
turnOff();
- tmgr_trace_event_unref(&m_stateEvent);
+ tmgr_trace_event_unref(&stateEvent_);
} else {
xbt_die("Unknown event ! \n");
}
}
-void LinkL07::updateBandwidth(double value)
+void LinkL07::setBandwidth(double value)
{
- m_bandwidth.peak = value;
- lmm_update_constraint_bound(getModel()->getMaxminSystem(), getConstraint(), m_bandwidth.peak * m_bandwidth.scale);
+ bandwidth_.peak = value;
+ lmm_update_constraint_bound(getModel()->getMaxminSystem(), getConstraint(), bandwidth_.peak * bandwidth_.scale);
}
-void LinkL07::updateLatency(double value)
+void LinkL07::setLatency(double value)
{
lmm_variable_t var = nullptr;
L07Action *action;
lmm_element_t elem = nullptr;
- m_latency.peak = value;
+ latency_.peak = value;
while ((var = lmm_get_var_from_cnst(getModel()->getMaxminSystem(), getConstraint(), &elem))) {
action = static_cast<L07Action*>(lmm_variable_id(var));
action->updateBound();
~LinkL07(){ };
bool isUsed() override;
void apply_event(tmgr_trace_iterator_t event, double value) override;
- void updateBandwidth(double value) override;
- void updateLatency(double value) override;
+ void setBandwidth(double value) override;
+ void setLatency(double value) override;
};
/**********