]> AND Private Git Repository - loba.git/commitdiff
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
Make messages intelligent about their size.
authorArnaud Giersch <arnaud.giersch@iut-bm.univ-fcomte.fr>
Tue, 22 Feb 2011 22:08:07 +0000 (23:08 +0100)
committerArnaud Giersch <arnaud.giersch@iut-bm.univ-fcomte.fr>
Tue, 22 Feb 2011 22:08:07 +0000 (23:08 +0100)
communicator.cpp
messages.cpp
messages.h

index ecb207ac734b7bd23da0b0137c7d8b090cbc180f..7abdf763a175aded0947ef48f88cdccb9dfe8b95 100644 (file)
@@ -6,7 +6,6 @@
 XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(comm);
 
 #include "misc.h"
-#include "options.h"
 #include "simgrid_features.h"
 #include "tracing.h"
 
@@ -55,10 +54,7 @@ communicator::~communicator()
 msg_comm_t communicator::real_send(const char* dest, message* msg)
 {
     XBT_DEBUG("send %s to %s", msg->to_string().c_str(), dest);
-    double msg_size = sizeof *msg;
-    if (msg->get_type() == message::LOAD)
-        msg_size += opt::comm_cost(msg->get_amount());
-    m_task_t task = MSG_task_create("message", 0.0, msg_size, msg);    
+    m_task_t task = MSG_task_create("message", 0.0, msg->get_size(), msg);
     TRACE_msg_set_task_category(task,
                                 msg->get_type() == message::LOAD ?
                                 TRACE_CAT_DATA : TRACE_CAT_CTRL);
index 0abf913987782ce2399d3f9285c20235c45135d6..f5df3969b38db3d09707f097e93370aaa19dbcb3 100644 (file)
@@ -4,6 +4,7 @@
 XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(comm);
 
 #include "misc.h"
+#include "options.h"
 
 #include "messages.h"
 
@@ -16,6 +17,15 @@ std::string message::to_string()
     return oss.str();
 }
 
+double message::get_size() const
+{
+    // arbitrary: 8 for type, and 8 for amount
+    double size = 16;
+    if (type == LOAD)
+        size += opt::comm_cost(amount);
+    return size;
+}
+
 void message_queue::push(m_task_t task)
 {
     mutex.acquire();
index 70d675da7994f971efc41aca6bc4844f810a85ad..605b3be1e42282fa87bf5ac5cdb3cf5a6f9bd292 100644 (file)
@@ -14,6 +14,7 @@ public:
 
     message_type get_type() const       { return type;   }
     double get_amount() const           { return amount; }
+    double get_size() const;
 
     std::string to_string();