Skip to content

Commit c9f7b86

Browse files
authored
DPL: do not dump metrics which are empty (#7388)
1 parent 255abdf commit c9f7b86

File tree

1 file changed

+22
-18
lines changed

1 file changed

+22
-18
lines changed

Framework/Core/src/ResourcesMonitoringHelper.cxx

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -33,19 +33,18 @@ inline static std::string retriveValue(const std::reference_wrapper<const String
3333

3434
template <typename T>
3535
boost::property_tree::ptree fillNodeWithValue(const DeviceMetricsInfo& deviceMetrics,
36-
const T& metricsStorage, size_t labelIndex, size_t storageIndex)
36+
const T& metricsStorage, size_t labelIndex, size_t storeIndex)
3737
{
38-
39-
unsigned int loopRange = std::min(deviceMetrics.metrics[labelIndex].filledMetrics, metricsStorage[storageIndex].size());
38+
unsigned int loopRange = std::min(deviceMetrics.metrics[labelIndex].filledMetrics, metricsStorage[storeIndex].size());
4039
boost::property_tree::ptree metricNode;
4140

4241
for (unsigned int idx = 0; idx < loopRange; ++idx) {
4342
boost::property_tree::ptree values;
4443
values.add("timestamp", deviceMetrics.timestamps[labelIndex][idx]);
4544
if constexpr (std::is_arithmetic_v<T>) {
46-
values.add("value", std::to_string(retriveValue(std::cref(metricsStorage[storageIndex][idx]))));
45+
values.add("value", std::to_string(retriveValue(std::cref(metricsStorage[storeIndex][idx]))));
4746
} else {
48-
values.add("value", retriveValue(std::cref(metricsStorage[storageIndex][idx])));
47+
values.add("value", retriveValue(std::cref(metricsStorage[storeIndex][idx])));
4948
}
5049
metricNode.push_back(std::make_pair("", values));
5150
}
@@ -81,26 +80,30 @@ bool ResourcesMonitoringHelper::dumpMetricsToJSON(const std::vector<DeviceMetric
8180
if (std::find_if(std::begin(performanceMetrics), std::end(performanceMetrics), same) == performanceMetrics.end()) {
8281
continue;
8382
}
83+
auto storeIdx = deviceMetrics.metrics[mi].storeIdx;
8484

85+
if (deviceMetrics.metrics[mi].filledMetrics == 0) {
86+
continue;
87+
}
8588
//if so
8689

8790
boost::property_tree::ptree metricNode;
8891

8992
switch (deviceMetrics.metrics[mi].type) {
9093
case MetricType::Int:
91-
metricNode = fillNodeWithValue(deviceMetrics, deviceMetrics.intMetrics, mi, deviceMetrics.metrics[mi].storeIdx);
94+
metricNode = fillNodeWithValue(deviceMetrics, deviceMetrics.intMetrics, mi, storeIdx);
9295
break;
9396

9497
case MetricType::Float:
95-
metricNode = fillNodeWithValue(deviceMetrics, deviceMetrics.floatMetrics, mi, deviceMetrics.metrics[mi].storeIdx);
98+
metricNode = fillNodeWithValue(deviceMetrics, deviceMetrics.floatMetrics, mi, storeIdx);
9699
break;
97100

98101
case MetricType::String:
99-
metricNode = fillNodeWithValue(deviceMetrics, deviceMetrics.stringMetrics, mi, deviceMetrics.metrics[mi].storeIdx);
102+
metricNode = fillNodeWithValue(deviceMetrics, deviceMetrics.stringMetrics, mi, storeIdx);
100103
break;
101104

102105
case MetricType::Uint64:
103-
metricNode = fillNodeWithValue(deviceMetrics, deviceMetrics.uint64Metrics, mi, deviceMetrics.metrics[mi].storeIdx);
106+
metricNode = fillNodeWithValue(deviceMetrics, deviceMetrics.uint64Metrics, mi, storeIdx);
104107
break;
105108

106109
default:
@@ -121,29 +124,30 @@ bool ResourcesMonitoringHelper::dumpMetricsToJSON(const std::vector<DeviceMetric
121124
continue;
122125
}
123126

124-
//if so
127+
auto storeIdx = driverMetrics.metrics[mi].storeIdx;
128+
// and if data is there
129+
if (driverMetrics.metrics[mi].filledMetrics == 0) {
130+
continue;
131+
}
125132

133+
//if so
126134
boost::property_tree::ptree metricNode;
127135

128136
switch (driverMetrics.metrics[mi].type) {
129137
case MetricType::Int:
130-
metricNode = fillNodeWithValue(driverMetrics, driverMetrics.intMetrics,
131-
mi, driverMetrics.metrics[mi].storeIdx);
138+
metricNode = fillNodeWithValue(driverMetrics, driverMetrics.intMetrics, mi, storeIdx);
132139
break;
133140

134141
case MetricType::Float:
135-
metricNode = fillNodeWithValue(driverMetrics, driverMetrics.floatMetrics,
136-
mi, driverMetrics.metrics[mi].storeIdx);
142+
metricNode = fillNodeWithValue(driverMetrics, driverMetrics.floatMetrics, mi, storeIdx);
137143
break;
138144

139145
case MetricType::String:
140-
metricNode = fillNodeWithValue(driverMetrics, driverMetrics.stringMetrics,
141-
mi, driverMetrics.metrics[mi].storeIdx);
146+
metricNode = fillNodeWithValue(driverMetrics, driverMetrics.stringMetrics, mi, storeIdx);
142147
break;
143148

144149
case MetricType::Uint64:
145-
metricNode = fillNodeWithValue(driverMetrics, driverMetrics.uint64Metrics,
146-
mi, driverMetrics.metrics[mi].storeIdx);
150+
metricNode = fillNodeWithValue(driverMetrics, driverMetrics.uint64Metrics, mi, storeIdx);
147151
break;
148152

149153
default:

0 commit comments

Comments
 (0)