Index: base/chromeos/memory_pressure_observer_chromeos.cc |
diff --git a/base/chromeos/memory_pressure_observer_chromeos.cc b/base/chromeos/memory_pressure_observer_chromeos.cc |
index 8112c761e5e713e747cb015d8226e62a754c87a8..bbb8cec38bea210aa3b3b13258d8a1769eddc9b0 100644 |
--- a/base/chromeos/memory_pressure_observer_chromeos.cc |
+++ b/base/chromeos/memory_pressure_observer_chromeos.cc |
@@ -5,6 +5,7 @@ |
#include "base/chromeos/memory_pressure_observer_chromeos.h" |
#include "base/message_loop/message_loop.h" |
+#include "base/metrics/histogram_macros.h" |
#include "base/process/process_metrics.h" |
#include "base/time/time.h" |
@@ -29,6 +30,10 @@ const int kNormalMemoryPressureCriticalThresholdPercent = 90; |
const int kAggressiveMemoryPressureModerateThresholdPercent = 35; |
const int kAggressiveMemoryPressureCriticalThresholdPercent = 70; |
+// Number of memory pressure levels. Should update this value if more memory |
+// pressure level is introduced in MemoryPressureListener::MemoryPressureLevel. |
Mr4D (OOO till 08-26)
2015/02/04 00:11:19
... if more memory pressure levels are introduced
|
+const int kNumMemoryPressureLevels = 3; |
+ |
// Converts a |MemoryPressureThreshold| value into a used memory percentage for |
// the moderate pressure event. |
int GetModerateMemoryThresholdInPercent( |
@@ -51,6 +56,13 @@ int GetCriticalMemoryThresholdInPercent( |
: kNormalMemoryPressureCriticalThresholdPercent; |
} |
+// Record UMA histogram statistics for the current memory pressure level. |
+void RecordMemoryStatistics( |
+ MemoryPressureListener::MemoryPressureLevel memory_pressure_level) { |
+ UMA_HISTOGRAM_ENUMERATION("ChromeOS.MemoryPressureLevel", |
+ memory_pressure_level, kNumMemoryPressureLevels); |
+} |
+ |
// Converts free percent of memory into a memory pressure value. |
MemoryPressureListener::MemoryPressureLevel GetMemoryPressureLevelFromFillLevel( |
int actual_fill_level, |
@@ -92,7 +104,8 @@ void MemoryPressureObserverChromeOS::ScheduleEarlyCheck() { |
void MemoryPressureObserverChromeOS::StartObserving() { |
timer_.Start(FROM_HERE, |
TimeDelta::FromMilliseconds(kMemoryPressureIntervalMs), |
- Bind(&MemoryPressureObserverChromeOS::CheckMemoryPressure, |
+ Bind(&MemoryPressureObserverChromeOS:: |
+ CheckMemoryPressureAndRecordStatistics, |
weak_ptr_factory_.GetWeakPtr())); |
} |
@@ -101,6 +114,11 @@ void MemoryPressureObserverChromeOS::StopObserving() { |
timer_.Stop(); |
} |
+void MemoryPressureObserverChromeOS::CheckMemoryPressureAndRecordStatistics() { |
+ CheckMemoryPressure(); |
+ RecordMemoryStatistics(current_memory_pressure_level_); |
Mr4D (OOO till 08-26)
2015/02/04 00:11:19
In this case you can pull the content of the funct
|
+} |
+ |
void MemoryPressureObserverChromeOS::CheckMemoryPressure() { |
MemoryPressureListener::MemoryPressureLevel old_pressure = |
current_memory_pressure_level_; |