mirror of
https://github.com/FairRootGroup/FairMQ.git
synced 2025-10-15 09:31:45 +00:00
feat: Add new tunable --shm-metadata-msg-size
The shm metadata msg will be right-padded to the given size. This tunable may be used to saturate the kernel msg buffers more quickly with the effect that the ZeroMQ message queue size - on which the FairMQ shmem transport relies upon - behaves more accurately for very small queue sizes. This introduces a change for the meta msg format in the multipart case: old: | MetaHeader 1 | ... | MetaHeader n | new: | n | MetaHeader 1 | ... | MetaHeader n | padded to fMetadataMsgSize | where `n` is a `size_t` and contains the number of following meta headers. Previously, this number was infered from the msg buffer size itself which is no longer possible due to the potential padding. Implements #432
This commit is contained in:
committed by
Dennis Klein
parent
491a943c63
commit
f278e7e312
@@ -29,7 +29,7 @@
|
||||
#include <algorithm> // max
|
||||
#include <chrono>
|
||||
#include <condition_variable>
|
||||
#include <cstddef> // max_align_t
|
||||
#include <cstddef> // max_align_t, std::size_t
|
||||
#include <cstdlib> // getenv
|
||||
#include <cstring> // memcpy
|
||||
#include <memory> // make_unique
|
||||
@@ -151,6 +151,7 @@ class Manager
|
||||
, fBadAllocMaxAttempts(1)
|
||||
, fBadAllocAttemptIntervalInMs(config ? config->GetProperty<int>("bad-alloc-attempt-interval", 50) : 50)
|
||||
, fNoCleanup(config ? config->GetProperty<bool>("shm-no-cleanup", false) : false)
|
||||
, fMetadataMsgSize(config ? config->GetProperty<std::size_t>("shm-metadata-msg-size", 0) : 0)
|
||||
{
|
||||
using namespace boost::interprocess;
|
||||
|
||||
@@ -828,6 +829,8 @@ class Manager
|
||||
}
|
||||
}
|
||||
|
||||
auto GetMetadataMsgSize() const noexcept { return fMetadataMsgSize; }
|
||||
|
||||
~Manager()
|
||||
{
|
||||
fRegionsGen += 1; // signal TL cache invalidation
|
||||
@@ -884,6 +887,8 @@ class Manager
|
||||
int fBadAllocMaxAttempts;
|
||||
int fBadAllocAttemptIntervalInMs;
|
||||
bool fNoCleanup;
|
||||
|
||||
std::size_t fMetadataMsgSize;
|
||||
};
|
||||
|
||||
} // namespace fair::mq::shmem
|
||||
|
Reference in New Issue
Block a user