Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' into simgrid-fork-changelog-plugins
authorMartin Quinson <martin.quinson@ens-rennes.fr>
Fri, 3 Nov 2023 16:55:49 +0000 (17:55 +0100)
committerMartin Quinson <martin.quinson@ens-rennes.fr>
Fri, 3 Nov 2023 16:55:49 +0000 (17:55 +0100)
1  2 
ChangeLog
docs/source/Release_Notes.rst

diff --combined ChangeLog
+++ b/ChangeLog
@@@ -6,12 -6,13 +6,16 @@@ S4U
   - New function NetZone::add_route(host1, host2, links) when you don't need gateways
     Also add a variant with s4u::Link, when you don't want to specify the directions
     on symmetric routes.
-  - Introduce a Mailbox::get_async() with no payload parameter. You can use the new 
+  - Introduce a Mailbox::get_async() with no payload parameter. You can use the new
     Comm::get_payload() once the communication is over to retrieve the payload.
   - Implement recursive mutexes. Simply pass true to the constructor to get one.
 + - Update of the Task model. Each Task now consists of a dispatcher, a collector
 +   and one or more instances. The parallelism degree of each of these can be set.
 +   Several examples have been added or modified accordingly.
+  - Introduce a new MessageQueue abstraction and associated Mess simulated object.
+    The behavior of a MessageQueue is similar to that of a Mailbox, but intended for
+    control messages that do not incur any simulated cost. Information is automagically
+    transported over thin air between producer and consumer. See examples/cpp/mess-wait
  
  SMPI:
   - New SMPI_app_instance_join(): wait for the completion of a started MPI instance
@@@ -35,11 -36,17 +39,19 @@@ C API
  Plugins:
   - Revamp the battery plugin: rewrite completely the API, for a better usability.
     The examples were updated accordingly.
 +   The battery can now act as a simple connector. See battery-connector example.
 + - Revamp of the Photovoltaic plugin: now called SolarPanel and complete rewrite of the API 
+  - Revamp of the Photovoltaic plugin: now called SolarPanel and complete rewrite of the API
   - Add chiller plugin: enable the management of chillers consuming electrical energy
     to compensate heat generated by hosts.
  
+ Kernel:
+  - optimize an internal data structure (replace boost::circular_buffer_space_optimized by
+    std::deque to store pending and unmatched Comms in Mailboxes). It is actually a revert
+    to what was used a few years back. The boost structure had a lower memory footprint than
+    deques, but it appeared that their "space_optimized" character was generating a huge lot
+    of refcount changes on the stored Comms.
  ----------------------------------------------------------------------------
  
  SimGrid (3.34) June 26. 2023
@@@ -626,10 -626,9 +626,10 @@@ reacting to every signals of a class, a
  completion) are now specialized by activity class. That is, callbacks registered in Exec::on_suspend_cb will not be fired for
  Comms nor Ios
  
 -Two new useful plugins were added: The :ref:`battery plugin<plugin_battery>` can be used to create batteries that get discharged
 -by the energy consumption of a given host, while the :ref:`solar panel plugin <plugin_solar_panel>` can be used to create
 -solar panels which energy production depends on the solar irradiance. These plugins could probably be better integrated
 +Three new useful plugins were added: The :ref:`battery plugin<plugin_battery>` can be used to create batteries that get discharged
 +by the energy consumption of a given host, the :ref:`solar panel plugin <plugin_solar_panel>` can be used to create
 +solar panels which energy production depends on the solar irradiance and the :ref:`chiller plugin <plugin_chiller>` can be used to
 +create chillers and compensate the heat generated by hosts. These plugins could probably be better integrated
  in the framework, but our goal is to include in SimGrid the building blocks upon which everybody would agree, while the model
  elements that are more arguable are provided as plugins, in the hope that the users will carefully assess the plugins and adapt
  them to their specific needs before usage. Here for example, there is several models of batteries (the one provided does not
@@@ -668,7 -667,13 +668,13 @@@ This feature is not very usable yet, a
  
  Version 3.35 (TBD)
  ------------------
+ **On the interface front**, we introduced a new MessageQueue abstraction and associated Mess simulated object. The behavior of a
+ MessageQueue is similar to that of a Mailbox, but intended for control messages that do not incur any simulated cost.
+ Information is automagically transported over thin air between producer and consumer. Internally, the implementation is very
+ similar to Mailboxes and Comms, only simpler. The motivation for this new abstraction came from a scalability issue observed in
+ the WRENCH framework, which is heavily based on control messages. When the simulated size of these messages is set to 0, it creates
+ very short lived network actions (i.e., lasting for only the route latency) that tend to overwhelm the LMM. Switching from Mailbox
+ to MessageQueue for such information exchange avoid this problem and greatly improves the scalability of WRENCH-based simulators.
  
  .. |br| raw:: html