From 4eaa0006578ba94dd98c4a74d48169f75912d855 Mon Sep 17 00:00:00 2001 From: degomme Date: Wed, 16 Nov 2016 22:05:48 -0700 Subject: [PATCH] Replace deque by boost:circular_buffer_space_optimized for memory reasons. Deques are pre-allocated to a specific size and use ~1KB of memory, even when empty. As we need 2 deques per mailbox, this was quite a lot in the end. --- src/simix/smx_network.cpp | 4 ++-- src/simix/smx_network_private.h | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/simix/smx_network.cpp b/src/simix/smx_network.cpp index fcf65a3244..3999fe7d57 100644 --- a/src/simix/smx_network.cpp +++ b/src/simix/smx_network.cpp @@ -30,7 +30,7 @@ static xbt_dict_t mailboxes = xbt_dict_new_homogeneous(SIMIX_mbox_free); static void SIMIX_waitany_remove_simcall_from_actions(smx_simcall_t simcall); static void SIMIX_comm_copy_data(smx_activity_t comm); static inline void SIMIX_mbox_push(smx_mailbox_t mbox, smx_activity_t comm); -static smx_activity_t _find_matching_comm(std::deque *deque, e_smx_comm_type_t type, +static smx_activity_t _find_matching_comm(boost::circular_buffer_space_optimized *deque, e_smx_comm_type_t type, int (*match_fun)(void *, void *,smx_activity_t), void *user_data, smx_activity_t my_synchro, bool remove_matching); static void SIMIX_comm_start(smx_activity_t synchro); @@ -113,7 +113,7 @@ void SIMIX_mbox_remove(smx_mailbox_t mbox, smx_activity_t synchro) * \param type The type of communication we are looking for (comm_send, comm_recv) * \return The communication synchro if found, nullptr otherwise */ -static smx_activity_t _find_matching_comm(std::deque *deque, e_smx_comm_type_t type, +static smx_activity_t _find_matching_comm(boost::circular_buffer_space_optimized *deque, e_smx_comm_type_t type, int (*match_fun)(void *, void *,smx_activity_t), void *this_user_data, smx_activity_t my_synchro, bool remove_matching) { void* other_user_data = nullptr; diff --git a/src/simix/smx_network_private.h b/src/simix/smx_network_private.h index 9c155946ec..cf5651883d 100644 --- a/src/simix/smx_network_private.h +++ b/src/simix/smx_network_private.h @@ -7,10 +7,10 @@ #ifndef _SIMIX_NETWORK_PRIVATE_H #define _SIMIX_NETWORK_PRIVATE_H -#include #include #include +#include #include @@ -27,16 +27,16 @@ namespace simix { class Mailbox { public: - Mailbox(const char* name) : piface_(this), name(xbt_strdup(name)) {} + Mailbox(const char* name) : piface_(this), name(xbt_strdup(name)), comm_queue(1000), done_comm_queue(1000) {} ~Mailbox() { xbt_free(name); } simgrid::s4u::Mailbox piface_; // Our interface char* name; - std::deque comm_queue; + boost::circular_buffer_space_optimized comm_queue; boost::intrusive_ptr permanent_receiver; //process which the mailbox is attached to - std::deque done_comm_queue;//messages already received in the permanent receive mode + boost::circular_buffer_space_optimized done_comm_queue;//messages already received in the permanent receive mode }; } -- 2.20.1