Add system swap metrics.

BUG=260484
TEST=None
[email protected], [email protected]

Review URL: https://codereview.chromium.org/19572011

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@212389 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/memory_details.cc b/chrome/browser/memory_details.cc
index ef07356e..1dad6f9 100644
--- a/chrome/browser/memory_details.cc
+++ b/chrome/browser/memory_details.cc
@@ -497,6 +497,12 @@
 
 #if defined(OS_CHROMEOS)
 void MemoryDetails::UpdateSwapHistograms() {
+  UMA_HISTOGRAM_BOOLEAN("Memory.Swap.HaveSwapped", swap_data_.num_writes > 0);
+  if (swap_data_.num_writes == 0)
+    return;
+
+  // Only record swap info when any swaps have happened, to give us more
+  // detail in the histograms.
   const ProcessData& browser = *ChromeBrowser();
   size_t aggregate_memory = 0;
   for (size_t index = 0; index < browser.processes.size(); index++) {
@@ -563,6 +569,25 @@
 
   int total_sample = static_cast<int>(aggregate_memory / 1000);
   UMA_HISTOGRAM_MEMORY_MB("Memory.Swap.Total", total_sample);
+
+  UMA_HISTOGRAM_CUSTOM_COUNTS("Memory.Swap.CompressedDataSize",
+                              swap_data_.compr_data_size / (1024 * 1024),
+                              1, 4096, 50);
+  UMA_HISTOGRAM_CUSTOM_COUNTS("Memory.Swap.OriginalDataSize",
+                              swap_data_.orig_data_size / (1024 * 1024),
+                              1, 4096, 50);
+  UMA_HISTOGRAM_CUSTOM_COUNTS("Memory.Swap.MemUsedTotal",
+                              swap_data_.mem_used_total / (1024 * 1024),
+                              1, 4096, 50);
+  UMA_HISTOGRAM_COUNTS("Memory.Swap.NumReads", swap_data_.num_reads);
+  UMA_HISTOGRAM_COUNTS("Memory.Swap.NumWrites", swap_data_.num_writes);
+
+  if (swap_data_.orig_data_size > 0 && swap_data_.compr_data_size > 0) {
+    UMA_HISTOGRAM_CUSTOM_COUNTS(
+        "Memory.Swap.CompressionRatio",
+        swap_data_.orig_data_size / swap_data_.compr_data_size,
+        1, 20, 20);
+  }
 }
 
 #endif