Skip to content

Commit 8252a1f

Browse files
committed
DPL: out of line metrics related methods
1 parent 7423aa7 commit 8252a1f

File tree

2 files changed

+61
-57
lines changed

2 files changed

+61
-57
lines changed

Framework/Core/include/Framework/DeviceMetricsInfo.h

Lines changed: 3 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
#ifndef O2_FRAMEWORK_DEVICEMETRICSINFO_H_
1313
#define O2_FRAMEWORK_DEVICEMETRICSINFO_H_
1414

15-
#include "Framework/RuntimeError.h"
1615
#include "Framework/CompilerBuiltins.h"
1716
#include "Framework/Traits.h"
1817
#include <array>
@@ -21,6 +20,7 @@
2120
#include <span>
2221
#include <string>
2322
#include <vector>
23+
#include <iosfwd>
2424

2525
namespace o2::framework
2626
{
@@ -191,62 +191,8 @@ struct DeviceMetricsInfoHelpers {
191191
}
192192
}
193193

194-
static void clearMetrics(std::vector<DeviceMetricsInfo>& infos)
195-
{
196-
for (auto& info : infos) {
197-
info.intMetrics.clear();
198-
info.uint64Metrics.clear();
199-
info.stringMetrics.clear(); // We do not keep so many strings as metrics as history is less relevant.
200-
info.floatMetrics.clear();
201-
info.enumMetrics.clear();
202-
info.intTimestamps.clear();
203-
info.uint64Timestamps.clear();
204-
info.floatTimestamps.clear();
205-
info.stringTimestamps.clear();
206-
info.enumTimestamps.clear();
207-
info.max.clear();
208-
info.min.clear();
209-
info.average.clear();
210-
info.minDomain.clear();
211-
info.maxDomain.clear();
212-
info.metricLabels.clear();
213-
info.metricPrefixes.clear();
214-
info.metricLabelsAlphabeticallySortedIdx.clear();
215-
info.metricLabelsPrefixesSortedIdx.clear();
216-
info.metrics.clear();
217-
info.changed.clear();
218-
}
219-
}
220-
static size_t metricsStorageSize(std::span<DeviceMetricsInfo const> infos)
221-
{
222-
// Count the size of the metrics storage
223-
size_t totalSize = 0;
224-
for (auto& info : infos) {
225-
totalSize += info.intMetrics.size() * sizeof(MetricsStorage<int>);
226-
totalSize += info.uint64Metrics.size() * sizeof(MetricsStorage<uint64_t>);
227-
totalSize += info.stringMetrics.size() * sizeof(MetricsStorage<StringMetric>);
228-
totalSize += info.floatMetrics.size() * sizeof(MetricsStorage<float>);
229-
totalSize += info.enumMetrics.size() * sizeof(MetricsStorage<int8_t>);
230-
totalSize += info.intTimestamps.size() * sizeof(TimestampsStorage<int>);
231-
totalSize += info.uint64Timestamps.size() * sizeof(TimestampsStorage<uint64_t>);
232-
totalSize += info.floatTimestamps.size() * sizeof(TimestampsStorage<float>);
233-
totalSize += info.stringTimestamps.size() * sizeof(TimestampsStorage<StringMetric>);
234-
totalSize += info.enumTimestamps.size() * sizeof(TimestampsStorage<int8_t>);
235-
totalSize += info.max.size() * sizeof(float);
236-
totalSize += info.min.size() * sizeof(float);
237-
totalSize += info.average.size() * sizeof(float);
238-
totalSize += info.minDomain.size() * sizeof(size_t);
239-
totalSize += info.maxDomain.size() * sizeof(size_t);
240-
totalSize += info.metricLabels.size() * sizeof(MetricLabel);
241-
totalSize += info.metricPrefixes.size() * sizeof(MetricPrefix);
242-
totalSize += info.metricLabelsAlphabeticallySortedIdx.size() * sizeof(MetricLabelIndex);
243-
totalSize += info.metricLabelsPrefixesSortedIdx.size() * sizeof(MetricPrefixIndex);
244-
totalSize += info.metrics.size() * sizeof(MetricInfo);
245-
totalSize += info.changed.size() * sizeof(bool);
246-
}
247-
248-
return totalSize;
249-
}
194+
static void clearMetrics(std::vector<DeviceMetricsInfo>& infos);
195+
static size_t metricsStorageSize(std::span<DeviceMetricsInfo const> infos);
250196
};
251197

