XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(res_network);
-double sg_latency_factor = 1.0; /* default value; can be set by model or from command line */
-double sg_bandwidth_factor = 1.0; /* default value; can be set by model or from command line */
-double sg_weight_S_parameter = 0.0; /* default value; can be set by model or from command line */
+double sg_latency_factor = 1.0; /* default value; can be set by model or from command line */
+double sg_bandwidth_factor = 1.0; /* default value; can be set by model or from command line */
+double sg_weight_S_parameter = 0.0; /* default value; can be set by model or from command line */
/************************************************************************/
/* New model based on optimizations discussed during Pedro Velho's thesis*/
action = new NetworkCm02Action(this, *src, *dst, size, failed);
else
action = new NetworkWifiAction(this, *src, *dst, size, failed, src_wifi_link, dst_wifi_link);
- action->sharing_penalty_ = latency;
- action->latency_ = latency;
- action->rate_ = rate;
+ action->sharing_penalty_ = latency;
+ action->latency_ = latency;
+ action->set_user_bound(rate);
if (is_update_lazy()) {
action->set_last_update();
action->lat_current_ = action->latency_;
action->latency_ *= get_latency_factor(size);
- action->rate_ = get_bandwidth_constraint(action->rate_, bandwidth_bound, size);
+ action->set_user_bound(get_bandwidth_constraint(action->get_user_bound(), bandwidth_bound, size));
size_t constraints_per_variable = route.size();
constraints_per_variable += back_route.size();
} else
action->set_variable(get_maxmin_system()->variable_new(action, 1.0, -1.0, constraints_per_variable));
- if (action->rate_ < 0) {
+ if (action->get_user_bound() < 0) {
get_maxmin_system()->update_variable_bound(
action->get_variable(), (action->lat_current_ > 0) ? cfg_tcp_gamma / (2.0 * action->lat_current_) : -1.0);
} else {
get_maxmin_system()->update_variable_bound(
action->get_variable(), (action->lat_current_ > 0)
- ? std::min(action->rate_, cfg_tcp_gamma / (2.0 * action->lat_current_))
- : action->rate_);
+ ? std::min(action->get_user_bound(), cfg_tcp_gamma / (2.0 * action->lat_current_))
+ : action->get_user_bound());
}
if (src_wifi_link != nullptr)
const kernel::lmm::Variable* var;
const kernel::lmm::Element* elem = nullptr;
const kernel::lmm::Element* nextelem = nullptr;
- int numelem = 0;
+ int numelem = 0;
while ((var = get_constraint()->get_variable_safe(&elem, &nextelem, &numelem))) {
auto* action = static_cast<NetworkCm02Action*>(var->get_id());
action->sharing_penalty_ += delta;
{
latency_check(value);
- double delta = value - latency_.peak;
+ double delta = value - latency_.peak;
const kernel::lmm::Variable* var;
const kernel::lmm::Element* elem = nullptr;
const kernel::lmm::Element* nextelem = nullptr;
- int numelem = 0;
+ int numelem = 0;
latency_.scale = 1.0;
- latency_.peak = value;
+ latency_.peak = value;
while ((var = get_constraint()->get_variable_safe(&elem, &nextelem, &numelem))) {
auto* action = static_cast<NetworkCm02Action*>(var->get_id());
action->lat_current_ += delta;
action->sharing_penalty_ += delta;
- if (action->rate_ < 0)
+ if (action->get_user_bound() < 0)
get_model()->get_maxmin_system()->update_variable_bound(action->get_variable(), NetworkModel::cfg_tcp_gamma /
(2.0 * action->lat_current_));
else {
get_model()->get_maxmin_system()->update_variable_bound(
- action->get_variable(), std::min(action->rate_, NetworkModel::cfg_tcp_gamma / (2.0 * action->lat_current_)));
+ action->get_variable(),
+ std::min(action->get_user_bound(), NetworkModel::cfg_tcp_gamma / (2.0 * action->lat_current_)));
- if (action->rate_ < NetworkModel::cfg_tcp_gamma / (2.0 * action->lat_current_)) {
+ if (action->get_user_bound() < NetworkModel::cfg_tcp_gamma / (2.0 * action->lat_current_)) {
XBT_INFO("Flow is limited BYBANDWIDTH");
} else {
XBT_INFO("Flow is limited BYLATENCY, latency of flow is %f", action->lat_current_);