-/* $Id$ */
-
-/* Copyright (c) 2004 Arnaud Legrand. All rights reserved. */
+/* Copyright (c) 2004, 2005, 2006, 2007, 2008, 2009, 2010. The SimGrid Team.
+ * All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
static lmm_system_t network_maxmin_system = NULL;
static void (*network_solve) (lmm_system_t) = NULL;
-double latency_factor = 1.0; /* default value */
-double bandwidth_factor = 1.0; /* default value */
-double weight_S_parameter = 0.0; /* default value */
+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_tcp_gamma = 0.0;
surf_resource_lmm_new(sizeof(s_link_CM02_t),
surf_network_model, name, properties,
network_maxmin_system,
- bandwidth_factor * bw_initial,
+ sg_bandwidth_factor * bw_initial,
history,
state_initial, state_trace,
bw_initial, bw_trace);
xbt_dict_set(surf_network_model->resource_set, name, nw_link,
surf_resource_free);
+#ifdef HAVE_TRACING
+ TRACE_surf_link_declaration (name, bw_initial, lat_initial);
+#endif
return nw_link;
}
static void net_action_cancel(surf_action_t action)
{
+ surf_network_model->action_state_set((surf_action_t) action,
+ SURF_ACTION_FAILED);
return;
}
*/
xbt_swag_foreach_safe(action, next_action, running_actions) {
+
+#ifdef HAVE_TRACING
+ xbt_dynar_t route = used_routing->get_route(action->src, action->dst);
+ link_CM02_t link;
+ unsigned int i;
+ xbt_dynar_foreach(route, i, link) {
+ TRACE_surf_link_set_utilization (link->lmm_resource.generic_resource.name,
+ action->generic_action.data, lmm_variable_getvalue(action->variable), now-delta, delta);
+ }
+#endif
+
deltap = delta;
if (action->latency > 0) {
if (action->latency > deltap) {
if (event_type == nw_link->lmm_resource.power.event) {
double delta =
- weight_S_parameter / value - weight_S_parameter /
+ sg_weight_S_parameter / value - sg_weight_S_parameter /
(nw_link->lmm_resource.power.peak * nw_link->lmm_resource.power.scale);
lmm_variable_t var = NULL;
lmm_element_t elem = NULL;
nw_link->lmm_resource.power.peak = value;
lmm_update_constraint_bound(network_maxmin_system,
nw_link->lmm_resource.constraint,
- bandwidth_factor *
+ sg_bandwidth_factor *
(nw_link->lmm_resource.power.peak *
nw_link->lmm_resource.power.scale));
- if (weight_S_parameter > 0) {
+#ifdef HAVE_TRACING
+ TRACE_surf_link_set_bandwidth (date, nw_link->lmm_resource.generic_resource.name, sg_bandwidth_factor * (nw_link->lmm_resource.power.peak * nw_link->lmm_resource.power.scale));
+#endif
+ if (sg_weight_S_parameter > 0) {
while ((var = lmm_get_var_from_cnst
(network_maxmin_system, nw_link->lmm_resource.constraint,
&elem))) {
action->latency += link->lat_current;
action->weight +=
link->lat_current +
- weight_S_parameter /
+ sg_weight_S_parameter /
(link->lmm_resource.power.peak * link->lmm_resource.power.scale);
}
/* LARGE PLATFORMS HACK:
Add src->link and dst->link latencies */
action->lat_current = action->latency;
- action->latency *= latency_factor;
+ action->latency *= sg_latency_factor;
/* LARGE PLATFORMS HACK:
lmm_variable_new(..., total_route_size) */
/* LARGE PLATFORMS HACK:
expand also with src->link and dst->link */
+ /* saving the src and dst of this communication */
+ action->src = src;
+ action->dst = dst;
+
XBT_OUT;
return (surf_action_t) action;
xbt_dynar_push(model_list, &surf_network_model);
network_solve = lmm_solve;
- latency_factor = 10.4;
- bandwidth_factor = 0.92;
- weight_S_parameter = 8775;
+ xbt_cfg_setdefault_double(_surf_cfg_set,"network/latency_factor",10.4);
+ xbt_cfg_setdefault_double(_surf_cfg_set,"network/bandwidth_factor", 0.92);
+ xbt_cfg_setdefault_double(_surf_cfg_set,"network/weight_S", 8775);
update_model_description(surf_network_model_description,
"LV08", surf_network_model);
lmm_set_default_protocol_function(func_reno_f, func_reno_fp, func_reno_fpi);
network_solve = lagrange_solve;
- latency_factor = 10.4;
- bandwidth_factor = 0.92;
- weight_S_parameter = 8775;
+ xbt_cfg_setdefault_double(_surf_cfg_set,"network/latency_factor", 10.4);
+ xbt_cfg_setdefault_double(_surf_cfg_set,"network/bandwidth_factor", 0.92);
+ xbt_cfg_setdefault_double(_surf_cfg_set,"network/weight_S", 8775);
update_model_description(surf_network_model_description,
"Reno", surf_network_model);
func_reno2_fpi);
network_solve = lagrange_solve;
- latency_factor = 10.4;
- bandwidth_factor = 0.92;
- weight_S_parameter = 8775;
+ xbt_cfg_setdefault_double(_surf_cfg_set,"network/latency_factor", 10.4);
+ xbt_cfg_setdefault_double(_surf_cfg_set,"network/bandwidth_factor", 0.92);
+ xbt_cfg_setdefault_double(_surf_cfg_set,"network/weight_S_parameter", 8775);
update_model_description(surf_network_model_description,
"Reno2", surf_network_model);
func_vegas_fpi);
network_solve = lagrange_solve;
- latency_factor = 10.4;
- bandwidth_factor = 0.92;
- weight_S_parameter = 8775;
+ xbt_cfg_setdefault_double(_surf_cfg_set,"network/latency_factor", 10.4);
+ xbt_cfg_setdefault_double(_surf_cfg_set,"network/bandwidth_factor", 0.92);
+ xbt_cfg_setdefault_double(_surf_cfg_set,"network/weight_S", 8775);
update_model_description(surf_network_model_description,
"Vegas", surf_network_model);