252198
} // namespace o2::framework

Framework/Core/src/DeviceMetricsInfo.cxx

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,4 +50,62 @@ std::ostream& operator<<(std::ostream& oss, MetricType const& val)
5050
return oss;
5151
}
5252

53+
void DeviceMetricsInfoHelpers::clearMetrics(std::vector<DeviceMetricsInfo>& infos)
54+
{
55+
for (auto& info : infos) {
56+
info.intMetrics.clear();
57+
info.uint64Metrics.clear();
58+
info.stringMetrics.clear(); // We do not keep so many strings as metrics as history is less relevant.
59+
info.floatMetrics.clear();
60+
info.enumMetrics.clear();
61+
info.intTimestamps.clear();
62+
info.uint64Timestamps.clear();
63+
info.floatTimestamps.clear();
64+
info.stringTimestamps.clear();
65+
info.enumTimestamps.clear();
66+
info.max.clear();
67+
info.min.clear();
68+
info.average.clear();
69+
info.minDomain.clear();
70+
info.maxDomain.clear();
71+
info.metricLabels.clear();
72+
info.metricPrefixes.clear();
73+
info.metricLabelsAlphabeticallySortedIdx.clear();
74+
info.metricLabelsPrefixesSortedIdx.clear();
75+
info.metrics.clear();
76+
info.changed.clear();
77+
}
78+
}
79+
80+
size_t DeviceMetricsInfoHelpers::metricsStorageSize(std::span<DeviceMetricsInfo const> infos)
81+
{
82+
// Count the size of the metrics storage
83+
size_t totalSize = 0;
84+
for (auto& info : infos) {
85+
totalSize += info.intMetrics.size() * sizeof(MetricsStorage<int>);
86+
totalSize += info.uint64Metrics.size() * sizeof(MetricsStorage<uint64_t>);
87+
totalSize += info.stringMetrics.size() * sizeof(MetricsStorage<StringMetric>);
88+
totalSize += info.floatMetrics.size() * sizeof(MetricsStorage<float>);
89+
totalSize += info.enumMetrics.size() * sizeof(MetricsStorage<int8_t>);
90+
totalSize += info.intTimestamps.size() * sizeof(TimestampsStorage<int>);
91+
totalSize += info.uint64Timestamps.size() * sizeof(TimestampsStorage<uint64_t>);
92+
totalSize += info.floatTimestamps.size() * sizeof(TimestampsStorage<float>);
93+
totalSize += info.stringTimestamps.size() * sizeof(TimestampsStorage<StringMetric>);
94+
totalSize += info.enumTimestamps.size() * sizeof(TimestampsStorage<int8_t>);
95+
totalSize += info.max.size() * sizeof(float);
96+
totalSize += info.min.size() * sizeof(float);
97+
totalSize += info.average.size() * sizeof(float);
98+
totalSize += info.minDomain.size() * sizeof(size_t);
99+
totalSize += info.maxDomain.size() * sizeof(size_t);
100+
totalSize += info.metricLabels.size() * sizeof(MetricLabel);
101+
totalSize += info.metricPrefixes.size() * sizeof(MetricPrefix);
102+
totalSize += info.metricLabelsAlphabeticallySortedIdx.size() * sizeof(MetricLabelIndex);
103+
totalSize += info.metricLabelsPrefixesSortedIdx.size() * sizeof(MetricPrefixIndex);
104+
totalSize += info.metrics.size() * sizeof(MetricInfo);
105+
totalSize += info.changed.size() * sizeof(bool);
106+
}
107+
108+
return totalSize;
109+
}
110+
53111
} // namespace o2::framework

0 commit comments

Comments
 (0)