Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
merge branches
[simgrid.git] / src / amok / Bandwidth / bandwidth.c
index 9e8d41c..9364c2e 100644 (file)
@@ -1,8 +1,7 @@
 /* amok_bandwidth - Bandwidth tests facilities                              */
 
-/* Copyright (c) 2003-6 Martin Quinson.                                     */
-/* Copyright (c) 2006   Ahmed Harbaoui.                                     */
-/* All rights reserved.                                                     */
+/* Copyright (c) 2004, 2005, 2006, 2007, 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. */
@@ -82,7 +81,8 @@ void amok_bw_bw_init()
   gras_datadesc_struct_close(bw_res_desc);
   bw_res_desc = gras_datadesc_ref("bw_res_t", bw_res_desc);
 
-  gras_msgtype_declare_rpc("BW handshake", bw_request_desc, bw_request_desc);
+  gras_msgtype_declare_rpc("BW handshake", bw_request_desc,
+                           bw_request_desc);
 
   gras_msgtype_declare_rpc("BW reask", bw_request_desc, NULL);
   gras_msgtype_declare("BW stop", NULL);
@@ -154,7 +154,7 @@ void amok_bw_test(gras_socket_t peer,
     CATCH(e) {
       measMasterIn = NULL;
       if (port == 10000 - 1) {
-        RETHROW0("Error caught while opening a measurement socket: %s");
+        RETHROWF("Error caught while opening a measurement socket: %s");
       } else {
         xbt_ex_free(e);
       }
@@ -167,17 +167,17 @@ void amok_bw_test(gras_socket_t peer,
   request->msg_amount = msg_amount;
   request->peer.name = NULL;
   request->peer.port = gras_socket_my_port(measMasterIn);
-  DEBUG6
-    ("Handshaking with %s:%d to connect it back on my %d (bufsize=%ld, msg_size=%ld, msg_amount=%ld)",
-     gras_socket_peer_name(peer), gras_socket_peer_port(peer),
-     request->peer.port, request->buf_size, request->msg_size,
-     request->msg_amount);
+  XBT_DEBUG
+      ("Handshaking with %s:%d to connect it back on my %d (bufsize=%ld, msg_size=%ld, msg_amount=%ld)",
+       gras_socket_peer_name(peer), gras_socket_peer_port(peer),
+       request->peer.port, request->buf_size, request->msg_size,
+       request->msg_amount);
 
   TRY {
     gras_msg_rpccall(peer, 15, "BW handshake", &request, &request_ack);
   }
-  CATCH(e) {
-    RETHROW0("Error encountered while sending the BW request: %s");
+  CATCH_ANONYMOUS {
+    RETHROWF("Error encountered while sending the BW request: %s");
   }
   measIn = gras_socket_meas_accept(measMasterIn);
 
@@ -186,13 +186,14 @@ void amok_bw_test(gras_socket_t peer,
                                      request_ack->peer.port,
                                      request->buf_size, 1);
   }
-  CATCH(e) {
-    RETHROW2
-      ("Error encountered while opening the measurement socket to %s:%d for BW test: %s",
-       gras_socket_peer_name(peer), request_ack->peer.port);
+  CATCH_ANONYMOUS {
+    RETHROWF
+        ("Error encountered while opening the measurement socket to %s:%d for BW test: %s",
+         gras_socket_peer_name(peer), request_ack->peer.port);
   }
-  DEBUG2("Got ACK; conduct the experiment (msg_size = %ld, msg_amount=%ld)",
-         request->msg_size, request->msg_amount);
+  XBT_DEBUG
+      ("Got ACK; conduct the experiment (msg_size = %ld, msg_amount=%ld)",
+       request->msg_size, request->msg_amount);
 
   *sec = 0;
   first_pass = 1;
@@ -216,21 +217,22 @@ void amok_bw_test(gras_socket_t peer,
          And then increase the number of messages to compensate (check for overflow there, too) */
       if (request->msg_size > 64 * 1024 * 1024) {
         unsigned long int new_amount =
-          ((request->msg_size / ((double) 64 * 1024 * 1024))
-           * request->msg_amount) + 1;
+            ((request->msg_size / ((double) 64 * 1024 * 1024))
+             * request->msg_amount) + 1;
 
-        xbt_assert0(new_amount > request->msg_amount,
+        xbt_assert(new_amount > request->msg_amount,
                     "Overflow on the number of messages! You must have a *really* fat pipe. Please fix your platform");
         request->msg_amount = new_amount;
 
         request->msg_size = 64 * 1024 * 1024;
       }
 
-      VERB5
-        ("The experiment was too short (%f sec<%f sec). Redo it with msg_size=%lu (nb_messages=%lu) (got %fMb/s)",
-         meas_duration, min_duration, request->msg_size, request->msg_amount,
-         ((double) request->msg_size) * ((double) request->msg_amount /
-                                         (*sec) / 1024.0 / 1024.0));
+      XBT_VERB
+          ("The experiment was too short (%f sec<%f sec). Redo it with msg_size=%lu (nb_messages=%lu) (got %fMb/s)",
+           meas_duration, min_duration, request->msg_size,
+           request->msg_amount,
+           ((double) request->msg_size) * ((double) request->msg_amount /
+                                           (*sec) / 1024.0 / 1024.0));
 
       gras_msg_rpccall(peer, 60, "BW reask", &request, NULL);
     }
@@ -240,29 +242,31 @@ void amok_bw_test(gras_socket_t peer,
     TRY {
       gras_socket_meas_send(measOut, 120, request->msg_size,
                             request->msg_amount);
-      DEBUG0("Data sent. Wait ACK");
+      XBT_DEBUG("Data sent. Wait ACK");
       gras_socket_meas_recv(measIn, 120, 1, 1);
-    } CATCH(e) {
+    }
+    CATCH_ANONYMOUS {
       gras_socket_close(measOut);
       gras_socket_close(measMasterIn);
       gras_socket_close(measIn);
-      RETHROW0("Unable to conduct the experiment: %s");
+      RETHROWF("Unable to conduct the experiment: %s");
     }
     *sec = gras_os_time() - *sec;
     if (*sec != 0.0) {
       *bw =
-        ((double) request->msg_size) * ((double) request->msg_amount) /
-        (*sec);
+          ((double) request->msg_size) * ((double) request->msg_amount) /
+          (*sec);
     }
-    DEBUG1("Experiment done ; it took %f sec", *sec);
+    XBT_DEBUG("Experiment done ; it took %f sec", *sec);
     if (*sec <= 0) {
-      CRITICAL1("Nonpositive value (%f) found for BW test time.", *sec);
+      XBT_CRITICAL("Nonpositive value (%f) found for BW test time.", *sec);
     }
 
   } while (*sec < min_duration);
 
-  DEBUG2("This measurement was long enough (%f sec; found %f b/s). Stop peer",
-         *sec, *bw);
+  XBT_DEBUG
+      ("This measurement was long enough (%f sec; found %f b/s). Stop peer",
+       *sec, *bw);
   gras_msg_send(peer, "BW stop", NULL);
 
   free(request_ack);
@@ -294,10 +298,10 @@ int amok_bw_cb_bw_handshake(gras_msg_cb_ctx_t ctx, void *payload)
   gras_msg_cb_ctx_t ctx_reask;
   static xbt_dynar_t msgtwaited = NULL;
 
-  DEBUG5
-    ("Handshaked to connect to %s:%d (sizes: buf=%lu msg=%lu msg_amount=%lu)",
-     gras_socket_peer_name(expeditor), request->peer.port, request->buf_size,
-     request->msg_size, request->msg_amount);
+  XBT_DEBUG
+      ("Handshaked to connect to %s:%d (sizes: buf=%lu msg=%lu msg_amount=%lu)",
+       gras_socket_peer_name(expeditor), request->peer.port,
+       request->buf_size, request->msg_size, request->msg_amount);
 
   /* Build our answer */
   answer = xbt_new0(s_bw_request_t, 1);
@@ -312,8 +316,8 @@ int amok_bw_cb_bw_handshake(gras_msg_cb_ctx_t ctx, void *payload)
         xbt_ex_free(e);
       else
         /* FIXME: tell error to remote */
-        RETHROW0
-          ("Error encountered while opening a measurement server socket: %s");
+        RETHROWF
+            ("Error encountered while opening a measurement server socket: %s");
     }
   }
 
@@ -325,10 +329,10 @@ int amok_bw_cb_bw_handshake(gras_msg_cb_ctx_t ctx, void *payload)
   TRY {
     gras_msg_rpcreturn(60, ctx, &answer);
   }
-  CATCH(e) {
+  CATCH_ANONYMOUS {
     gras_socket_close(measMasterIn);
     /* FIXME: tell error to remote */
-    RETHROW0("Error encountered while sending the answer: %s");
+    RETHROWF("Error encountered while sending the answer: %s");
   }
 
 
@@ -338,26 +342,26 @@ int amok_bw_cb_bw_handshake(gras_msg_cb_ctx_t ctx, void *payload)
                                      request->peer.port,
                                      request->buf_size, 1);
   }
-  CATCH(e) {
-    RETHROW2
-      ("Error encountered while opening a measurement socket back to %s:%d : %s",
-       gras_socket_peer_name(expeditor), request->peer.port);
+  CATCH_ANONYMOUS {
+    RETHROWF
+        ("Error encountered while opening a measurement socket back to %s:%d : %s",
+         gras_socket_peer_name(expeditor), request->peer.port);
     /* FIXME: tell error to remote */
   }
 
   TRY {
     measIn = gras_socket_meas_accept(measMasterIn);
-    DEBUG4
-      ("BW handshake answered. buf_size=%lu msg_size=%lu msg_amount=%lu port=%d",
-       answer->buf_size, answer->msg_size, answer->msg_amount,
-       answer->peer.port);
+    XBT_DEBUG
+        ("BW handshake answered. buf_size=%lu msg_size=%lu msg_amount=%lu port=%d",
+         answer->buf_size, answer->msg_size, answer->msg_amount,
+         answer->peer.port);
   }
-  CATCH(e) {
+  CATCH_ANONYMOUS {
     gras_socket_close(measMasterIn);
     gras_socket_close(measIn);
     gras_socket_close(measOut);
     /* FIXME: tell error to remote ? */
-    RETHROW0("Error encountered while opening the meas socket: %s");
+    RETHROWF("Error encountered while opening the meas socket: %s");
   }
 
   if (!msgtwaited) {
@@ -373,12 +377,13 @@ int amok_bw_cb_bw_handshake(gras_msg_cb_ctx_t ctx, void *payload)
       gras_socket_meas_recv(measIn, 120, request->msg_size,
                             request->msg_amount);
       gras_socket_meas_send(measOut, 120, 1, 1);
-    } CATCH(e) {
+    }
+    CATCH_ANONYMOUS {
       gras_socket_close(measMasterIn);
       gras_socket_close(measIn);
       gras_socket_close(measOut);
       /* FIXME: tell error to remote ? */
-      RETHROW0("Error encountered while receiving the experiment: %s");
+      RETHROWF("Error encountered while receiving the experiment: %s");
     }
     gras_msg_wait_or(60, msgtwaited, &ctx_reask, &msggot, &payload);
     switch (msggot) {
@@ -389,7 +394,7 @@ int amok_bw_cb_bw_handshake(gras_msg_cb_ctx_t ctx, void *payload)
       tooshort = 1;
       free(request);
       request = (bw_request_t) payload;
-      VERB0("Return the reasking RPC");
+      XBT_VERB("Return the reasking RPC");
       gras_msg_rpcreturn(60, ctx_reask, NULL);
     }
     gras_msg_cb_ctx_free(ctx_reask);
@@ -401,7 +406,7 @@ int amok_bw_cb_bw_handshake(gras_msg_cb_ctx_t ctx, void *payload)
   gras_socket_close(measOut);
   free(answer);
   free(request);
-  VERB0("BW experiment done.");
+  XBT_VERB("BW experiment done.");
   return 0;
 }
 
@@ -457,7 +462,7 @@ void amok_bw_request(const char *from_name, unsigned int from_port,
 
 
 
-  DEBUG4("Ask for a BW test between %s:%d and %s:%d", from_name, from_port,
+  XBT_DEBUG("Ask for a BW test between %s:%d and %s:%d", from_name, from_port,
          to_name, to_port);
   gras_msg_rpccall(sock, 20 * 60, "BW request", &request, &result);
 
@@ -466,7 +471,7 @@ void amok_bw_request(const char *from_name, unsigned int from_port,
   if (bw)
     *bw = result->bw;
 
-  VERB6("BW test (%s:%d -> %s:%d) took %f sec (%f kb/s)",
+  XBT_VERB("BW test (%s:%d -> %s:%d) took %f sec (%f kb/s)",
         from_name, from_port, to_name, to_port,
         result->sec, ((double) result->bw) / 1024.0);
 
@@ -484,7 +489,7 @@ int amok_bw_cb_bw_request(gras_msg_cb_ctx_t ctx, void *payload)
   gras_socket_t peer, asker;
 
   asker = gras_msg_cb_ctx_from(ctx);
-  VERB6("Asked by %s:%d to conduct a bw XP with %s:%d (request: %ld %ld)",
+  XBT_VERB("Asked by %s:%d to conduct a bw XP with %s:%d (request: %ld %ld)",
         gras_socket_peer_name(asker), gras_socket_peer_port(asker),
         request->peer.name, request->peer.port,
         request->msg_size, request->msg_amount);
@@ -530,8 +535,8 @@ double *amok_bw_matrix(xbt_dynar_t peers,
       if (i != j) {
         /* Mesurements of Bandwidth */
         amok_bw_request(p1->name, p1->port, p2->name, p2->port,
-                        buf_size_bw, msg_size_bw, msg_amount_bw, min_duration,
-                        &sec, &matrix_res[i * len + j]);
+                        buf_size_bw, msg_size_bw, msg_amount_bw,
+                        min_duration, &sec, &matrix_res[i * len + j]);
       }
     }
   }