diff --git a/fairmq/devices/FairMQBenchmarkSampler.h b/fairmq/devices/FairMQBenchmarkSampler.h index 51d5980d..25f9afdc 100644 --- a/fairmq/devices/FairMQBenchmarkSampler.h +++ b/fairmq/devices/FairMQBenchmarkSampler.h @@ -32,6 +32,7 @@ class FairMQBenchmarkSampler : public FairMQDevice , fMemSet(false) , fNumParts(1) , fMsgSize(10000) + , fMsgAlignment(0) , fMsgRate(0) , fNumIterations(0) , fMaxIterations(0) @@ -44,6 +45,7 @@ class FairMQBenchmarkSampler : public FairMQDevice fMemSet = fConfig->GetProperty("memset"); fNumParts = fConfig->GetProperty("num-parts"); fMsgSize = fConfig->GetProperty("msg-size"); + fMsgAlignment = fConfig->GetProperty("msg-alignment"); fMsgRate = fConfig->GetProperty("msg-rate"); fMaxIterations = fConfig->GetProperty("max-iterations"); fOutChannelName = fConfig->GetProperty("out-channel"); @@ -64,7 +66,7 @@ class FairMQBenchmarkSampler : public FairMQDevice FairMQParts parts; for (size_t i = 0; i < fNumParts; ++i) { - parts.AddPart(dataOutChannel.NewMessage(fMsgSize)); + parts.AddPart(dataOutChannel.NewMessage(fMsgSize, fair::mq::Alignment{fMsgAlignment})); if (fMemSet) { std::memset(parts.At(i)->GetData(), 0, parts.At(i)->GetSize()); } @@ -79,7 +81,7 @@ class FairMQBenchmarkSampler : public FairMQDevice ++fNumIterations; } } else { - FairMQMessagePtr msg(dataOutChannel.NewMessage(fMsgSize)); + FairMQMessagePtr msg(dataOutChannel.NewMessage(fMsgSize, fair::mq::Alignment{fMsgAlignment})); if (fMemSet) { std::memset(msg->GetData(), 0, msg->GetSize()); } @@ -111,6 +113,7 @@ class FairMQBenchmarkSampler : public FairMQDevice bool fMemSet; size_t fNumParts; size_t fMsgSize; + size_t fMsgAlignment; std::atomic fMsgCounter; float fMsgRate; uint64_t fNumIterations; diff --git a/fairmq/run/runBenchmarkSampler.cxx b/fairmq/run/runBenchmarkSampler.cxx index 93f62584..d4a2a991 100644 --- a/fairmq/run/runBenchmarkSampler.cxx +++ b/fairmq/run/runBenchmarkSampler.cxx @@ -19,6 +19,7 @@ void addCustomOptions(bpo::options_description& options) ("memset", bpo::value()->default_value(false), "Memset allocated buffers to 0") ("num-parts", bpo::value()->default_value(1), "Number of parts to send. 1 will send single messages, not parts") ("msg-size", bpo::value()->default_value(1000000), "Message size in bytes") + ("msg-alignment", bpo::value()->default_value(0), "Message alignment") ("max-iterations", bpo::value()->default_value(0), "Number of run iterations (0 - infinite)") ("msg-rate", bpo::value()->default_value(0), "Msg rate limit in maximum number of messages per second"); }