summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorSandeep Patil <sspatil@google.com>2018-11-09 16:42:45 -0800
committerSandeep Patil <sspatil@google.com>2018-12-04 14:02:28 -0800
commit4c174ef6eb27cf163e0b82776a1ce2ba455e88be (patch)
treef99f5842b6b71e62d6742a62cbe229292cdec1f3 /include
parent158507acaa672cc843d7dadef081acbb630b5af7 (diff)
downloadplatform_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.h5
-rw-r--r--include/meminfo/procmeminfo.h2
-rw-r--r--include/meminfo/sysmeminfo.h46
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_;