Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' of git+ssh://scm.gforge.inria.fr//gitroot/simgrid/simgrid
authornavarro <navarro@caraja.(none)>
Wed, 24 Oct 2012 13:52:08 +0000 (15:52 +0200)
committernavarro <navarro@caraja.(none)>
Wed, 24 Oct 2012 13:52:08 +0000 (15:52 +0200)
ChangeLog
NEWS
buildtools/Cmake/AddTests.cmake
examples/msg/bittorrent/bittorrent.tesh
examples/msg/bittorrent/messages.c
examples/msg/bittorrent/messages.h
examples/msg/bittorrent/peer.c
examples/msg/chord/chord.c
teshsuite/xbt/CMakeLists.txt

index 3231779..30654b9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,32 +1,35 @@
 SimGrid (3.8) NOT RELEASED; urgency=low
 
- The "SimGrid makes psssshiiiit and jumps into the cloud" release.
+ The Psssshiiiit release: SimGrid jumps into the Cloud.
 
  MSG:
  * Add an experimental interface to manipulate VMs. They are mainly
    process groups with very few intrinsic semantic, but they should
    allow you to build the semantic you want easily.
  * New function: MSG_host_set_property_value()
- * Deprecate functions MSG_global_init() / MSG_global_init_args()
-   Please use MSG_init() instead. (reducing the amount of entry
-   points in the library helps us).
- * Make it impossible to link against the wrong version of the lib
+ * New function: MSG_process_on_exit(). To clean memory in all cases.
  * Bug fixes that made the host (and link) failures unusable.
  * Add a way to auto-restart process when the host in which they are
    executing comes back (ON_FAILURE="RESTART" on deployment file,
-   MSG_process_auto_restart_set).
+   MSG_process_auto_restart_set).   
  * Use the "msg_" prefix for all datatypes (instead of m_, msg_ and MSG_),
    please stop using the old ones, they are DEPRECATED.
+   
+ * Deprecate functions MSG_global_init() / MSG_global_init_args()
+   Please use MSG_init() instead. (reducing the amount of entry
+   points in the library helps us).
+ * Make it impossible to link against the wrong version of the lib
  * Deprecate MSG_clean(). No need to call it anymore.
  * Function MSG_get_host_number() is not deprecated anymore.
 
  Documentation:
  * Split the doc into a user guide and a reference guide.
+ * Start a developper guide to help people hacking on SimGrid.
 
  Cmake:
+ * Enable tracing by default. This modules rocks you should use it.
  * Remove option custom_flags. Now use environment variables CFLAGS
    and LDFLAGS.
- * Enable tracing by default. This modules rocks you should use it.
  * Use default cmake things to detect lua instead of home grown ones.
  * New option "enable_mallocators" to disable mallocators, for debugging
    purpose ("on" by default).
@@ -34,8 +37,6 @@ SimGrid (3.8) NOT RELEASED; urgency=low
  Simix:
  * Bug fixes around the resource failures: don't let the processes
    survive the host they are running onto.
- * Add an interface to execute cleanup functions when a process is killed,
-   to avoid memory leaks.
  * Add an interface to auto-restart processes when the host in which they are
    executing comes back.
  * Ensures that SIMIX_clean is called automatically. It's not part of
@@ -80,13 +81,17 @@ SimGrid (3.8) NOT RELEASED; urgency=low
    [Khalid Hasanov & Jean-Noel Quintin] Thanks for the patch, guys.
  * Correct behavior of smpi/sender_gap and set its default value to 0
  * Add option to asynchronously send small messages to allow better 
-  simulation of pt2pt communications. --cfg=smpi/async_small_threshold:value 
-  specifies the size in bytes under which messages will be asynchronously sent.
+   simulation of pt2pt communications. --cfg=smpi/async_small_threshold:value 
+   specifies the size in bytes under which messages will be asynchronously sent.
  * Add support of MPI_Iprobe, MPI_Probe, MPI_Testall, MPI_Wtick functions
  * SMPI now handles more MPI specific values in input. Closes [#14389] and [#14388] 
-   
+
  SimGrid:
+ * New C interface to define a platform: XML is now optional. 
+   For more info, please check include/simgrid/platf.h.
+ * New interface to define random platforms from the C:
+   For more info, please check include/simgrid/platf_generator.h and
+   examples/msg/masterslave/masterslave_platfgen.c
  * Export a sg_cmdline dynar containing all the arguments we got from
    the command line.
 
diff --git a/NEWS b/NEWS
index feb3de4..61be925 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -4,7 +4,15 @@ __   _____ _ __ ___(_) ___  _ __   |___ / ( _ )
  \ V /  __/ |  \__ \ | (_) | | | |  ___) | (_) |
   \_/ \___|_|  |___/_|\___/|_| |_| |____(_)___/
 
