X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/f830403bb72f4e44f773ad87c2aa298f2393d395..a470bbfee8e031e6e21e4605d1d19a1a5eb1039b:/src/surf/network_gtnets.c diff --git a/src/surf/network_gtnets.c b/src/surf/network_gtnets.c index 6e259bd371..11e6089998 100644 --- a/src/surf/network_gtnets.c +++ b/src/surf/network_gtnets.c @@ -1,4 +1,5 @@ -/* Copyright (c) 2005 Henri Casanova. All rights reserved. */ +/* Copyright (c) 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. */ @@ -14,6 +15,7 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_network_gtnets, surf, extern routing_t used_routing; double sg_gtnets_jitter=0.0; +int sg_gtnets_jitter_seed=10; static void link_new(char *name, double bw, double lat, xbt_dict_t props) { @@ -37,7 +39,9 @@ static void link_new(char *name, double bw, double lat, xbt_dict_t props) gtnets_link->bw_current = bw; gtnets_link->lat_current = lat; gtnets_link->id = link_count; - +#ifdef HAVE_TRACING + TRACE_surf_link_declaration (name, bw, lat); +#endif xbt_dict_set(surf_network_model->resource_set, name, gtnets_link, surf_resource_free); } @@ -230,6 +234,23 @@ static void update_actions_state(double now, double delta) DEBUG2("Action (%p) remains old value: %f", action, action->generic_action.remains); double remain = gtnets_get_flow_rx(action); + +#ifdef HAVE_TRACING + // tracing resource utilization + int src = TRACE_surf_gtnets_get_src (action); + int dst = TRACE_surf_gtnets_get_dst (action); + if (src != -1 && dst != -1){ + xbt_dynar_t route = used_routing->get_route(src, dst); + network_link_GTNETS_t link; + unsigned int i; + xbt_dynar_foreach(route, i, link) { + + TRACE_surf_link_set_utilization (link->generic_resource.name, + action->generic_action.data, (action->generic_action.remains-remain)/delta, now-delta, delta); + } + } +#endif + DEBUG1("Remain value returned by GTNetS : %f", remain); //need to trust this remain value if (remain == 0) { @@ -245,6 +266,9 @@ static void update_actions_state(double now, double delta) action = (surf_action_network_GTNETS_t) (metadata[i]); action->generic_action.finish = now + time_to_next_flow_completion; +#ifdef HAVE_TRACING + TRACE_surf_gtnets_destroy (action); +#endif action_state_set((surf_action_t) action, SURF_ACTION_DONE); DEBUG1("----> Action (%p) just terminated", action); } @@ -286,6 +310,9 @@ static surf_action_t communicate(const char *src_name, const char *dst_name, xbt_assert2(0, "Not route between host %s and host %s", src_name, dst_name); } +#ifdef HAVE_TRACING + TRACE_surf_gtnets_communicate (action, src, dst); +#endif return (surf_action_t) action; } @@ -313,8 +340,6 @@ static void finalize(void) xbt_dict_free(&surf_network_model->resource_set); surf_model_exit(surf_network_model); - - free(surf_network_model); surf_network_model = NULL; gtnets_finalize(); @@ -364,6 +389,7 @@ void surf_network_model_init_GTNETS(const char *filename) if(sg_gtnets_jitter > 0.0){ gtnets_set_jitter(sg_gtnets_jitter); + gtnets_set_jitter_seed(sg_gtnets_jitter_seed); } update_model_description(surf_network_model_description,