Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
new configuration option tracing/platform/method
authorschnorr <schnorr@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Thu, 23 Sep 2010 10:48:37 +0000 (10:48 +0000)
committerschnorr <schnorr@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Thu, 23 Sep 2010 10:48:37 +0000 (10:48 +0000)
details:
- may be "a", "b", "c"
- tracing behavior for each method as explained in previous commit

git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@8209 48e7efb5-ca39-0410-a469-dd3cf9ba447f

src/instr/instr_config.c
src/instr/private.h
src/instr/resource_utilization.c

index a710162..dc65760 100644 (file)
@@ -15,6 +15,7 @@
 #define OPT_TRACING_MSG_PROCESS   "tracing/msg/process"
 #define OPT_TRACING_MSG_VOLUME    "tracing/msg/volume"
 #define OPT_TRACING_FILENAME      "tracing/filename"
 #define OPT_TRACING_MSG_PROCESS   "tracing/msg/process"
 #define OPT_TRACING_MSG_VOLUME    "tracing/msg/volume"
 #define OPT_TRACING_FILENAME      "tracing/filename"
+#define OPT_TRACING_PLATFORM_METHOD "tracing/platform/method"
 
 static int trace_configured = 0;
 
 
 static int trace_configured = 0;
 
@@ -53,6 +54,11 @@ char *_TRACE_filename (void)
   return xbt_cfg_get_string (_surf_cfg_set, OPT_TRACING_FILENAME);
 }
 
   return xbt_cfg_get_string (_surf_cfg_set, OPT_TRACING_FILENAME);
 }
 
+char *_TRACE_platform_method (void)
+{
+  return xbt_cfg_get_string (_surf_cfg_set, OPT_TRACING_PLATFORM_METHOD);
+}
+
 void TRACE_global_init(int *argc, char **argv)
 {
   /* name of the tracefile */
 void TRACE_global_init(int *argc, char **argv)
 {
   /* name of the tracefile */
@@ -76,6 +82,13 @@ void TRACE_global_init(int *argc, char **argv)
                    xbt_cfgelm_int, &default_tracing_platform, 0, 1,
                    NULL, NULL);
 
                    xbt_cfgelm_int, &default_tracing_platform, 0, 1,
                    NULL, NULL);
 
+  /* platform method */
+  char *default_tracing_platform_method = xbt_strdup ("b");
+  xbt_cfg_register(&_surf_cfg_set, OPT_TRACING_PLATFORM_METHOD,
+                   "Tracing method used to register categorized resource behavior.",
+                   xbt_cfgelm_string, &default_tracing_platform_method, 1, 1,
+                   NULL, NULL);
+
   /* msg task */
   int default_tracing_msg_task = 0;
   xbt_cfg_register(&_surf_cfg_set, OPT_TRACING_MSG_TASK,
   /* msg task */
   int default_tracing_msg_task = 0;
   xbt_cfg_register(&_surf_cfg_set, OPT_TRACING_MSG_TASK,
index 1cfdfe4..eea811f 100644 (file)
@@ -151,6 +151,7 @@ int _TRACE_msg_task_enabled (void);
 int _TRACE_msg_process_enabled (void);
 int _TRACE_msg_volume_enabled (void);
 char *_TRACE_filename (void);
 int _TRACE_msg_process_enabled (void);
 int _TRACE_msg_volume_enabled (void);
 char *_TRACE_filename (void);
+char *_TRACE_platform_method (void);
 void TRACE_global_init(int *argc, char **argv);
 
 /* from resource_utilization.c */
 void TRACE_global_init(int *argc, char **argv);
 
 /* from resource_utilization.c */
index 7898bea..eef6614 100644 (file)
 
 #define VARIABLE_SEPARATOR '#'
 
 
 #define VARIABLE_SEPARATOR '#'
 
-#define METHOD_B
-
-#ifdef METHOD_B
+//B
 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 */
 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 */
-#endif //METHOD_B
 
 
-#ifdef METHOD_C
+//C
 static xbt_dict_t method_c_dict;
 static xbt_dict_t method_c_dict;
-#endif // METHOD_C
 
 /* auxiliary function for resource utilization tracing */
 static char *strsplit (char *input, int field, char del) //caller should free the returned string
 
 /* auxiliary function for resource utilization tracing */
 static char *strsplit (char *input, int field, char del) //caller should free the returned string
@@ -46,7 +42,24 @@ static char *strsplit (char *input, int field, char del) //caller should free th
   return ret;
 }
 
   return ret;
 }
 
