aboutsummaryrefslogtreecommitdiff
path: root/catapult/systrace/atrace_helper/jni/process_memory_stats.h
diff options
context:
space:
mode:
Diffstat (limited to 'catapult/systrace/atrace_helper/jni/process_memory_stats.h')
-rw-r--r--catapult/systrace/atrace_helper/jni/process_memory_stats.h37
1 files changed, 30 insertions, 7 deletions
diff --git a/catapult/systrace/atrace_helper/jni/process_memory_stats.h b/catapult/systrace/atrace_helper/jni/process_memory_stats.h
index 180c41c5..84584aaa 100644
--- a/catapult/systrace/atrace_helper/jni/process_memory_stats.h
+++ b/catapult/systrace/atrace_helper/jni/process_memory_stats.h
@@ -7,8 +7,8 @@
#include <stdint.h>
-#include <map>
#include <memory>
+#include <vector>
// Reads process memory stats from /proc/pid/{statm,smaps}.
class ProcessMemoryStats {
@@ -28,33 +28,47 @@ class ProcessMemoryStats {
uint64_t swapped_kb = 0;
};
- explicit ProcessMemoryStats(int pid);
+ ProcessMemoryStats() {}
- bool ReadLightStats();
- bool ReadFullStats();
+ bool ReadLightStats(int pid);
+ bool ReadFullStats(int pid);
+ bool ReadGpuStats(int pid);
// Available after ReadLightStats().
uint64_t virt_kb() const { return virt_kb_; }
uint64_t rss_kb() const { return rss_kb_; }
// Available after ReadFullStats().
+ bool full_stats_available() const { return full_stats_; }
+ uint64_t pss_kb() const { return pss_kb_; }
uint64_t private_clean_kb() const { return private_clean_kb_; }
uint64_t private_dirty_kb() const { return private_dirty_kb_; }
uint64_t shared_clean_kb() const { return shared_clean_kb_; }
uint64_t shared_dirty_kb() const { return shared_dirty_kb_; }
uint64_t swapped_kb() const { return swapped_kb_; }
+ // Available after ReadMemtrackStats().
+ bool gpu_stats_available() const { return gpu_stats_; }
+ uint64_t gpu_graphics_kb() const { return gpu_graphics_kb_; }
+ uint64_t gpu_graphics_pss_kb() const { return gpu_graphics_pss_kb_; }
+ uint64_t gpu_gl_kb() const { return gpu_gl_kb_; }
+ uint64_t gpu_gl_pss_kb() const { return gpu_gl_pss_kb_; }
+ uint64_t gpu_other_kb() const { return gpu_other_kb_; }
+ uint64_t gpu_other_pss_kb() const { return gpu_other_pss_kb_; }
+
+ size_t mmaps_count() const { return mmaps_.size(); }
+ const MmapInfo* mmap(size_t index) const { return mmaps_[index].get(); }
+
private:
ProcessMemoryStats(const ProcessMemoryStats&) = delete;
void operator=(const ProcessMemoryStats&) = delete;
- const int pid_;
-
// Light stats.
uint64_t virt_kb_ = 0;
uint64_t rss_kb_ = 0;
// Full stats.
+ bool full_stats_ = false;
uint64_t pss_kb_ = 0;
uint64_t private_clean_kb_ = 0;
uint64_t private_dirty_kb_ = 0;
@@ -62,7 +76,16 @@ class ProcessMemoryStats {
uint64_t shared_dirty_kb_ = 0;
uint64_t swapped_kb_ = 0;
- std::map<uintptr_t, std::unique_ptr<MmapInfo>> mmaps_;
+ // Graphics stats.
+ bool gpu_stats_ = false;
+ uint64_t gpu_graphics_kb_ = 0;
+ uint64_t gpu_graphics_pss_kb_ = 0;
+ uint64_t gpu_gl_kb_ = 0;
+ uint64_t gpu_gl_pss_kb_ = 0;
+ uint64_t gpu_other_kb_ = 0;
+ uint64_t gpu_other_pss_kb_ = 0;
+
+ std::vector<std::unique_ptr<const MmapInfo>> mmaps_;
};
#endif // PROCESS_MEMORY_STATS_H_