-(to complete)
+The Psssshiiiit release: SimGrid jumps into the Cloud.
+
+ * Experimental interface to manipulate VMs, EC2-style.
+ * Fixes around process restart and stochastic workloads
+ * platf: New C interface to create fixed or random platforms
+ * SimDag: Many fixes and improvements of typed tasks
+ * SMPI now covers more of the MPI interface.
+   More datatypes, more functions, more robust.
+ * Model-checking: mmalloc is more robust to user errors.
                     _               _____ _____ _
 __   _____ _ __ ___(_) ___  _ __   |___ /|___  / |
 \ \ / / _ \ '__/ __| |/ _ \| '_ \    |_ \   / /| |
index f5f0d43..f96df3b 100644 (file)
@@ -50,11 +50,13 @@ if(NOT enable_memcheck)
   # teshsuite/xbt
   ADD_TEST(xbt-log-large                       ${CMAKE_BINARY_DIR}/bin/tesh ${TESH_OPTION} --cd ${CMAKE_BINARY_DIR}/teshsuite ${CMAKE_HOME_DIRECTORY}/teshsuite/xbt/log_large_test.tesh)
   ADD_TEST(xbt-log-parallel                    ${CMAKE_BINARY_DIR}/bin/tesh ${TESH_OPTION} --cd ${CMAKE_BINARY_DIR}/teshsuite ${CMAKE_HOME_DIRECTORY}/teshsuite/xbt/parallel_log_crashtest.tesh)
-  IF(${ARCH_32_BITS})
-    ADD_TEST(xbt-mmalloc-32                    ${CMAKE_BINARY_DIR}/bin/tesh ${TESH_OPTION} --cd ${CMAKE_BINARY_DIR}/teshsuite ${CMAKE_HOME_DIRECTORY}/teshsuite/xbt/mmalloc_32.tesh)
-  ELSE(${ARCH_32_BITS})
-    ADD_TEST(xbt-mmalloc-64                    ${CMAKE_BINARY_DIR}/bin/tesh ${TESH_OPTION} --cd ${CMAKE_BINARY_DIR}/teshsuite ${CMAKE_HOME_DIRECTORY}/teshsuite/xbt/mmalloc_64.tesh)
-  ENDIF(${ARCH_32_BITS})
+  IF(HAVE_MMAP)
+    IF(${ARCH_32_BITS})
+      ADD_TEST(xbt-mmalloc-32                    ${CMAKE_BINARY_DIR}/bin/tesh ${TESH_OPTION} --cd ${CMAKE_BINARY_DIR}/teshsuite ${CMAKE_HOME_DIRECTORY}/teshsuite/xbt/mmalloc_32.tesh)
+    ELSE(${ARCH_32_BITS})
+      ADD_TEST(xbt-mmalloc-64                    ${CMAKE_BINARY_DIR}/bin/tesh ${TESH_OPTION} --cd ${CMAKE_BINARY_DIR}/teshsuite ${CMAKE_HOME_DIRECTORY}/teshsuite/xbt/mmalloc_64.tesh)
+    ENDIF(${ARCH_32_BITS})
+  ENDIF(HAVE_MMAP)
 
   # teshsuite/gras/datadesc directory
   ADD_TEST(tesh-gras-dd-mem                     ${CMAKE_BINARY_DIR}/bin/tesh ${TESH_OPTION} --cd ${CMAKE_BINARY_DIR}/teshsuite ${CMAKE_HOME_DIRECTORY}/teshsuite/gras/datadesc/datadesc_mem.tesh)
