* @return The name of the surf resource
*/
XBT_PUBLIC(const char * ) surf_resource_name(surf_cpp_resource_t resource);
-static inline const char * surf_cpu_name(surf_cpu_t cpu) {
- return surf_resource_name((surf_cpp_resource_t)cpu);
-}
/** @brief Get the available speed of cpu associated to a host */
XBT_PUBLIC(double) surf_host_get_available_speed(sg_host_t host);
*/
XBT_PUBLIC(sg_size_t) surf_host_get_used_size(sg_host_t resource, const char* name);
-/** @brief Get the list of VMs hosted on the host */
-XBT_PUBLIC(xbt_dynar_t) surf_host_get_vms(sg_host_t resource);
-
-/** @brief Retrieve the params of that VM
- * @details You can use fields ramsize and overcommit on a PM, too.
- */
-XBT_PUBLIC(void) surf_host_get_params(sg_host_t resource, vm_params_t params);
-
-/** @brief Sets the params of that VM/PM
- * @details You can use fields ramsize and overcommit on a PM, too.
- */
-XBT_PUBLIC(void) surf_host_set_params(sg_host_t resource, vm_params_t params);
-
/**
* @brief Destroy a VM
*
*/
XBT_PUBLIC(void) surf_vm_set_affinity(sg_host_t resource, sg_host_t cpu, unsigned long mask);
-/**
- * @brief Get the list of storages attached to an host
- *
- * @param host The surf host
- * @return Dictionary of storage
- */
-XBT_PUBLIC(xbt_dynar_t) surf_host_get_attached_storage_list(sg_host_t host);
-
/**
* @brief Unlink a file descriptor
*
/** @brief return the properties set associated to that storage */
XBT_PUBLIC(xbt_dict_t) surf_storage_get_properties(surf_resource_t resource);
-/**
- * @brief Get the data associated to the action
- *
- * @param action The surf action
- * @return The data associated to the action
- */
-XBT_PUBLIC(void*) surf_action_get_data(surf_action_t action);
-
-/**
- * @brief Set the data associated to the action
- * @details [long description]
- *
- * @param action The surf action
- * @param data The new data associated to the action
- */
-XBT_PUBLIC(void) surf_action_set_data(surf_action_t action, void *data);
-
-/**
- * @brief Get the start time of an action
- *
- * @param action The surf action
- * @return The start time in seconds from the beginning of the simulation
- */
-XBT_PUBLIC(double) surf_action_get_start_time(surf_action_t action);
-
-/**
- * @brief Get the finish time of an action
- *
- * @param action The surf action
- * @return The finish time in seconds from the beginning of the simulation
- */
-XBT_PUBLIC(double) surf_action_get_finish_time(surf_action_t action);
-
-/**
- * @brief Get the remains amount of work to do of an action
- *
- * @param action The surf action
- * @return The remains amount of work to do
- */
-XBT_PUBLIC(double) surf_action_get_remains(surf_action_t action);
-
-/**
- * @brief Set the category of an action
- * @details [long description]
- *
- * @param action The surf action
- * @param category The new category of the action
- */
-XBT_PUBLIC(void) surf_action_set_category(surf_action_t action, const char *category);
-
-/**
- * @brief Get the state of an action
- *
- * @param action The surf action
- * @return The state of the action
- */
-XBT_PUBLIC(e_surf_action_state_t) surf_action_get_state(surf_action_t action);
-
-/**
- * @brief Get the cost of an action
- *
- * @param action The surf action
- * @return The cost of the action
- */
-XBT_PUBLIC(double) surf_action_get_cost(surf_action_t action);
-
-/**
- * @brief [brief desrciption]
- * @details [long description]
- *
- * @param action The surf cpu action
- * @param cpu [description]
- * @param mask [description]
- */
-XBT_PUBLIC(void) surf_cpu_action_set_affinity(surf_action_t action, sg_host_t cpu, unsigned long mask);
-
/**
* @brief [brief description]
* @details [long description]
double sg_tcp_gamma = 0.0;
int sg_network_crosstraffic = 0;
-/*************
- * CallBacks *
- *************/
-
-void net_define_callbacks(void)
-{
- /* Figuring out the network links */
- simgrid::surf::on_link.connect(netlink_parse_init);
-}
-
-/*********
- * Model *
- *********/
-
/************************************************************************/
/* New model based on optimizations discussed during Pedro Velho's thesis*/
/************************************************************************/
if (surf_network_model)
return;
+ simgrid::surf::on_link.connect(netlink_parse_init);
surf_network_model = new simgrid::surf::NetworkCm02Model();
- net_define_callbacks();
- simgrid::surf::Model *model = surf_network_model;
- xbt_dynar_push(all_existing_models, &model);
-
- xbt_cfg_setdefault_double(_sg_cfg_set, "network/latency_factor",
- 13.01);
- xbt_cfg_setdefault_double(_sg_cfg_set, "network/bandwidth_factor",
- 0.97);
- xbt_cfg_setdefault_double(_sg_cfg_set, "network/weight_S", 20537);
+ xbt_dynar_push(all_existing_models, &surf_network_model);
+
+ xbt_cfg_setdefault_double(_sg_cfg_set, "network/latency_factor", 13.01);
+ xbt_cfg_setdefault_double(_sg_cfg_set, "network/bandwidth_factor", 0.97);
+ xbt_cfg_setdefault_double(_sg_cfg_set, "network/weight_S", 20537);
}
/***************************************************************************/
if (surf_network_model)
return;
+ simgrid::surf::on_link.connect(netlink_parse_init);
surf_network_model = new simgrid::surf::NetworkCm02Model();
xbt_dynar_push(all_existing_models, &surf_network_model);
- net_define_callbacks();
- xbt_cfg_setdefault_double(_sg_cfg_set, "network/latency_factor", 1.0);
+ xbt_cfg_setdefault_double(_sg_cfg_set, "network/latency_factor", 1.0);
xbt_cfg_setdefault_double(_sg_cfg_set, "network/bandwidth_factor", 1.0);
- xbt_cfg_setdefault_double(_sg_cfg_set, "network/weight_S", 0.0);
+ xbt_cfg_setdefault_double(_sg_cfg_set, "network/weight_S", 0.0);
}
/***************************************************************************/
if (surf_network_model)
return;
+ simgrid::surf::on_link.connect(netlink_parse_init);
surf_network_model = new simgrid::surf::NetworkCm02Model();
xbt_dynar_push(all_existing_models, &surf_network_model);
- net_define_callbacks();
+
lmm_set_default_protocol_function(func_reno_f, func_reno_fp, func_reno_fpi);
surf_network_model->f_networkSolve = lagrange_solve;
- xbt_cfg_setdefault_double(_sg_cfg_set, "network/latency_factor", 10.4);
- xbt_cfg_setdefault_double(_sg_cfg_set, "network/bandwidth_factor", 0.92);
- xbt_cfg_setdefault_double(_sg_cfg_set, "network/weight_S", 8775);
+ xbt_cfg_setdefault_double(_sg_cfg_set, "network/latency_factor", 10.4);
+ xbt_cfg_setdefault_double(_sg_cfg_set, "network/bandwidth_factor", 0.92);
+ xbt_cfg_setdefault_double(_sg_cfg_set, "network/weight_S", 8775);
}
if (surf_network_model)
return;
+ simgrid::surf::on_link.connect(netlink_parse_init);
surf_network_model = new simgrid::surf::NetworkCm02Model();
xbt_dynar_push(all_existing_models, &surf_network_model);
- net_define_callbacks();
+
lmm_set_default_protocol_function(func_reno2_f, func_reno2_fp, func_reno2_fpi);
surf_network_model->f_networkSolve = lagrange_solve;
- xbt_cfg_setdefault_double(_sg_cfg_set, "network/latency_factor", 10.4);
- xbt_cfg_setdefault_double(_sg_cfg_set, "network/bandwidth_factor", 0.92);
- xbt_cfg_setdefault_double(_sg_cfg_set, "network/weight_S", 8775);
+ xbt_cfg_setdefault_double(_sg_cfg_set, "network/latency_factor", 10.4);
+ xbt_cfg_setdefault_double(_sg_cfg_set, "network/bandwidth_factor", 0.92);
+ xbt_cfg_setdefault_double(_sg_cfg_set, "network/weight_S", 8775);
}
void surf_network_model_init_Vegas(void)
if (surf_network_model)
return;
+ simgrid::surf::on_link.connect(netlink_parse_init);
surf_network_model = new simgrid::surf::NetworkCm02Model();
xbt_dynar_push(all_existing_models, &surf_network_model);
- net_define_callbacks();
+
lmm_set_default_protocol_function(func_vegas_f, func_vegas_fp, func_vegas_fpi);
surf_network_model->f_networkSolve = lagrange_solve;
- xbt_cfg_setdefault_double(_sg_cfg_set, "network/latency_factor", 10.4);
- xbt_cfg_setdefault_double(_sg_cfg_set, "network/bandwidth_factor", 0.92);
- xbt_cfg_setdefault_double(_sg_cfg_set, "network/weight_S", 8775);
+ xbt_cfg_setdefault_double(_sg_cfg_set, "network/latency_factor", 10.4);
+ xbt_cfg_setdefault_double(_sg_cfg_set, "network/bandwidth_factor", 0.92);
+ xbt_cfg_setdefault_double(_sg_cfg_set, "network/weight_S", 8775);
}
namespace simgrid {
}
Link* NetworkCm02Model::createLink(const char *name,
- double bw_initial,
- tmgr_trace_t bw_trace,
- double lat_initial,
- tmgr_trace_t lat_trace,
- int initiallyOn,
- tmgr_trace_t state_trace,
- e_surf_link_sharing_policy_t policy,
- xbt_dict_t properties)
+ double bw_initial, tmgr_trace_t bw_trace,
+ double lat_initial, tmgr_trace_t lat_trace,
+ int initiallyOn, tmgr_trace_t state_trace,
+ e_surf_link_sharing_policy_t policy, xbt_dict_t properties)
{
xbt_assert(NULL == Link::byName(name),
"Link '%s' declared several times in the platform",
XBT_DEBUG("Something happened to action %p", action);
if (TRACE_is_enabled()) {
int n = lmm_get_number_of_cnst_from_var(p_maxminSystem, action->getVariable());
- int i;
- for (i = 0; i < n; i++){
- lmm_constraint_t constraint = lmm_get_cnst_from_var(p_maxminSystem,
- action->getVariable(),
- i);
+
+ for (int i = 0; i < n; i++){
+ lmm_constraint_t constraint = lmm_get_cnst_from_var(p_maxminSystem, action->getVariable(), i);
NetworkCm02Link *link = static_cast<NetworkCm02Link*>(lmm_constraint_id(constraint));
TRACE_surf_link_set_utilization(link->getName(),
action->getCategory(),
}
if (TRACE_is_enabled()) {
int n = lmm_get_number_of_cnst_from_var(p_maxminSystem, action->getVariable());
- int i;
- for (i = 0; i < n; i++){
- lmm_constraint_t constraint = lmm_get_cnst_from_var(p_maxminSystem,
- action->getVariable(),
- i);
+ for (int i = 0; i < n; i++){
+ lmm_constraint_t constraint = lmm_get_cnst_from_var(p_maxminSystem, action->getVariable(), i);
+
NetworkCm02Link* link = static_cast<NetworkCm02Link*>(lmm_constraint_id(constraint));
TRACE_surf_link_set_utilization(link->getName(),
action->getCategory(),
now - action->getLastUpdate());
}
}
- if (!lmm_get_number_of_cnst_from_var
- (p_maxminSystem, action->getVariable())) {
+ if (!lmm_get_number_of_cnst_from_var (p_maxminSystem, action->getVariable())) {
/* There is actually no link used, hence an infinite bandwidth.
* This happens often when using models like vivaldi.
* In such case, just make sure that the action completes immediately.
action->gapRemove();
}
}
- return;
}
Action *NetworkCm02Model::communicate(NetCard *src, NetCard *dst,
}
}
xbt_dynar_foreach(route, i, _link) {
- link = static_cast<NetworkCm02Link*>(_link);
+ link = static_cast<NetworkCm02Link*>(_link);
double bb = bandwidthFactor(size) * link->getBandwidth();
bandwidth_bound =
(bandwidth_bound < 0.0) ? bb : std::min(bandwidth_bound, bb);
}
xbt_dynar_foreach(route, i, _link) {
- link = static_cast<NetworkCm02Link*>(_link);
+ link = static_cast<NetworkCm02Link*>(_link);
lmm_expand(p_maxminSystem, link->getConstraint(), action->getVariable(), 1.0);
}
* Resource *
************/
NetworkCm02Link::NetworkCm02Link(NetworkCm02Model *model, const char *name, xbt_dict_t props,
- lmm_system_t system,
- double constraint_value,
- int initiallyOn, tmgr_trace_t state_trace,
- double bw_peak, tmgr_trace_t bw_trace,
- double lat_initial, tmgr_trace_t lat_trace,
- e_surf_link_sharing_policy_t policy)
+ lmm_system_t system,
+ double constraint_value,
+ int initiallyOn, tmgr_trace_t state_trace,
+ double bw_peak, tmgr_trace_t bw_trace,
+ double lat_initial, tmgr_trace_t lat_trace,
+ e_surf_link_sharing_policy_t policy)
: Link(model, name, props, lmm_constraint_new(system, this, constraint_value), state_trace)
{
if (initiallyOn)
m_latency.event = future_evt_set->add_trace(lat_trace, 0.0, this);
if (policy == SURF_LINK_FATPIPE)
- lmm_constraint_shared(getConstraint());
+ lmm_constraint_shared(getConstraint());
}
xbt_die("Unknown event!\n");
}
- XBT_DEBUG
- ("There was a resource state event, need to update actions related to the constraint (%p)",
+ XBT_DEBUG("There was a resource state event, need to update actions related to the constraint (%p)",
getConstraint());
}
void NetworkCm02Link::updateBandwidth(double value) {
- double delta = sg_weight_S_parameter / value - sg_weight_S_parameter /
- (m_bandwidth.peak * m_bandwidth.scale);
- lmm_variable_t var = NULL;
- lmm_element_t elem = NULL;
- lmm_element_t nextelem = NULL;
- int numelem = 0;
-
- NetworkCm02Action *action = NULL;
m_bandwidth.peak = value;
- lmm_update_constraint_bound(getModel()->getMaxminSystem(),
- getConstraint(),
- sg_bandwidth_factor *
- (m_bandwidth.peak * m_bandwidth.scale));
+
+ 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);
+
if (sg_weight_S_parameter > 0) {
+ double delta = sg_weight_S_parameter / value - sg_weight_S_parameter / (m_bandwidth.peak * m_bandwidth.scale);
+
+ lmm_variable_t var;
+ lmm_element_t elem = NULL, nextelem = NULL;
+ int numelem = 0;
while ((var = lmm_get_var_from_cnst_safe(getModel()->getMaxminSystem(), getConstraint(), &elem, &nextelem, &numelem))) {
- action = (NetworkCm02Action*) lmm_variable_id(var);
+ NetworkCm02Action *action = (NetworkCm02Action*) lmm_variable_id(var);
action->m_weight += delta;
if (!action->isSuspended())
lmm_update_variable_weight(getModel()->getMaxminSystem(), action->getVariable(), action->m_weight);
lmm_element_t elem = NULL;
lmm_element_t nextelem = NULL;
int numelem = 0;
- NetworkCm02Action *action = NULL;
m_latency.peak = value;
+
while ((var = lmm_get_var_from_cnst_safe(getModel()->getMaxminSystem(), getConstraint(), &elem, &nextelem, &numelem))) {
- action = (NetworkCm02Action*) lmm_variable_id(var);
+ NetworkCm02Action *action = (NetworkCm02Action*) lmm_variable_id(var);
action->m_latCurrent += delta;
action->m_weight += delta;
if (action->m_rate < 0)
if (action->m_rate < sg_tcp_gamma / (2.0 * action->m_latCurrent)) {
XBT_INFO("Flow is limited BYBANDWIDTH");
} else {
- XBT_INFO("Flow is limited BYLATENCY, latency of flow is %f",
- action->m_latCurrent);
+ XBT_INFO("Flow is limited BYLATENCY, latency of flow is %f", action->m_latCurrent);
}
}
if (!action->isSuspended())