Index: chrome/browser/chromeos/memory/oom_priority_manager.cc |
diff --git a/chrome/browser/chromeos/memory/oom_priority_manager.cc b/chrome/browser/chromeos/memory/oom_priority_manager.cc |
index a0f38aa716246c0f1306db5e619ea72be2e769db..ef63457902177df1dc89fd9e7e6e5a72e06e201a 100644 |
--- a/chrome/browser/chromeos/memory/oom_priority_manager.cc |
+++ b/chrome/browser/chromeos/memory/oom_priority_manager.cc |
@@ -17,6 +17,7 @@ |
#include "base/process_util.h" |
#include "base/string16.h" |
#include "base/string_number_conversions.h" |
+#include "base/stringprintf.h" |
#include "base/synchronization/lock.h" |
#include "base/threading/thread.h" |
#include "base/time.h" |
@@ -110,8 +111,14 @@ void OomMemoryDetails::OnDetailsAvailable() { |
TimeDelta delta = TimeTicks::Now() - start_time_; |
// These logs are collected by user feedback reports. We want them to help |
// diagnose user-reported problems with frequently discarded tabs. |
+ std::string log_string = ToLogString(); |
+ base::SystemMemoryInfoKB memory; |
+ if (base::GetSystemMemoryInfo(&memory) && memory.gem_size != -1) { |
+ log_string += StringPrintf("Graphics %lld MB", |
+ memory.gem_size / 1024 / 1024); |
DaveMoore
2012/12/07 18:52:48
Use ui::FormatBytes() instead. You can find it in
James Cook
2012/12/07 19:41:22
Done.
|
+ } |
LOG(WARNING) << "OOM details (" << delta.InMilliseconds() << " ms):\n" |
- << ToLogString(); |
+ << log_string; |
if (g_browser_process && g_browser_process->oom_priority_manager()) |
g_browser_process->oom_priority_manager()->DiscardTab(); |
// Delete ourselves so we don't have to worry about OomPriorityManager |
@@ -281,13 +288,24 @@ void OomPriorityManager::RecordDiscardStatistics() { |
base::SystemMemoryInfoKB memory; |
if (base::GetSystemMemoryInfo(&memory)) { |
int mem_anonymous_mb = (memory.active_anon + memory.inactive_anon) / 1024; |
+ // TODO(jamescook): Remove this after R25 is deployed to stable. It does |
+ // not have sufficient resolution in the 2-4 GB range and has been replaced |
+ // by Tabs.Discard.MemAnonymousMB2 below. |
EXPERIMENT_HISTOGRAM_MEGABYTES("Tabs.Discard.MemAnonymousMB", |
mem_anonymous_mb); |
+ EXPERIMENT_CUSTOM_COUNTS("Tabs.Discard.MemAnonymousMB2", mem_anonymous_mb, |
+ 256, 32768, 50) |
int mem_available_mb = |
(memory.active_file + memory.inactive_file + memory.free) / 1024; |
EXPERIMENT_HISTOGRAM_MEGABYTES("Tabs.Discard.MemAvailableMB", |
mem_available_mb); |
+ |
+ if (memory.gem_size != -1) { |
DaveMoore
2012/12/07 18:52:48
If you do this on Intel you will double count memo
James Cook
2012/12/07 19:41:22
Replaced with a MemAllocatedMB stat that tracks bo
|
+ int mem_graphics_mb = memory.gem_size / 1024 / 1024; |
+ EXPERIMENT_HISTOGRAM_MEGABYTES("Tabs.Discard.MemGraphicsMB", |
+ mem_graphics_mb); |
+ } |
} |
// Set up to record the next interval. |
last_discard_time_ = TimeTicks::Now(); |