index a94ad65..669e486 100644 (file)
@@ -15,9 +15,9 @@ $ $SG_TEST_EXENV ${bindir:=.}/bittorrent ${srcdir:=.}/../msg_platform.xml ${srcd
 > [    0.000000] (8:peer@McGee) Hi, I'm joining the network with id 8
 > [ 3000.000000] (1:tracker@Jacquelin) Tracker is leaving
 > [ 5000.005340] (5:peer@Geoff) Here is my current status: 1111111111
-> [ 5000.012389] (7:peer@iRMX) Here is my current status: 1111111111
+> [ 5000.013261] (7:peer@iRMX) Here is my current status: 1111111111
 > [ 5000.048881] (2:peer@Boivin) Here is my current status: 1111111111
-> [ 5000.827195] (8:peer@McGee) Here is my current status: 1111111111
-> [ 5000.832370] (3:peer@Jean_Yves) Here is my current status: 1111111111
-> [ 5000.897047] (4:peer@TeX) Here is my current status: 1111111111
-> [ 5000.897047] (6:peer@Disney) Here is my current status: 1111111111
+> [ 5000.827966] (8:peer@McGee) Here is my current status: 1111111111
+> [ 5000.833962] (3:peer@Jean_Yves) Here is my current status: 1111111111
+> [ 5000.897269] (4:peer@TeX) Here is my current status: 1111111111
+> [ 5000.897269] (6:peer@Disney) Here is my current status: 1111111111
index 8eac54f..b5ecc88 100644 (file)
@@ -8,7 +8,6 @@
 
 XBT_LOG_NEW_DEFAULT_CATEGORY(msg_messages, "Messages specific for the message factory");
 
-#define BYTES_TO_MB(x) ((long double)x/1048576.0)
 #define BITS_TO_BYTES(x) ((x / 8) + (x % 8) ? 1 : 0)
 
 /**
@@ -22,14 +21,13 @@ XBT_LOG_NEW_DEFAULT_CATEGORY(msg_messages, "Messages specific for the message fa
 msg_task_t task_message_new(e_message_type type, const char *issuer_host_name,
                             const char *mailbox, int peer_id, int size)
 {
-  long double size_mb = BYTES_TO_MB(size);
   message_t message = xbt_new(s_message_t, 1);
   message->issuer_host_name = issuer_host_name;
   message->peer_id = peer_id;
   message->mailbox = mailbox;
   message->type = type;
-  msg_task_t task = MSG_task_create(NULL, 0, size_mb, message);
-  XBT_DEBUG("type: %d size: %.20Lg (%d)", type, size_mb, size);
+  msg_task_t task = MSG_task_create(NULL, 0, size, message);
+  XBT_DEBUG("type: %d size: %d", (int)type, size);
   return task;
 }
 
@@ -110,6 +108,7 @@ int task_message_size(e_message_type type)
     case MESSAGE_BITFIELD: size = MESSAGE_BITFIELD_SIZE; break;
     case MESSAGE_REQUEST: size = MESSAGE_REQUEST_SIZE; break;
     case MESSAGE_PIECE: size = MESSAGE_PIECE_SIZE; break;
+    case MESSAGE_CANCEL: size = MESSAGE_CANCEL_SIZE; break;
   }
   return size;
 }
index 2a87b7c..a8e98c3 100644 (file)
@@ -34,7 +34,8 @@ typedef enum {
   MESSAGE_HAVE,
   MESSAGE_BITFIELD,
   MESSAGE_REQUEST,
-  MESSAGE_PIECE
+  MESSAGE_PIECE,
+  MESSAGE_CANCEL
 } e_message_type;
 
 /**
index baa8bc1..f770a85 100644 (file)
@@ -428,6 +428,8 @@ void handle_message(peer_t peer, msg_task_t task)
       }
     }
     break;
+  case MESSAGE_CANCEL:
+    break;
   }
   //Update the peer speed.
   if (remote_peer) {
index c3fe12c..a3b7830 100644 (file)
@@ -633,16 +633,19 @@ static int remote_find_successor(node_t node, int ask_to, int id)
         XBT_DEBUG("Received a task (%p)", task_received);
         task_data_t ans_data = MSG_task_get_data(task_received);
 
-        if (MC_is_active()) {
-          // the model-checker is expected to find a counter-example here. 
-         // 
-         // As you can see in the test right below, task_received is not always equal to task_sent 
-         // (as messages from differing round can interleave). But the previous version of this code 
-         // wrongly assumed that, leading to problems. But this only occured on large platforms,
-         // leading to hardly usable traces. So we used the model-checker to track down the issue, 
-         // and we came down to this test, that explained the bug in a snap.
-          MC_assert(task_received == task_sent);
-        }
+       // Once upon a time, our code assumed that here, task_received != task_sent all the time
+       // 
+       // This assumption is wrong (as messages from differing round can interleave), leading to a bug in our code.
+       // We failed to find this bug directly, as it only occured on large platforms, leading to hardly usable traces.
+       // Instead, we used the model-checker to track down the issue by adding the following test here in the code:
+       //   if (MC_is_active()) {
+       //      MC_assert(task_received == task_sent);
+        //   }
+       // That explained the bug in a snap, with a very cool example and everything.
+       // 
+       // This MC_assert is now desactivated as the case is now properly handled in our code and we don't want the
+       //   MC to fail any further under that condition, but this comment is here to as a memorial for this first 
+       //   brillant victory of the model-checking in the SimGrid community :)
 
         if (task_received != task_sent) {
           // this is not the expected answer
index e4aa259..9c88359 100644 (file)
@@ -4,17 +4,23 @@ set(EXECUTABLE_OUTPUT_PATH "${CMAKE_CURRENT_BINARY_DIR}")
 
 add_executable(log_large_test log_large_test.c)
 add_executable(parallel_log_crashtest parallel_log_crashtest.c)
-add_executable(mmalloc_test mmalloc_test.c)
+if(HAVE_MMAP)
+  add_executable(mmalloc_test mmalloc_test.c)
+endif(HAVE_MMAP)
 
 ### Add definitions for compile
 if(NOT WIN32)
   target_link_libraries(log_large_test gras m pthread )
   target_link_libraries(parallel_log_crashtest gras m pthread )
-  target_link_libraries(mmalloc_test gras m pthread )
+  if(HAVE_MMAP)
+    target_link_libraries(mmalloc_test gras m pthread )
+  endif(HAVE_MMAP)
 else(NOT WIN32)
   target_link_libraries(log_large_test gras)
   target_link_libraries(parallel_log_crashtest gras)
-  target_link_libraries(mmalloc_test gras)
+  if(HAVE_MMAP)
+    target_link_libraries(mmalloc_test gras)
+  endif(HAVE_MMAP)
 endif(NOT WIN32)
 
 set(tesh_files