Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
allowing the user to set the three tracing masks
[simgrid.git] / src / instr / surf_instr.c
index d1e9b31..a81f320 100644 (file)
@@ -22,8 +22,7 @@ static xbt_dict_t hosts_id;
 static xbt_dict_t created_links;
 static xbt_dict_t link_bandwidth;
 static xbt_dict_t link_latency;
-//static xbt_dict_t platform_variable_last_value; /* to control the amount of add/sub variables events*/
-//static xbt_dict_t platform_variable_last_time; /* to control the amount of add/sub variables events*/
+static xbt_dict_t host_containers;
 
 static xbt_dict_t last_platform_variables; /* to control the amount of add/sub variables events:
    dict with key {RESOURCE_NAME}#Time or {RESOURCE_NAME}#Value of dict with variables types == string */
@@ -43,14 +42,9 @@ void __TRACE_surf_init (void)
   link_bandwidth = xbt_dict_new();
   link_latency = xbt_dict_new();
   platform_variables = xbt_dict_new();
-
-  //platform_variable_last_value = xbt_dict_new();
-  //platform_variable_last_time = xbt_dict_new();
-
+  host_containers = xbt_dict_new();
   last_platform_variables =  xbt_dict_new();
-
   resource_variables = xbt_dict_new ();
-
   gtnets_src = xbt_dict_new ();
   gtnets_dst = xbt_dict_new ();
 }
@@ -114,10 +108,9 @@ void __TRACE_surf_finalize (void)
       char *variable = xbt_dict_get (last_platform_variables, variablekey);
       pajeSubVariable (atof(time), variable, resource, value);
 
-      //TODO: should remove, but it is causing sigabort
-      //xbt_dict_remove (last_platform_variables, timekey);
-      //xbt_dict_remove (last_platform_variables, valuekey);
-      //xbt_dict_remove (last_platform_variables, variablekey);
+      xbt_dict_remove (last_platform_variables, timekey);
+      xbt_dict_remove (last_platform_variables, valuekey);
+      xbt_dict_remove (last_platform_variables, variablekey);
     }
   }
 }
@@ -241,12 +234,7 @@ void __TRACE_surf_set_resource_variable (double date, const char *variable, cons
   xbt_dict_set (resource_variables, xbt_strdup(key), xbt_strdup(aux), xbt_free);
 }
 