-#ifdef METHOD_A
+//resource utilization tracing method
+typedef enum {methodA,methodB,methodC} TracingMethod;
+static TracingMethod currentMethod;
+
+static void __TRACE_define_method (char *method)
+{
+  if (!strcmp(method, "a")){
+    currentMethod = methodA;
+  }else if (!strcmp(method, "b")){
+    currentMethod = methodB;
+  }else if (!strcmp(method, "c")){
+    currentMethod = methodC;
+  }else{
+    currentMethod = methodB; //default
+  }
+}
+
+//A
 static void __TRACE_surf_resource_utilization_A (double now, double delta, const char *variable, const char *resource, double value)
 {
   if (!IS_TRACING_PLATFORM) return;
 static void __TRACE_surf_resource_utilization_A (double now, double delta, const char *variable, const char *resource, double value)
 {
   if (!IS_TRACING_PLATFORM) return;
@@ -59,9 +72,8 @@ static void __TRACE_surf_resource_utilization_A (double now, double delta, const
   pajeSubVariable (now+delta, variable, resource, valuestr);
   return;
 }
   pajeSubVariable (now+delta, variable, resource, valuestr);
   return;
 }
-#endif //METHOD_A
 
 
-#ifdef METHOD_B
+//B
 static void __TRACE_surf_resource_utilization_initialize_B ()
 {
   last_platform_variables =  xbt_dict_new();
 static void __TRACE_surf_resource_utilization_initialize_B ()
 {
   last_platform_variables =  xbt_dict_new();
@@ -197,10 +209,8 @@ static void __TRACE_surf_resource_utilization_finalize_B ()
     }
   }
 }
     }
   }
 }
-#endif //METHOD_B
-
 
 
-#ifdef METHOD_C
+//C
 static void __TRACE_surf_resource_utilization_start_C (smx_action_t action)
 {
   char key[100];
 static void __TRACE_surf_resource_utilization_start_C (smx_action_t action)
 {
   char key[100];
@@ -310,9 +320,6 @@ static void __TRACE_surf_resource_utilization_finalize_C ()
 {
   xbt_dict_free (&method_c_dict);
 }
 {
   xbt_dict_free (&method_c_dict);
 }
-#endif //METHOD_C
-
-
 
 /*
  * TRACE_surf_link_set_utilization: entry point from SimGrid
 
 /*
  * TRACE_surf_link_set_utilization: entry point from SimGrid
@@ -364,60 +371,48 @@ void TRACE_surf_host_set_utilization (const char *name, smx_action_t smx_action,
  */
 void __TRACE_surf_resource_utilization_start (smx_action_t action)
 {
  */
 void __TRACE_surf_resource_utilization_start (smx_action_t action)
 {
-#ifdef METHOD_C
-  __TRACE_surf_resource_utilization_start_C (action);
-#endif
+  if (currentMethod == methodC){
+    __TRACE_surf_resource_utilization_start_C (action);
+  }
 }
 
 void __TRACE_surf_resource_utilization_end (smx_action_t action)
 {
 }
 
 void __TRACE_surf_resource_utilization_end (smx_action_t action)
 {
-#ifdef METHOD_C
-  __TRACE_surf_resource_utilization_end_C (action);
-#endif
+  if (currentMethod == methodC){
+    __TRACE_surf_resource_utilization_end_C (action);
+  }
 }
 
 void __TRACE_surf_resource_utilization_event (smx_action_t action, double now, double delta, const char *variable, const char *resource, double value)
 {
 }
 
 void __TRACE_surf_resource_utilization_event (smx_action_t action, double now, double delta, const char *variable, const char *resource, double value)
 {
-#ifdef METHOD_A
-  __TRACE_surf_resource_utilization_A (now, delta, variable, resource, value);
-#else
-  #ifdef METHOD_B
-  __TRACE_surf_resource_utilization_B (now, delta, variable, resource, value);
-  #else
-    #ifdef METHOD_C
+  if (currentMethod == methodA){
+    __TRACE_surf_resource_utilization_A (now, delta, variable, resource, value);
+  }else if (currentMethod == methodB){
+    __TRACE_surf_resource_utilization_B (now, delta, variable, resource, value);
+  }else if (currentMethod == methodC){
     __TRACE_surf_resource_utilization_C (action, now, delta, variable, resource, value);
     __TRACE_surf_resource_utilization_C (action, now, delta, variable, resource, value);
-    #endif
-  #endif
-#endif
+  }
 }
 
 void __TRACE_surf_resource_utilization_initialize ()
 {
 }
 
 void __TRACE_surf_resource_utilization_initialize ()
 {
-#ifdef METHOD_A
-#else
-  #ifdef METHOD_B
-  __TRACE_surf_resource_utilization_initialize_B();
-  #else
-    #ifdef METHOD_C
+  __TRACE_define_method (_TRACE_platform_method());
+
+  if (currentMethod == methodA){
+  }else if (currentMethod == methodB){
+    __TRACE_surf_resource_utilization_initialize_B();
+  }else if (currentMethod == methodC){
     __TRACE_surf_resource_utilization_initialize_C();
     __TRACE_surf_resource_utilization_initialize_C();
-    #endif
-  #endif
-#endif
+  }
 }
 
 void __TRACE_surf_resource_utilization_finalize ()
 {
 }
 
 void __TRACE_surf_resource_utilization_finalize ()
 {
-#ifdef METHOD_A
-#else
-  #ifdef METHOD_B
-  __TRACE_surf_resource_utilization_finalize_B();
-  #else
-    #ifdef METHOD_C
+  if (currentMethod == methodA){
+  }else if (currentMethod == methodB){
+    __TRACE_surf_resource_utilization_finalize_B();
+  }else if (currentMethod == methodC){
     __TRACE_surf_resource_utilization_finalize_C();
     __TRACE_surf_resource_utilization_finalize_C();
-    #endif
-  #endif
-#endif
+  }
 }
 }
-
-
 #endif
 #endif