git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@557
48e7efb5-ca39-0410-a469-
dd3cf9ba447f
min = action->generic_action.remains / value;
xbt_swag_foreach(action, running_actions) {
min = action->generic_action.remains / value;
xbt_swag_foreach(action, running_actions) {
- value = action->generic_action.remains /
- lmm_variable_getvalue(action->variable);
+ value = action->latency + (action->generic_action.remains /
+ lmm_variable_getvalue(action->variable));
if (value < min)
min = value;
}
if (value < min)
min = value;
}
static void update_actions_state(xbt_heap_float_t now,
xbt_heap_float_t delta)
{
static void update_actions_state(xbt_heap_float_t now,
xbt_heap_float_t delta)
{
+ xbt_heap_float_t deltap = 0.0;
surf_action_network_t action = NULL;
surf_action_network_t next_action = NULL;
xbt_swag_t running_actions =
surf_action_network_t action = NULL;
surf_action_network_t next_action = NULL;
xbt_swag_t running_actions =
surf_network_resource->common_public->states.failed_action_set;
xbt_swag_foreach_safe(action, next_action, running_actions) {
surf_network_resource->common_public->states.failed_action_set;
xbt_swag_foreach_safe(action, next_action, running_actions) {
+ deltap = delta;
+ if(action->latency>0) {
+ if(action->latency>deltap) {
+ action->latency-=deltap;
+ deltap = 0.0;
+ } else {
+ deltap -= action->latency;
+ action->latency = 0.0;
+ }
+ }
action->generic_action.remains -=
action->generic_action.remains -=
- lmm_variable_getvalue(action->variable) * delta;
+ lmm_variable_getvalue(action->variable) * deltap;
+
/* if(action->generic_action.remains<.00001) action->generic_action.remains=0; */
if (action->generic_action.remains <= 0) {
/* if(action->generic_action.remains<.00001) action->generic_action.remains=0; */
if (action->generic_action.remains <= 0) {
lmm_expand(maxmin_system, route[i]->constraint, action->variable,
1.0);
lmm_expand(maxmin_system, route[i]->constraint, action->variable,
1.0);
+ action->latency = 0.0;
+ for(i=0; i<route_size; i++)
+ action->latency += route[i]->lat_current;
+
return (surf_action_t) action;
}
return (surf_action_t) action;
}
typedef struct surf_action_network {
s_surf_action_t generic_action;
typedef struct surf_action_network {
s_surf_action_t generic_action;
+ xbt_heap_float_t latency;
lmm_variable_t variable;
network_card_t src;
network_card_t dst;
lmm_variable_t variable;
network_card_t src;
network_card_t dst;