diff --git a/Framework/Core/include/Framework/DeviceMetricsInfo.h b/Framework/Core/include/Framework/DeviceMetricsInfo.h index d55f1cb44f71d..ad143b7ef9373 100644 --- a/Framework/Core/include/Framework/DeviceMetricsInfo.h +++ b/Framework/Core/include/Framework/DeviceMetricsInfo.h @@ -12,7 +12,6 @@ #ifndef O2_FRAMEWORK_DEVICEMETRICSINFO_H_ #define O2_FRAMEWORK_DEVICEMETRICSINFO_H_ -#include "Framework/RuntimeError.h" #include "Framework/CompilerBuiltins.h" #include "Framework/Traits.h" #include @@ -21,6 +20,7 @@ #include #include #include +#include namespace o2::framework { @@ -191,62 +191,8 @@ struct DeviceMetricsInfoHelpers { } } - static void clearMetrics(std::vector& infos) - { - for (auto& info : infos) { - info.intMetrics.clear(); - info.uint64Metrics.clear(); - info.stringMetrics.clear(); // We do not keep so many strings as metrics as history is less relevant. - info.floatMetrics.clear(); - info.enumMetrics.clear(); - info.intTimestamps.clear(); - info.uint64Timestamps.clear(); - info.floatTimestamps.clear(); - info.stringTimestamps.clear(); - info.enumTimestamps.clear(); - info.max.clear(); - info.min.clear(); - info.average.clear(); - info.minDomain.clear(); - info.maxDomain.clear(); - info.metricLabels.clear(); - info.metricPrefixes.clear(); - info.metricLabelsAlphabeticallySortedIdx.clear(); - info.metricLabelsPrefixesSortedIdx.clear(); - info.metrics.clear(); - info.changed.clear(); - } - } - static size_t metricsStorageSize(std::span infos) - { - // Count the size of the metrics storage - size_t totalSize = 0; - for (auto& info : infos) { - totalSize += info.intMetrics.size() * sizeof(MetricsStorage); - totalSize += info.uint64Metrics.size() * sizeof(MetricsStorage); - totalSize += info.stringMetrics.size() * sizeof(MetricsStorage); - totalSize += info.floatMetrics.size() * sizeof(MetricsStorage); - totalSize += info.enumMetrics.size() * sizeof(MetricsStorage); - totalSize += info.intTimestamps.size() * sizeof(TimestampsStorage); - totalSize += info.uint64Timestamps.size() * sizeof(TimestampsStorage); - totalSize += info.floatTimestamps.size() * sizeof(TimestampsStorage); - totalSize += info.stringTimestamps.size() * sizeof(TimestampsStorage); - totalSize += info.enumTimestamps.size() * sizeof(TimestampsStorage); - totalSize += info.max.size() * sizeof(float); - totalSize += info.min.size() * sizeof(float); - totalSize += info.average.size() * sizeof(float); - totalSize += info.minDomain.size() * sizeof(size_t); - totalSize += info.maxDomain.size() * sizeof(size_t); - totalSize += info.metricLabels.size() * sizeof(MetricLabel); - totalSize += info.metricPrefixes.size() * sizeof(MetricPrefix); - totalSize += info.metricLabelsAlphabeticallySortedIdx.size() * sizeof(MetricLabelIndex); - totalSize += info.metricLabelsPrefixesSortedIdx.size() * sizeof(MetricPrefixIndex); - totalSize += info.metrics.size() * sizeof(MetricInfo); - totalSize += info.changed.size() * sizeof(bool); - } - - return totalSize; - } + static void clearMetrics(std::vector& infos); + static size_t metricsStorageSize(std::span infos); }; } // namespace o2::framework diff --git a/Framework/Core/src/DeviceMetricsInfo.cxx b/Framework/Core/src/DeviceMetricsInfo.cxx index 9a208c4535554..ccb8d5d2e6d8f 100644 --- a/Framework/Core/src/DeviceMetricsInfo.cxx +++ b/Framework/Core/src/DeviceMetricsInfo.cxx @@ -50,4 +50,62 @@ std::ostream& operator<<(std::ostream& oss, MetricType const& val) return oss; } +void DeviceMetricsInfoHelpers::clearMetrics(std::vector& infos) +{ + for (auto& info : infos) { + info.intMetrics.clear(); + info.uint64Metrics.clear(); + info.stringMetrics.clear(); // We do not keep so many strings as metrics as history is less relevant. + info.floatMetrics.clear(); + info.enumMetrics.clear(); + info.intTimestamps.clear(); + info.uint64Timestamps.clear(); + info.floatTimestamps.clear(); + info.stringTimestamps.clear(); + info.enumTimestamps.clear(); + info.max.clear(); + info.min.clear(); + info.average.clear(); + info.minDomain.clear(); + info.maxDomain.clear(); + info.metricLabels.clear(); + info.metricPrefixes.clear(); + info.metricLabelsAlphabeticallySortedIdx.clear(); + info.metricLabelsPrefixesSortedIdx.clear(); + info.metrics.clear(); + info.changed.clear(); + } +} + +size_t DeviceMetricsInfoHelpers::metricsStorageSize(std::span infos) +{ + // Count the size of the metrics storage + size_t totalSize = 0; + for (auto& info : infos) { + totalSize += info.intMetrics.size() * sizeof(MetricsStorage); + totalSize += info.uint64Metrics.size() * sizeof(MetricsStorage); + totalSize += info.stringMetrics.size() * sizeof(MetricsStorage); + totalSize += info.floatMetrics.size() * sizeof(MetricsStorage); + totalSize += info.enumMetrics.size() * sizeof(MetricsStorage); + totalSize += info.intTimestamps.size() * sizeof(TimestampsStorage); + totalSize += info.uint64Timestamps.size() * sizeof(TimestampsStorage); + totalSize += info.floatTimestamps.size() * sizeof(TimestampsStorage); + totalSize += info.stringTimestamps.size() * sizeof(TimestampsStorage); + totalSize += info.enumTimestamps.size() * sizeof(TimestampsStorage); + totalSize += info.max.size() * sizeof(float); + totalSize += info.min.size() * sizeof(float); + totalSize += info.average.size() * sizeof(float); + totalSize += info.minDomain.size() * sizeof(size_t); + totalSize += info.maxDomain.size() * sizeof(size_t); + totalSize += info.metricLabels.size() * sizeof(MetricLabel); + totalSize += info.metricPrefixes.size() * sizeof(MetricPrefix); + totalSize += info.metricLabelsAlphabeticallySortedIdx.size() * sizeof(MetricLabelIndex); + totalSize += info.metricLabelsPrefixesSortedIdx.size() * sizeof(MetricPrefixIndex); + totalSize += info.metrics.size() * sizeof(MetricInfo); + totalSize += info.changed.size() * sizeof(bool); + } + + return totalSize; +} + } // namespace o2::framework