Skip to content

Commit 5d533bf

Browse files
committed
DPL: mitigate impact of Monitoring::send.
1 parent 10b2c38 commit 5d533bf

File tree

2 files changed

+11
-4
lines changed

2 files changed

+11
-4
lines changed

Framework/Core/include/Framework/DataRelayer.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ class DataRelayer {
9797
std::vector<bool> mForwardingMask;
9898
CompletionPolicy mCompletionPolicy;
9999
std::vector<size_t> mDistinctRoutesIndex;
100+
static std::vector<std::string> sMetricsNames;
100101
};
101102

102103
} // namespace framework

Framework/Core/src/DataRelayer.cxx

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ DataRelayer::DataRelayer(const CompletionPolicy& policy,
6868
{
6969
setPipelineLength(DEFAULT_PIPELINE_LENGTH);
7070
for (size_t ci = 0; ci < mCache.size(); ci++) {
71-
metrics.send({ 0, std::string("data_relayer/") + std::to_string(ci) });
71+
metrics.send({ 0, sMetricsNames[ci] });
7272
}
7373
}
7474

@@ -194,7 +194,7 @@ DataRelayer::relay(std::unique_ptr<FairMQMessage> &&header,
194194
for (size_t ai = slot.index * numInputTypes, ae = ai + numInputTypes; ai != ae; ++ai) {
195195
cache[ai].header.reset(nullptr);
196196
cache[ai].payload.reset(nullptr);
197-
metrics.send({ 0, std::string("data_relayer/") + std::to_string(ai) });
197+
metrics.send({ 0, sMetricsNames[ai] });
198198
}
199199
};
200200

@@ -213,7 +213,7 @@ DataRelayer::relay(std::unique_ptr<FairMQMessage> &&header,
213213
auto slot = index.bookTimeslice(timeslice);
214214
auto cacheIdx = numInputTypes * slot.index + input;
215215
PartRef& currentPart = cache[cacheIdx];
216-
metrics.send({ 1, std::string("data_relayer/") + std::to_string(cacheIdx) });
216+
metrics.send({ 1, sMetricsNames[cacheIdx] });
217217
PartRef ref{std::move(header), std::move(payload)};
218218
currentPart = std::move(ref);
219219
assert(header.get() == nullptr && payload.get() == nullptr);
@@ -344,7 +344,7 @@ std::vector<std::unique_ptr<FairMQMessage>>
344344
// automatically discarded by the relay method.
345345
auto moveHeaderPayloadToOutput = [&messages, &cache, &index, &numInputTypes, &metrics](TimesliceSlot s, size_t arg) {
346346
auto cacheId = s.index * numInputTypes + arg;
347-
metrics.send({ 2, "data_relayer/" + std::to_string(cacheId) });
347+
metrics.send({ 2, sMetricsNames[cacheId] });
348348
messages.emplace_back(std::move(cache[cacheId].header));
349349
messages.emplace_back(std::move(cache[cacheId].payload));
350350
index.markAsObsolete(s);
@@ -390,7 +390,13 @@ DataRelayer::setPipelineLength(size_t s) {
390390
mCache.resize(numInputTypes * mTimesliceIndex.size());
391391
mMetrics.send({ (int)numInputTypes, "data_relayer/h" });
392392
mMetrics.send({ (int)mTimesliceIndex.size(), "data_relayer/w" });
393+
sMetricsNames.resize(mCache.size());
394+
for (size_t i = 0; i < sMetricsNames.size(); ++i) {
395+
sMetricsNames[i] = std::string("data_relayer/") + std::to_string(i);
396+
}
393397
}
394398

399+
std::vector<std::string> DataRelayer::sMetricsNames;
400+
395401
}
396402
}

0 commit comments

Comments
 (0)