diff --git a/fairmq/shmem/Common.h b/fairmq/shmem/Common.h index a2f9acf5..3da2e605 100644 --- a/fairmq/shmem/Common.h +++ b/fairmq/shmem/Common.h @@ -58,19 +58,22 @@ struct RegionInfo : fPath("", alloc) , fCreationFlags(0) , fUserFlags(0) + , fSize(0) , fDestroyed(false) {} - RegionInfo(const char* path, const int flags, const uint64_t userFlags, const VoidAlloc& alloc) + RegionInfo(const char* path, int flags, uint64_t userFlags, uint64_t size, const VoidAlloc& alloc) : fPath(path, alloc) , fCreationFlags(flags) , fUserFlags(userFlags) + , fSize(size) , fDestroyed(false) {} Str fPath; int fCreationFlags; uint64_t fUserFlags; + uint64_t fSize; bool fDestroyed; }; diff --git a/fairmq/shmem/Monitor.cxx b/fairmq/shmem/Monitor.cxx index 4e97db4c..38ad76e3 100644 --- a/fairmq/shmem/Monitor.cxx +++ b/fairmq/shmem/Monitor.cxx @@ -267,6 +267,7 @@ bool Monitor::PrintShm(const ShmId& shmId) ss << "\n unmanaged regions:"; for (const auto& r : *shmRegions) { ss << "\n [" << r.first << "]: " << (r.second.fDestroyed ? "destroyed" : "alive"); + ss << ", size: " << r.second.fSize; try { boost::interprocess::message_queue q(open_only, std::string("fmq_" + std::string(shmId) + "_rgq_" + to_string(r.first)).c_str()); diff --git a/fairmq/shmem/UnmanagedRegion.h b/fairmq/shmem/UnmanagedRegion.h index 592b4d36..651630ec 100644 --- a/fairmq/shmem/UnmanagedRegion.h +++ b/fairmq/shmem/UnmanagedRegion.h @@ -119,7 +119,7 @@ struct UnmanagedRegion } if (!remote) { - Register(shmId, cfg); + Register(shmId, cfg, size); } LOG(trace) << "shmem: initialized region: " << fName << " (" << (remote ? "remote" : "local") << ")"; @@ -223,7 +223,7 @@ struct UnmanagedRegion return regionCfg; } - static void Register(const std::string& shmId, RegionConfig& cfg) + static void Register(const std::string& shmId, RegionConfig& cfg, uint64_t size) { using namespace boost::interprocess; managed_shared_memory mngSegment(open_or_create, std::string("fmq_" + shmId + "_mng").c_str(), 6553600); @@ -236,7 +236,7 @@ struct UnmanagedRegion eventCounter = mngSegment.construct(unique_instance)(0); } - bool newShmRegionCreated = shmRegions->emplace(cfg.id.value(), RegionInfo(cfg.path.c_str(), cfg.creationFlags, cfg.userFlags, alloc)).second; + bool newShmRegionCreated = shmRegions->emplace(cfg.id.value(), RegionInfo(cfg.path.c_str(), cfg.creationFlags, cfg.userFlags, size, alloc)).second; if (newShmRegionCreated) { (eventCounter->fCount)++; }