X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/5b78fc9f704153c9832230883dfd847f2bcf791d..806d1314d9398af51ffd016c95b39d173960c659:/src/surf/network_im.c diff --git a/src/surf/network_im.c b/src/surf/network_im.c index 643a76e0d6..90bc93de45 100644 --- a/src/surf/network_im.c +++ b/src/surf/network_im.c @@ -150,7 +150,7 @@ static double (*im_bandwidth_constraint_callback) (double, double, double) = &im_constant_bandwidth_constraint; -static link_CM02_im_t im_net_link_new(char *name, +static void* im_net_create_resource(char *name, double bw_initial, tmgr_trace_t bw_trace, double lat_initial, @@ -170,8 +170,7 @@ static link_CM02_im_t im_net_link_new(char *name, state_initial, state_trace, bw_initial, bw_trace); - xbt_assert1(!xbt_dict_get_or_null - (surf_network_model->resource_set, name), + xbt_assert(!xbt_lib_get_or_null(link_lib, name, SURF_LINK_LEVEL), "Link '%s' declared several times in the platform file.", name); @@ -183,8 +182,7 @@ static link_CM02_im_t im_net_link_new(char *name, if (policy == SURF_LINK_FATPIPE) lmm_constraint_shared(nw_link->lmm_resource.constraint); - xbt_dict_set(surf_network_model->resource_set, name, nw_link, - surf_resource_free); + xbt_lib_set(link_lib, name, SURF_LINK_LEVEL, nw_link); return nw_link; @@ -192,73 +190,21 @@ static link_CM02_im_t im_net_link_new(char *name, static void im_net_parse_link_init(void) { - char *name_link; - double bw_initial; - tmgr_trace_t bw_trace; - double lat_initial; - tmgr_trace_t lat_trace; - e_surf_resource_state_t state_initial_link = SURF_RESOURCE_ON; - e_surf_link_sharing_policy_t policy_initial_link = SURF_LINK_SHARED; - tmgr_trace_t state_trace; - XBT_DEBUG("link_CM02_im"); - name_link = xbt_strdup(A_surfxml_link_id); - surf_parse_get_double(&bw_initial, A_surfxml_link_bandwidth); - bw_trace = tmgr_trace_new(A_surfxml_link_bandwidth_file); - surf_parse_get_double(&lat_initial, A_surfxml_link_latency); - lat_trace = tmgr_trace_new(A_surfxml_link_latency_file); - - xbt_assert0((A_surfxml_link_state == A_surfxml_link_state_ON) - || (A_surfxml_link_state == - A_surfxml_link_state_OFF), "Invalid state"); - if (A_surfxml_link_state == A_surfxml_link_state_ON) - state_initial_link = SURF_RESOURCE_ON; - else if (A_surfxml_link_state == A_surfxml_link_state_OFF) - state_initial_link = SURF_RESOURCE_OFF; - - if (A_surfxml_link_sharing_policy == A_surfxml_link_sharing_policy_SHARED) - policy_initial_link = SURF_LINK_SHARED; - else - { - if (A_surfxml_link_sharing_policy == A_surfxml_link_sharing_policy_FATPIPE) - policy_initial_link = SURF_LINK_FATPIPE; - else if (A_surfxml_link_sharing_policy == A_surfxml_link_sharing_policy_FULLDUPLEX) - policy_initial_link = SURF_LINK_FULLDUPLEX; - } - - state_trace = tmgr_trace_new(A_surfxml_link_state_file); - - if(policy_initial_link == SURF_LINK_FULLDUPLEX) + if(struct_lnk->V_policy_initial_link == SURF_LINK_FULLDUPLEX) { - im_net_link_new(bprintf("%s_UP",name_link), bw_initial, bw_trace, - lat_initial, lat_trace, state_initial_link, state_trace, - policy_initial_link, xbt_dict_new()); - im_net_link_new(bprintf("%s_DOWN",name_link), bw_initial, bw_trace, - lat_initial, lat_trace, state_initial_link, state_trace, - policy_initial_link, xbt_dict_new()); + im_net_create_resource(bprintf("%s_UP",struct_lnk->V_link_id), struct_lnk->V_link_bandwidth, struct_lnk->V_link_bandwidth_file, + struct_lnk->V_link_latency, struct_lnk->V_link_latency_file, struct_lnk->V_link_state, struct_lnk->V_link_state_file, + struct_lnk->V_policy_initial_link, xbt_dict_new()); + im_net_create_resource(bprintf("%s_DOWN",struct_lnk->V_link_id), struct_lnk->V_link_bandwidth, struct_lnk->V_link_bandwidth_file, + struct_lnk->V_link_latency, struct_lnk->V_link_latency_file, struct_lnk->V_link_state, struct_lnk->V_link_state_file, + struct_lnk->V_policy_initial_link, xbt_dict_new()); } else { - im_net_link_new(name_link, bw_initial, bw_trace, - lat_initial, lat_trace, state_initial_link, state_trace, - policy_initial_link, xbt_dict_new()); + im_net_create_resource(xbt_strdup(struct_lnk->V_link_id), struct_lnk->V_link_bandwidth, struct_lnk->V_link_bandwidth_file, + struct_lnk->V_link_latency, struct_lnk->V_link_latency_file, struct_lnk->V_link_state, struct_lnk->V_link_state_file, + struct_lnk->V_policy_initial_link, xbt_dict_new()); } - -} - -static void im_net_create_resource(char *name, - double bw_initial, - tmgr_trace_t bw_trace, - double lat_initial, - tmgr_trace_t lat_trace, - e_surf_resource_state_t - state_initial, - tmgr_trace_t state_trace, - e_surf_link_sharing_policy_t policy, - xbt_dict_t properties) -{ - im_net_link_new(name, bw_initial, bw_trace, - lat_initial, lat_trace, state_initial, state_trace, - policy, xbt_dict_new()); } static void im_net_add_traces(void) @@ -275,11 +221,11 @@ static void im_net_add_traces(void) xbt_dict_foreach(trace_connect_list_link_avail, cursor, trace_name, elm) { tmgr_trace_t trace = xbt_dict_get_or_null(traces_set_list, trace_name); link_CM02_im_t link = - xbt_dict_get_or_null(surf_network_model->resource_set, elm); + xbt_lib_get_or_null(link_lib, elm, SURF_LINK_LEVEL); - xbt_assert2(link, "Cannot connect trace %s to link %s: link undefined", + xbt_assert(link, "Cannot connect trace %s to link %s: link undefined", trace_name, elm); - xbt_assert2(trace, + xbt_assert(trace, "Cannot connect trace %s to link %s: trace undefined", trace_name, elm); @@ -290,11 +236,11 @@ static void im_net_add_traces(void) xbt_dict_foreach(trace_connect_list_bandwidth, cursor, trace_name, elm) { tmgr_trace_t trace = xbt_dict_get_or_null(traces_set_list, trace_name); link_CM02_im_t link = - xbt_dict_get_or_null(surf_network_model->resource_set, elm); + xbt_lib_get_or_null(link_lib, elm, SURF_LINK_LEVEL); - xbt_assert2(link, "Cannot connect trace %s to link %s: link undefined", + xbt_assert(link, "Cannot connect trace %s to link %s: link undefined", trace_name, elm); - xbt_assert2(trace, + xbt_assert(trace, "Cannot connect trace %s to link %s: trace undefined", trace_name, elm); @@ -305,11 +251,11 @@ static void im_net_add_traces(void) xbt_dict_foreach(trace_connect_list_latency, cursor, trace_name, elm) { tmgr_trace_t trace = xbt_dict_get_or_null(traces_set_list, trace_name); link_CM02_im_t link = - xbt_dict_get_or_null(surf_network_model->resource_set, elm); + xbt_lib_get_or_null(link_lib, elm, SURF_LINK_LEVEL); - xbt_assert2(link, "Cannot connect trace %s to link %s: link undefined", + xbt_assert(link, "Cannot connect trace %s to link %s: link undefined", trace_name, elm); - xbt_assert2(trace, + xbt_assert(trace, "Cannot connect trace %s to link %s: trace undefined", trace_name, elm); @@ -431,7 +377,9 @@ static double im_net_share_resources(double now) XBT_DEBUG("Before share resources, the size of modified actions set is %d", xbt_swag_size(im_net_modified_set)); update_action_remaining(now); + keep_track = im_net_modified_set; lmm_solve(network_im_maxmin_system); + keep_track = NULL; XBT_DEBUG("After share resources, The size of modified actions set is %d", xbt_swag_size(im_net_modified_set)); @@ -671,7 +619,7 @@ static surf_action_t im_net_communicate(const char *src_name, XBT_IN("(%s,%s,%g,%g)", src_name, dst_name, size, rate); /* LARGE PLATFORMS HACK: assert on total_route_size */ - xbt_assert2(xbt_dynar_length(route), + xbt_assert(xbt_dynar_length(route), "You're trying to send data from %s to %s but there is no connection between these two hosts.", src_name, dst_name); @@ -783,9 +731,12 @@ static surf_action_t im_net_communicate(const char *src_name, /* LARGE PLATFORMS HACK: expand also with src->link and dst->link */ #ifdef HAVE_TRACING - action->src_name = xbt_strdup(src_name); - - action->dst_name = xbt_strdup(dst_name); + if (TRACE_is_enabled()) { + action->src_name = xbt_strdup(src_name); + action->dst_name = xbt_strdup(dst_name); + } else { + action->src_name = action->dst_name = NULL; + } #endif xbt_dynar_free(&route); @@ -872,8 +823,6 @@ static void im_net_finalize(void) static void im_surf_network_model_init_internal(void) { s_surf_action_network_CM02_im_t comm; - XBT_INFO("You are using the UNSAFE lazy management optimization, I hope you know what you are doing."); - XBT_INFO("====> For now this optimization is only available for LV08_im network model."); surf_network_model = surf_model_init(); @@ -919,14 +868,14 @@ static void im_surf_network_model_init_internal(void) xbt_heap_set_update_callback(im_net_action_heap, im_net_action_update_index_heap); - routing_model_create(sizeof(link_CM02_im_t), im_net_link_new(xbt_strdup("__loopback__"), - 498000000, NULL, 0.000015, NULL, - SURF_RESOURCE_ON, NULL, - SURF_LINK_FATPIPE, NULL), - im_net_get_link_latency); + routing_model_create(sizeof(link_CM02_im_t), + im_net_create_resource(xbt_strdup("__loopback__"), + 498000000, NULL, 0.000015, NULL, + SURF_RESOURCE_ON, NULL, + SURF_LINK_FATPIPE, NULL), + im_net_get_link_latency); im_net_modified_set = xbt_swag_new(xbt_swag_offset(comm, action_list_hookup)); - keep_track = im_net_modified_set; } @@ -950,7 +899,7 @@ void im_surf_network_model_init_LegrandVelho(const char *filename) xbt_cfg_setdefault_double(_surf_cfg_set, "network/weight_S", 8775); update_model_description(surf_network_model_description, - "LV08_im", surf_network_model); + "LV08", surf_network_model); }