X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/693ba4212f01cdcc236bc94bfb2a0fbcbb6a3379..6aee8176bcb1a32402d11424b1f2c027ceec1b6e:/src/surf/network.c diff --git a/src/surf/network.c b/src/surf/network.c index 8d6fc84a0a..f8690a850a 100644 --- a/src/surf/network.c +++ b/src/surf/network.c @@ -8,9 +8,7 @@ #include "network_private.h" #include "xbt/log.h" -#define SG_TCP_CTE_GAMMA 20000.0 - -XBT_LOG_NEW_DEFAULT_SUBCATEGORY(network, surf, +XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_network, surf, "Logging specific to the SURF network module"); surf_network_resource_t surf_network_resource = NULL; @@ -313,7 +311,8 @@ static void update_actions_state(double now, double delta) action->latency = 0.0; } if ((action->latency == 0.0) && !(action->suspended)) - lmm_update_variable_weight(maxmin_system, action->variable, 1.0); + lmm_update_variable_weight(maxmin_system, action->variable, + action->lat_current); } surf_double_update(&(action->generic_action.remains), lmm_variable_getvalue(action->variable) * deltap); @@ -322,7 +321,8 @@ static void update_actions_state(double now, double delta) /* if(action->generic_action.remains<.00001) action->generic_action.remains=0; */ - if (action->generic_action.remains <= 0) { + if ((action->generic_action.remains <= 0) && + (lmm_get_variable_weight(action->variable)>0)) { action->generic_action.finish = surf_get_clock(); action_change_state((surf_action_t) action, SURF_ACTION_DONE); } else if ((action->generic_action.max_duration != NO_MAX_DURATION) && @@ -378,6 +378,9 @@ static void update_resource_state(void *id, else lmm_update_variable_bound(maxmin_system, action->variable, min(action->rate,SG_TCP_CTE_GAMMA / (2.0 * action->lat_current))); + if(!(action->suspended)) + lmm_update_variable_weight(maxmin_system, action->variable, + action->lat_current); } } else if (event_type == nw_link->state_event) { if (value > 0) @@ -401,6 +404,7 @@ static surf_action_t communicate(void *src, void *dst, double size, double rate) network_link_CM02_t *route = ROUTE(card_src->id, card_dst->id); int i; + XBT_IN4("(%s,%s,%g,%g)",card_src->name,card_dst->name,size,rate); xbt_assert2(route_size,"You're trying to send data from %s to %s but there is no connexion between these two cards.", card_src->name, card_dst->name); action = xbt_new0(s_surf_action_network_CM02_t, 1); @@ -449,6 +453,7 @@ static surf_action_t communicate(void *src, void *dst, double size, double rate) for (i = 0; i < route_size; i++) lmm_expand(maxmin_system, route[i]->constraint, action->variable, 1.0); + XBT_OUT; return (surf_action_t) action; } @@ -463,7 +468,8 @@ static void action_suspend(surf_action_t action) static void action_resume(surf_action_t action) { lmm_update_variable_weight(maxmin_system, - ((surf_action_network_CM02_t) action)->variable, 1.0); + ((surf_action_network_CM02_t) action)->variable, + ((surf_action_network_CM02_t) action)->lat_current); ((surf_action_network_CM02_t) action)->suspended = 0; }