Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
renaming the tracing functions that set the host/link utilization
[simgrid.git] / src / surf / network_gtnets.c
index ad3d39c..756f780 100644 (file)
@@ -38,7 +38,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);
 }
@@ -231,6 +233,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) {
@@ -246,6 +265,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);
     }
@@ -287,6 +309,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;
 }
@@ -314,8 +339,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();