git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@560
48e7efb5-ca39-0410-a469-
dd3cf9ba447f
#include "network_private.h"
#include "xbt/dict.h"
#include "network_private.h"
#include "xbt/dict.h"
+#define SG_TCP_CTE_GAMMA 20000.0
+
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(network, surf,
"Logging specific to the SURF network module");
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(network, surf,
"Logging specific to the SURF network module");
lmm_update_constraint_bound(maxmin_system, nw_link->constraint,
nw_link->bw_current);
} else if (event_type == nw_link->lat_event) {
lmm_update_constraint_bound(maxmin_system, nw_link->constraint,
nw_link->bw_current);
} else if (event_type == nw_link->lat_event) {
+ xbt_maxmin_float_t delta = value - nw_link->lat_current;
+ lmm_variable_t var = NULL;
+ surf_action_network_t action = NULL;
+
nw_link->lat_current = value;
nw_link->lat_current = value;
+ while(lmm_get_var_from_cnst(maxmin_system, nw_link->constraint, &var)) {
+ action = lmm_variable_id(var);
+ action->lat_current+=delta;
+ lmm_update_variable_bound(maxmin_system, var,
+ 1/(action->lat_current));
+ }
} else if (event_type == nw_link->state_event) {
if (value > 0)
nw_link->state_current = SURF_NETWORK_LINK_ON;
} else if (event_type == nw_link->state_event) {
if (value > 0)
nw_link->state_current = SURF_NETWORK_LINK_ON;
action->latency = 0.0;
for(i=0; i<route_size; i++)
action->latency += route[i]->lat_current;
action->latency = 0.0;
for(i=0; i<route_size; i++)
action->latency += route[i]->lat_current;
+ action->lat_current = action->latency;
+ lmm_update_variable_bound(maxmin_system, action->variable,
+ SG_TCP_CTE_GAMMA/action->lat_current);
return (surf_action_t) action;
}
return (surf_action_t) action;
}
typedef struct surf_action_network {
s_surf_action_t generic_action;
xbt_heap_float_t latency;
typedef struct surf_action_network {
s_surf_action_t generic_action;
xbt_heap_float_t latency;
+ xbt_heap_float_t lat_current;
lmm_variable_t variable;
network_card_t src;
network_card_t dst;
lmm_variable_t variable;
network_card_t src;
network_card_t dst;
<NETWORK> /* The network section */
<NETWORK> /* The network section */
- LinkA 10.0 "" 0.01 "" ON ""
+ LinkA 10.0 "" 0.2 "" ON ""
</NETWORK>
<ROUTE> /* The route section */
</NETWORK>
<ROUTE> /* The route section */
printf("%s : %p\n", surf_network_resource->common_public->get_resource_name(cardB), cardB);
/* Let's do something on it */
printf("%s : %p\n", surf_network_resource->common_public->get_resource_name(cardB), cardB);
/* Let's do something on it */
- commAB = surf_network_resource->extension_public->communicate(cardA, cardB, 132.0);
+ commAB = surf_network_resource->extension_public->communicate(cardA, cardB, 150.0);
surf_solve(); /* Takes traces into account. Returns 0.0 */
do {
surf_solve(); /* Takes traces into account. Returns 0.0 */
do {