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