Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4597)

Unified Diff: chrome/browser/chromeos/memory/oom_priority_manager.cc

Issue 11475016: cros: Add UMA stat for graphics driver memory on tab discard (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/process_util_linux.cc ('k') | chrome/browser/memory_details.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 39d6d6ab91f8fba543c819204b05f07bbbbb43f1..81f4cdb348e2ca2bdf145cafc688087a54ad6c0d 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/string_util.h"
#include "base/synchronization/lock.h"
#include "base/threading/thread.h"
#include "base/time.h"
@@ -37,6 +38,7 @@
#include "content/public/browser/render_widget_host.h"
#include "content/public/browser/web_contents.h"
#include "content/public/browser/zygote_host_linux.h"
+#include "ui/base/text/bytes_formatting.h"
using base::TimeDelta;
using base::TimeTicks;
@@ -109,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 += "Graphics ";
+ log_string += UTF16ToASCII(ui::FormatBytes(memory.gem_size));
+ }
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
@@ -279,10 +287,23 @@ void OomPriorityManager::RecordDiscardStatistics() {
// Record Chrome's concept of system memory usage at the time of the discard.
base::SystemMemoryInfoKB memory;
if (base::GetSystemMemoryInfo(&memory)) {
+ // TODO(jamescook): Remove this after R25 is deployed to stable. It does
+ // not have sufficient resolution in the 2-4 GB range and does not properly
+ // account for graphics memory on ARM. Replace with MemAllocatedMB below.
int mem_anonymous_mb = (memory.active_anon + memory.inactive_anon) / 1024;
EXPERIMENT_HISTOGRAM_MEGABYTES("Tabs.Discard.MemAnonymousMB",
mem_anonymous_mb);
+ // On Intel, graphics objects are in anonymous pages, but on ARM they are
+ // not. For a total "allocated count" add in graphics pages on ARM.
+ int mem_allocated_mb = mem_anonymous_mb;
+#if defined(ARCH_CPU_ARM_FAMILY)
+ if (memory.gem_size != -1)
+ mem_allocated_mb += memory.gem_size / 1024 / 1024;
+#endif
+ EXPERIMENT_CUSTOM_COUNTS("Tabs.Discard.MemAllocatedMB", mem_allocated_mb,
+ 256, 32768, 50)
+
int mem_available_mb =
(memory.active_file + memory.inactive_file + memory.free) / 1024;
EXPERIMENT_HISTOGRAM_MEGABYTES("Tabs.Discard.MemAvailableMB",
« no previous file with comments | « base/process_util_linux.cc ('k') | chrome/browser/memory_details.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698