12
12
#ifndef INCLUDED_ml_model_CHierarchicalResultsNormalizer_h
13
13
#define INCLUDED_ml_model_CHierarchicalResultsNormalizer_h
14
14
15
+ #include < core/CMemoryDef.h>
15
16
#include < core/CNonCopyable.h>
16
17
17
18
#include < model/CAnomalyScore.h>
18
19
#include < model/CHierarchicalResultsLevelSet.h>
20
+ #include < model/CLimits.h>
21
+ #include < model/CMonitoredResource.h>
19
22
#include < model/ImportExport.h>
20
23
21
- #include < memory>
22
24
#include < string>
23
- #include < utility>
24
25
#include < vector>
25
26
26
27
namespace ml {
@@ -44,6 +45,10 @@ struct MODEL_EXPORT SNormalizer {
44
45
// ! Compute a checksum for this object.
45
46
uint64_t checksum () const ;
46
47
48
+ void debugMemoryUsage (const core::CMemoryUsage::TMemoryUsagePtr& mem) const ;
49
+
50
+ std::size_t memoryUsage () const ;
51
+
47
52
std::string s_Description;
48
53
TNormalizerPtr s_Normalizer;
49
54
};
@@ -84,6 +89,7 @@ struct MODEL_EXPORT SNormalizer {
84
89
// ! normalizers is negligible.
85
90
class MODEL_EXPORT CHierarchicalResultsNormalizer
86
91
: public CHierarchicalResultsLevelSet<hierarchical_results_normalizer_detail::SNormalizer>,
92
+ public CMonitoredResource,
87
93
private core::CNonCopyable {
88
94
public:
89
95
using TBase = CHierarchicalResultsLevelSet<hierarchical_results_normalizer_detail::SNormalizer>;
@@ -106,9 +112,10 @@ class MODEL_EXPORT CHierarchicalResultsNormalizer
106
112
enum ERestoreOutcome { E_Ok = 0 , E_Corrupt = 1 , E_Incomplete = 2 };
107
113
108
114
public:
109
- CHierarchicalResultsNormalizer (const CAnomalyDetectorModelConfig& modelConfig);
115
+ CHierarchicalResultsNormalizer (CLimits& limits,
116
+ const CAnomalyDetectorModelConfig& modelConfig);
110
117
111
- ~CHierarchicalResultsNormalizer () override = default ;
118
+ ~CHierarchicalResultsNormalizer () override ;
112
119
113
120
// ! Add a job for the subsequent invocations of the normalizer.
114
121
void setJob (EJob job);
@@ -167,6 +174,19 @@ class MODEL_EXPORT CHierarchicalResultsNormalizer
167
174
const std::string& functionName,
168
175
const std::string& valueFieldName) const ;
169
176
177
+ // ! Get the memory used by this hierarchical results normalizer.
178
+ void debugMemoryUsage (const core::CMemoryUsage::TMemoryUsagePtr& mem) const override ;
179
+
180
+ // ! Return the total memory usage.
181
+ std::size_t memoryUsage () const override ;
182
+
183
+ // ! Get the static size of this object.
184
+ std::size_t staticSize () const override ;
185
+
186
+ // ! Update the overall model size stats with information from the
187
+ // ! hierarchical results normalizer.
188
+ void updateModelSizeStats (CResourceMonitor::SModelSizeStats& modelSizeStats) const override ;
189
+
170
190
private:
171
191
// ! \brief Creates new normalizer instances.
172
192
class CNormalizerFactory {
@@ -210,15 +230,18 @@ class MODEL_EXPORT CHierarchicalResultsNormalizer
210
230
static std::string leafCue (const TWord& word);
211
231
212
232
private:
233
+ // ! Configurable limits
234
+ CLimits& m_Limits;
235
+
213
236
// ! The jobs that the normalizer will perform when invoked
214
237
// ! can be: update, normalize or update + normalize.
215
- EJob m_Job;
238
+ EJob m_Job{E_NoOp} ;
216
239
217
240
// ! The model configuration file.
218
241
const CAnomalyDetectorModelConfig& m_ModelConfig;
219
242
220
243
// ! Whether the last update of the quantiles has caused a big change.
221
- bool m_HasLastUpdateCausedBigChange;
244
+ bool m_HasLastUpdateCausedBigChange{ false } ;
222
245
};
223
246
}
224
247
}
0 commit comments