diff options
Diffstat (limited to 'catapult/systrace/atrace_helper/jni/process_memory_stats.h')
-rw-r--r-- | catapult/systrace/atrace_helper/jni/process_memory_stats.h | 37 |
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_ |