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

Side by Side Diff: systrace/atrace_helper/jni/process_memory_stats.h

Issue 2946033002: Android systrace: Optimize memory dumps. (Closed)
Patch Set: tiny fix Created 3 years, 5 months 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 unified diff | Download patch
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 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 #ifndef PROCESS_MEMORY_STATS_H_ 5 #ifndef PROCESS_MEMORY_STATS_H_
6 #define PROCESS_MEMORY_STATS_H_ 6 #define PROCESS_MEMORY_STATS_H_
7 7
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <map>
11 #include <memory> 10 #include <memory>
11 #include <vector>
12 12
13 // Reads process memory stats from /proc/pid/{statm,smaps}. 13 // Reads process memory stats from /proc/pid/{statm,smaps}.
14 class ProcessMemoryStats { 14 class ProcessMemoryStats {
15 public: 15 public:
16 struct MmapInfo { 16 struct MmapInfo {
17 char mapped_file[128] = {}; 17 char mapped_file[128] = {};
18 char prot_flags[5] = {}; 18 char prot_flags[5] = {};
19 uint64_t start_addr = 0; 19 uint64_t start_addr = 0;
20 uint64_t end_addr = 0; 20 uint64_t end_addr = 0;
21 uint64_t virt_kb = 0; 21 uint64_t virt_kb = 0;
22 uint64_t pss_kb = 0; // Proportional Set Size. 22 uint64_t pss_kb = 0; // Proportional Set Size.
23 uint64_t rss_kb = 0; // Resident Set Size. 23 uint64_t rss_kb = 0; // Resident Set Size.
24 uint64_t private_clean_kb = 0; 24 uint64_t private_clean_kb = 0;
25 uint64_t private_dirty_kb = 0; 25 uint64_t private_dirty_kb = 0;
26 uint64_t shared_clean_kb = 0; 26 uint64_t shared_clean_kb = 0;
27 uint64_t shared_dirty_kb = 0; 27 uint64_t shared_dirty_kb = 0;
28 uint64_t swapped_kb = 0; 28 uint64_t swapped_kb = 0;
29 }; 29 };
30 30
31 explicit ProcessMemoryStats(int pid); 31 ProcessMemoryStats() {}
32 32
33 bool ReadLightStats(); 33 bool ReadLightStats(int pid);
34 bool ReadFullStats(); 34 bool ReadFullStats(int pid);
35 bool ReadMemtrackStats(); 35 bool ReadGpuStats(int pid);
36 36
37 // Available after ReadLightStats(). 37 // Available after ReadLightStats().
38 uint64_t virt_kb() const { return virt_kb_; } 38 uint64_t virt_kb() const { return virt_kb_; }
39 uint64_t rss_kb() const { return rss_kb_; } 39 uint64_t rss_kb() const { return rss_kb_; }
40 40
41 // Available after ReadFullStats(). 41 // Available after ReadFullStats().
42 bool full_stats_available() const { return full_stats_; }
42 uint64_t pss_kb() const { return pss_kb_; } 43 uint64_t pss_kb() const { return pss_kb_; }
43 uint64_t private_clean_kb() const { return private_clean_kb_; } 44 uint64_t private_clean_kb() const { return private_clean_kb_; }
44 uint64_t private_dirty_kb() const { return private_dirty_kb_; } 45 uint64_t private_dirty_kb() const { return private_dirty_kb_; }
45 uint64_t shared_clean_kb() const { return shared_clean_kb_; } 46 uint64_t shared_clean_kb() const { return shared_clean_kb_; }
46 uint64_t shared_dirty_kb() const { return shared_dirty_kb_; } 47 uint64_t shared_dirty_kb() const { return shared_dirty_kb_; }
47 uint64_t swapped_kb() const { return swapped_kb_; } 48 uint64_t swapped_kb() const { return swapped_kb_; }
48 49
49 // Available after ReadMemtrackStats(). 50 // Available after ReadMemtrackStats().
51 bool gpu_stats_available() const { return gpu_stats_; }
50 uint64_t gpu_graphics_kb() const { return gpu_graphics_kb_; } 52 uint64_t gpu_graphics_kb() const { return gpu_graphics_kb_; }
51 uint64_t gpu_graphics_pss_kb() const { return gpu_graphics_pss_kb_; } 53 uint64_t gpu_graphics_pss_kb() const { return gpu_graphics_pss_kb_; }
52 uint64_t gpu_gl_kb() const { return gpu_gl_kb_; } 54 uint64_t gpu_gl_kb() const { return gpu_gl_kb_; }
53 uint64_t gpu_gl_pss_kb() const { return gpu_gl_pss_kb_; } 55 uint64_t gpu_gl_pss_kb() const { return gpu_gl_pss_kb_; }
54 uint64_t gpu_other_kb() const { return gpu_other_kb_; } 56 uint64_t gpu_other_kb() const { return gpu_other_kb_; }
55 uint64_t gpu_other_pss_kb() const { return gpu_other_pss_kb_; } 57 uint64_t gpu_other_pss_kb() const { return gpu_other_pss_kb_; }
56 58
59 size_t mmaps_count() const { return mmaps_.size(); }
60 const MmapInfo* mmap(size_t index) const { return mmaps_[index].get(); }
61
57 private: 62 private:
58 ProcessMemoryStats(const ProcessMemoryStats&) = delete; 63 ProcessMemoryStats(const ProcessMemoryStats&) = delete;
59 void operator=(const ProcessMemoryStats&) = delete; 64 void operator=(const ProcessMemoryStats&) = delete;
60 65
61 const int pid_;
62
63 // Light stats. 66 // Light stats.
64 uint64_t virt_kb_ = 0; 67 uint64_t virt_kb_ = 0;
65 uint64_t rss_kb_ = 0; 68 uint64_t rss_kb_ = 0;
66 69
67 // Full stats. 70 // Full stats.
71 bool full_stats_ = false;
68 uint64_t pss_kb_ = 0; 72 uint64_t pss_kb_ = 0;
69 uint64_t private_clean_kb_ = 0; 73 uint64_t private_clean_kb_ = 0;
70 uint64_t private_dirty_kb_ = 0; 74 uint64_t private_dirty_kb_ = 0;
71 uint64_t shared_clean_kb_ = 0; 75 uint64_t shared_clean_kb_ = 0;
72 uint64_t shared_dirty_kb_ = 0; 76 uint64_t shared_dirty_kb_ = 0;
73 uint64_t swapped_kb_ = 0; 77 uint64_t swapped_kb_ = 0;
74 78
75 // Graphics stats. 79 // Graphics stats.
80 bool gpu_stats_ = false;
76 uint64_t gpu_graphics_kb_ = 0; 81 uint64_t gpu_graphics_kb_ = 0;
77 uint64_t gpu_graphics_pss_kb_ = 0; 82 uint64_t gpu_graphics_pss_kb_ = 0;
78 uint64_t gpu_gl_kb_ = 0; 83 uint64_t gpu_gl_kb_ = 0;
79 uint64_t gpu_gl_pss_kb_ = 0; 84 uint64_t gpu_gl_pss_kb_ = 0;
80 uint64_t gpu_other_kb_ = 0; 85 uint64_t gpu_other_kb_ = 0;
81 uint64_t gpu_other_pss_kb_ = 0; 86 uint64_t gpu_other_pss_kb_ = 0;
82 87
83 std::map<uintptr_t, std::unique_ptr<MmapInfo>> mmaps_; 88 std::vector<std::unique_ptr<const MmapInfo>> mmaps_;
84 }; 89 };
85 90
86 #endif // PROCESS_MEMORY_STATS_H_ 91 #endif // PROCESS_MEMORY_STATS_H_
OLDNEW
« no previous file with comments | « systrace/atrace_helper/jni/process_info.cc ('k') | systrace/atrace_helper/jni/process_memory_stats.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698