diff --git a/src/shared/diagnostic/CpuMeter/CpuMeter.cpp b/src/shared/diagnostic/CpuMeter/CpuMeter.cpp
index 20da1e5af5a2dd6618c7ad46f9e2780c469468ca..57990c49ff064d0d5ae08ddf6c703c0c1e87a2c9 100644
--- a/src/shared/diagnostic/CpuMeter/CpuMeter.cpp
+++ b/src/shared/diagnostic/CpuMeter/CpuMeter.cpp
@@ -45,7 +45,11 @@ static volatile unsigned int update = 0;
CpuMeterData getCpuStats()
{
Lock<FastMutex> l(utilizationMutex);
- return CpuMeterData(TimestampTimer::getTimestamp(), utilization.getStats());
+ return CpuMeterData(TimestampTimer::getTimestamp(), utilization.getStats(),
+ MemoryProfiling::getAbsoluteFreeHeap(),
+ MemoryProfiling::getCurrentFreeHeap(),
+ MemoryProfiling::getAbsoluteFreeStack(),
+ MemoryProfiling::getCurrentFreeStack());
}
void resetCpuStats() { utilization.reset(); }
diff --git a/src/shared/diagnostic/CpuMeter/CpuMeterData.h b/src/shared/diagnostic/CpuMeter/CpuMeterData.h
index f091425f98bdeadf8f1a5d7f2ecf4d9719ac6b3c..a28b62a3a270284e38e808cdaae6f2fe2c1b8af6 100644
--- a/src/shared/diagnostic/CpuMeter/CpuMeterData.h
+++ b/src/shared/diagnostic/CpuMeter/CpuMeterData.h
@@ -36,12 +36,20 @@ struct CpuMeterData
float stdDev = 0; ///< Standard deviation of dataset.
uint32_t nSamples = 0; ///< Number of samples.
+ uint32_t minFreeHeap = 0;
+ uint32_t freeHeap = 0;
+ uint32_t minFreeStack = 0;
+ uint32_t freeStack = 0;
+
CpuMeterData() {}
- explicit CpuMeterData(uint64_t timestamp, StatsResult stats)
+ explicit CpuMeterData(uint64_t timestamp, StatsResult stats,
+ uint32_t freeHeap, uint32_t minFreeHeap,
+ uint32_t minFreeStack, uint32_t freeStack)
: timestamp(timestamp), minValue(stats.minValue),
maxValue(stats.maxValue), mean(stats.mean), stdDev(stats.stdDev),
- nSamples(stats.nSamples)
+ nSamples(stats.nSamples), minFreeHeap(minFreeHeap),
+ freeHeap(freeHeap), minFreeStack(minFreeStack), freeStack(freeStack)
{
}