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) { }