OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "components/metrics/system_memory_stats_recorder.h" | 5 #include "components/metrics/system_memory_stats_recorder.h" |
6 | 6 |
7 #include <windows.h> | 7 #include <windows.h> |
8 | 8 |
9 #include "base/metrics/histogram_macros.h" | 9 #include "base/metrics/histogram_macros.h" |
10 #include "base/process/process_metrics.h" | 10 #include "base/process/process_metrics.h" |
11 | 11 |
12 namespace metrics { | 12 namespace metrics { |
| 13 namespace { |
| 14 enum { kMBytes = 1024 * 1024 }; |
| 15 } |
13 | 16 |
14 void RecordMemoryStats(RecordMemoryStatsType type) { | 17 void RecordMemoryStats(RecordMemoryStatsType type) { |
15 MEMORYSTATUSEX mem_status; | 18 MEMORYSTATUSEX mem_status; |
16 mem_status.dwLength = sizeof(mem_status); | 19 mem_status.dwLength = sizeof(mem_status); |
17 if (!::GlobalMemoryStatusEx(&mem_status)) | 20 if (!::GlobalMemoryStatusEx(&mem_status)) |
18 return; | 21 return; |
19 | 22 |
20 switch (type) { | 23 switch (type) { |
21 case RECORD_MEMORY_STATS_TAB_DISCARDED: { | 24 case RECORD_MEMORY_STATS_TAB_DISCARDED: { |
22 UMA_HISTOGRAM_CUSTOM_COUNTS("Memory.Stats.Win.MemoryLoad", | 25 UMA_HISTOGRAM_CUSTOM_COUNTS("Memory.Stats.Win.MemoryLoad", |
23 mem_status.dwMemoryLoad, 0, 100, 101); | 26 mem_status.dwMemoryLoad, 0, 100, 101); |
24 UMA_HISTOGRAM_LARGE_MEMORY_MB("Memory.Stats.Win.TotalPhys", | 27 UMA_HISTOGRAM_LARGE_MEMORY_MB("Memory.Stats.Win.TotalPhys2", |
25 mem_status.ullTotalPhys); | 28 mem_status.ullTotalPhys / kMBytes); |
26 UMA_HISTOGRAM_LARGE_MEMORY_MB("Memory.Stats.Win.AvailPhys", | 29 UMA_HISTOGRAM_LARGE_MEMORY_MB("Memory.Stats.Win.AvailPhys2", |
27 mem_status.ullAvailPhys); | 30 mem_status.ullAvailPhys / kMBytes); |
28 UMA_HISTOGRAM_LARGE_MEMORY_MB("Memory.Stats.Win.TotalPageFile", | 31 UMA_HISTOGRAM_LARGE_MEMORY_MB("Memory.Stats.Win.TotalPageFile2", |
29 mem_status.ullTotalPageFile); | 32 mem_status.ullTotalPageFile / kMBytes); |
30 UMA_HISTOGRAM_LARGE_MEMORY_MB("Memory.Stats.Win.AvailPageFile", | 33 UMA_HISTOGRAM_LARGE_MEMORY_MB("Memory.Stats.Win.AvailPageFile2", |
31 mem_status.ullAvailPageFile); | 34 mem_status.ullAvailPageFile / kMBytes); |
32 UMA_HISTOGRAM_LARGE_MEMORY_MB("Memory.Stats.Win.TotalVirtual", | 35 UMA_HISTOGRAM_LARGE_MEMORY_MB("Memory.Stats.Win.TotalVirtual2", |
33 mem_status.ullTotalVirtual); | 36 mem_status.ullTotalVirtual / kMBytes); |
34 UMA_HISTOGRAM_LARGE_MEMORY_MB("Memory.Stats.Win.AvailVirtual", | 37 UMA_HISTOGRAM_LARGE_MEMORY_MB("Memory.Stats.Win.AvailVirtual2", |
35 mem_status.ullAvailVirtual); | 38 mem_status.ullAvailVirtual / kMBytes); |
36 break; | 39 break; |
37 } | 40 } |
38 default: | 41 default: |
39 NOTREACHED() << L"Received unexpected notification"; | 42 NOTREACHED() << L"Received unexpected notification"; |
40 break; | 43 break; |
41 } | 44 } |
42 } | 45 } |
43 | 46 |
44 } // namespace metrics | 47 } // namespace metrics |
OLD | NEW |