-void TRACE_surf_update_action_state (void *surf_action, smx_action_t smx_action,
-    double value, const char *stateValue, double now, double delta)
-{
-}
-
-void TRACE_surf_update_action_state_net_resource (const char *name, smx_action_t smx_action, double value, double now, double delta)
+void TRACE_surf_link_set_utilization (const char *name, smx_action_t smx_action, double value, double now, double delta)
 {
   if (!IS_TRACING || !IS_TRACED(smx_action)) return;
 
@@ -258,7 +246,7 @@ void TRACE_surf_update_action_state_net_resource (const char *name, smx_action_t
   if (value == 0) return;
 
   if (!xbt_dict_get_or_null (created_links, name)){
-    TRACE_surf_missing_link ();
+    TRACE_surf_link_missing ();
     return;
   }
 
@@ -268,7 +256,7 @@ void TRACE_surf_update_action_state_net_resource (const char *name, smx_action_t
   return;
 }
 
-void TRACE_surf_update_action_state_cpu_resource (const char *name, smx_action_t smx_action, double value, double now, double delta)
+void TRACE_surf_host_set_utilization (const char *name, smx_action_t smx_action, double value, double now, double delta)
 {
   if (!IS_TRACING || !IS_TRACED(smx_action)) return;
 
@@ -282,7 +270,7 @@ void TRACE_surf_update_action_state_cpu_resource (const char *name, smx_action_t
   return;
 }
 
-void TRACE_surf_net_link_new (char *name, double bw, double lat)
+void TRACE_surf_link_declaration (char *name, double bw, double lat)
 {
   if (!IS_TRACING) return;
   //if (IS_TRACING_PLATFORM) pajeCreateContainerWithBandwidthLatency (SIMIX_get_clock(), name, "LINK", "platform", name, bw, lat);
@@ -296,14 +284,17 @@ void TRACE_surf_net_link_new (char *name, double bw, double lat)
   xbt_dict_set (link_latency, xbt_strdup(name), lat_ptr, xbt_free);
 }
 
-void TRACE_surf_cpu_new (char *name, double power)
+void TRACE_surf_host_declaration (char *name, double power)
 {
   if (!IS_TRACING) return;
-  if (IS_TRACING_PLATFORM) pajeCreateContainer (SIMIX_get_clock(), name, "HOST", "platform", name);
-  __TRACE_surf_set_resource_variable (SIMIX_get_clock(), "power", name, power);
+  pajeCreateContainer (SIMIX_get_clock(), name, "HOST", "platform", name);
+  xbt_dict_set (host_containers, xbt_strdup(name), xbt_strdup("1"), xbt_free);
+  if (IS_TRACING_PLATFORM){
+    __TRACE_surf_set_resource_variable (SIMIX_get_clock(), "power", name, power);
+  }
 }
 
-void TRACE_surf_routing_full_parse_end (char *link_name, int src, int dst)
+void TRACE_surf_link_save_endpoints (char *link_name, int src, int dst)
 {
   if (!IS_TRACING) return;
   char srcidstr[100], dstidstr[100];
@@ -325,14 +316,14 @@ void TRACE_surf_routing_full_parse_end (char *link_name, int src, int dst)
     //if (IS_TRACING_PLATFORM) pajeEndLink (SIMIX_get_clock()+0.1, "edge", "platform", "route", dstname, key);
     double *bw = xbt_dict_get (link_bandwidth, link_name);
     double *lat = xbt_dict_get (link_latency, link_name);
-    if (IS_TRACING_PLATFORM) pajeCreateContainerWithBandwidthLatencySrcDst (SIMIX_get_clock(), link_name, "LINK", "platform", link_name, *bw, *lat, srcname, dstname);
-    __TRACE_surf_set_resource_variable (SIMIX_get_clock(), "bandwidth", link_name, *bw);
-    __TRACE_surf_set_resource_variable (SIMIX_get_clock(), "latency", link_name, *lat);
+    pajeCreateContainerWithBandwidthLatencySrcDst (SIMIX_get_clock(), link_name, "LINK", "platform", link_name, *bw, *lat, srcname, dstname);
+    if (IS_TRACING_PLATFORM) __TRACE_surf_set_resource_variable (SIMIX_get_clock(), "bandwidth", link_name, *bw);
+    if (IS_TRACING_PLATFORM) __TRACE_surf_set_resource_variable (SIMIX_get_clock(), "latency", link_name, *lat);
     xbt_dict_set (created_links, xbt_strdup(link_name), xbt_strdup ("1"), xbt_free);
   }
 }
 
-void TRACE_surf_cpu_set_power (double date, char *resource, double power)
+void TRACE_surf_host_set_power (double date, char *resource, double power)
 {
   __TRACE_surf_set_resource_variable (date, "power", resource, power);
 }
@@ -347,7 +338,7 @@ void TRACE_surf_link_set_latency (double date, char *resource, double latency)
   __TRACE_surf_set_resource_variable (date, "latency", resource, latency);
 }
 
-void TRACE_surf_define_host_id (const char *name, int host_id)
+void TRACE_surf_host_define_id (const char *name, int host_id)
 {
   if (!IS_TRACING) return;
   char strid[100];
@@ -406,7 +397,7 @@ void TRACE_surf_gtnets_destroy (void *action)
   xbt_dict_remove (gtnets_dst, key);
 }
 
-void TRACE_surf_missing_link (void)
+void TRACE_surf_link_missing (void)
 {
   CRITICAL0("The trace cannot be done because "
                 "the platform you are using contains "
@@ -414,4 +405,30 @@ void TRACE_surf_missing_link (void)
   THROW0(tracing_error, TRACE_ERROR_COMPLEX_ROUTES, "Tracing failed");
 }
 
+void TRACE_msg_clean (void)
+{
+  __TRACE_surf_finalize();
+
+  xbt_dict_cursor_t cursor = NULL;
+  char *key, *value;
+
+  /* get all host from host_containers */
+  xbt_dict_foreach(host_containers, cursor, key, value) {
+    pajeDestroyContainer (MSG_get_clock(), "HOST", key);
+  }
+}
+
+void TRACE_surf_host_vivaldi_parse (char *host, double x, double y, double h)
+{
+  if (!IS_TRACING || !IS_TRACING_PLATFORM) return;
+
+  char valuestr[100];
+  snprintf (valuestr, 100, "%g", x);
+  pajeSetVariable (0, "vivaldi_x", host, valuestr);
+  snprintf (valuestr, 100, "%g", y);
+  pajeSetVariable (0, "vivaldi_y", host, valuestr);
+  snprintf (valuestr, 100, "%g", h);
+  pajeSetVariable (0, "vivaldi_h", host, valuestr);
+}
+
 #endif