diff options
| author | Sandeep Patil <sspatil@google.com> | 2018-11-09 16:42:45 -0800 |
|---|---|---|
| committer | Sandeep Patil <sspatil@google.com> | 2018-12-04 14:02:28 -0800 |
| commit | 4c174ef6eb27cf163e0b82776a1ce2ba455e88be (patch) | |
| tree | f99f5842b6b71e62d6742a62cbe229292cdec1f3 /include | |
| parent | 158507acaa672cc843d7dadef081acbb630b5af7 (diff) | |
| download | platform_system_memory_libmeminfo-4c174ef6eb27cf163e0b82776a1ce2ba455e88be.tar.gz platform_system_memory_libmeminfo-4c174ef6eb27cf163e0b82776a1ce2ba455e88be.tar.bz2 platform_system_memory_libmeminfo-4c174ef6eb27cf163e0b82776a1ce2ba455e88be.zip | |
libmeminfo: Add support for counting swap pages
Adds procmeminfo API to get the vector of swap_offsets
if SWAP is enabled on the device.
Bug: 114325007
Bug: 111694435
Test: libmeminfo_test 1
Change-Id: If0b52d042749a5bcb2c87aa2cb1595190d4769b1
Signed-off-by: Sandeep Patil <sspatil@google.com>
Diffstat (limited to 'include')
| -rw-r--r-- | include/meminfo/meminfo.h | 5 | ||||
| -rw-r--r-- | include/meminfo/procmeminfo.h | 2 | ||||
| -rw-r--r-- | include/meminfo/sysmeminfo.h | 46 |
3 files changed, 37 insertions, 16 deletions
diff --git a/include/meminfo/meminfo.h b/include/meminfo/meminfo.h index c328648..809054b 100644 --- a/include/meminfo/meminfo.h +++ b/include/meminfo/meminfo.h @@ -31,6 +31,8 @@ struct MemUsage { uint64_t pss; uint64_t uss; + uint64_t swap; + uint64_t private_clean; uint64_t private_dirty; uint64_t shared_clean; @@ -41,6 +43,7 @@ struct MemUsage { rss(0), pss(0), uss(0), + swap(0), private_clean(0), private_dirty(0), shared_clean(0), @@ -49,7 +52,7 @@ struct MemUsage { ~MemUsage() = default; void clear() { - vss = rss = pss = uss = 0; + vss = rss = pss = uss = swap = 0; private_clean = private_dirty = shared_clean = shared_dirty = 0; } }; diff --git a/include/meminfo/procmeminfo.h b/include/meminfo/procmeminfo.h index b37c56b..dd59912 100644 --- a/include/meminfo/procmeminfo.h +++ b/include/meminfo/procmeminfo.h @@ -34,6 +34,7 @@ class ProcMemInfo final { const std::vector<Vma>& Maps(); const MemUsage& Usage(); const MemUsage& Wss(); + const std::vector<uint16_t>& SwapOffsets() const; bool WssReset(); ~ProcMemInfo() = default; @@ -49,6 +50,7 @@ class ProcMemInfo final { MemUsage usage_; MemUsage wss_; + std::vector<uint16_t> swap_offsets_; }; } // namespace meminfo diff --git a/include/meminfo/sysmeminfo.h b/include/meminfo/sysmeminfo.h index f5e05bd..87e1464 100644 --- a/include/meminfo/sysmeminfo.h +++ b/include/meminfo/sysmeminfo.h @@ -28,6 +28,22 @@ namespace meminfo { class SysMemInfo final { // System or Global memory accounting public: + static constexpr const char* kMemTotal = "MemTotal:"; + static constexpr const char* kMemFree = "MemFree:"; + static constexpr const char* kMemBuffers = "Buffers:"; + static constexpr const char* kMemCached = "Cached:"; + static constexpr const char* kMemShmem = "Shmem:"; + static constexpr const char* kMemSlab = "Slab:"; + static constexpr const char* kMemSReclaim = "SReclaimable:"; + static constexpr const char* kMemSUnreclaim = "SUnreclaim:"; + static constexpr const char* kMemSwapTotal = "SwapTotal:"; + static constexpr const char* kMemSwapFree = "SwapFree:"; + static constexpr const char* kMemZram = "Zram:"; + static constexpr const char* kMemMapped = "Mapped:"; + static constexpr const char* kMemVmallocUsed = "VmallocUsed:"; + static constexpr const char* kMemPageTables = "PageTables:"; + static constexpr const char* kMemKernelStack = "KernelStack:"; + static const std::vector<std::string> kDefaultSysMemInfoTags; SysMemInfo() = default; @@ -38,21 +54,21 @@ class SysMemInfo final { const std::string& path = "/proc/meminfo"); // getters - uint64_t mem_total_kb() { return mem_in_kb_["MemTotal:"]; } - uint64_t mem_free_kb() { return mem_in_kb_["MemFree:"]; } - uint64_t mem_buffers_kb() { return mem_in_kb_["Buffers:"]; } - uint64_t mem_cached_kb() { return mem_in_kb_["Cached:"]; } - uint64_t mem_shmem_kb() { return mem_in_kb_["Shmem:"]; } - uint64_t mem_slab_kb() { return mem_in_kb_["Slab:"]; } - uint64_t mem_slab_reclailmable_kb() { return mem_in_kb_["SReclaimable:"]; } - uint64_t mem_slab_unreclaimable_kb() { return mem_in_kb_["SUnreclaim:"]; } - uint64_t mem_swap_kb() { return mem_in_kb_["SwapTotal:"]; } - uint64_t mem_free_swap_kb() { return mem_in_kb_["SwapFree:"]; } - uint64_t mem_zram_kb() { return mem_in_kb_["Zram:"]; } - uint64_t mem_mapped_kb() { return mem_in_kb_["Mapped:"]; } - uint64_t mem_vmalloc_used_kb() { return mem_in_kb_["VmallocUsed:"]; } - uint64_t mem_page_tables_kb() { return mem_in_kb_["PageTables:"]; } - uint64_t mem_kernel_stack_kb() { return mem_in_kb_["KernelStack:"]; } + uint64_t mem_total_kb() { return mem_in_kb_[kMemTotal]; } + uint64_t mem_free_kb() { return mem_in_kb_[kMemFree]; } + uint64_t mem_buffers_kb() { return mem_in_kb_[kMemBuffers]; } + uint64_t mem_cached_kb() { return mem_in_kb_[kMemCached]; } + uint64_t mem_shmem_kb() { return mem_in_kb_[kMemShmem]; } + uint64_t mem_slab_kb() { return mem_in_kb_[kMemSlab]; } + uint64_t mem_slab_reclailmable_kb() { return mem_in_kb_[kMemSReclaim]; } + uint64_t mem_slab_unreclaimable_kb() { return mem_in_kb_[kMemSUnreclaim]; } + uint64_t mem_swap_kb() { return mem_in_kb_[kMemSwapTotal]; } + uint64_t mem_swap_free_kb() { return mem_in_kb_[kMemSwapFree]; } + uint64_t mem_zram_kb() { return mem_in_kb_[kMemZram]; } + uint64_t mem_mapped_kb() { return mem_in_kb_[kMemMapped]; } + uint64_t mem_vmalloc_used_kb() { return mem_in_kb_[kMemVmallocUsed]; } + uint64_t mem_page_tables_kb() { return mem_in_kb_[kMemPageTables]; } + uint64_t mem_kernel_stack_kb() { return mem_in_kb_[kMemPageTables]; } private: std::map<std::string, uint64_t> mem_in_kb_; |
