Add anon RSS + swap metric
We are planning to use this metric to detect leaks.
This CL also decouples the actual memory sampling from AM. This means:
- Less time locking the pid list (we used to lock and then read proc)
- Less serialization / deserialization for the parcel
- Simpler to evolve (e.g. removed the HWM-specific method in AM)
Change-Id: I87a7243156dd8c88cfa85038e7e6cf4963e271e1
Test: manual, MemoryStatUtilTest, UidAtomTests
Bug: b/135418017
diff --git a/cmds/statsd/src/atoms.proto b/cmds/statsd/src/atoms.proto
index d457ff9..f47767e 100644
--- a/cmds/statsd/src/atoms.proto
+++ b/cmds/statsd/src/atoms.proto
@@ -3948,7 +3948,7 @@
optional int64 page_major_fault = 5;
// RSS
- // Value is read from /proc/PID/stat, field 24. Or from memory.stat, field
+ // Value is read from /proc/PID/status. Or from memory.stat, field
// total_rss if per-app memory cgroups are enabled.
optional int64 rss_in_bytes = 6;
@@ -3968,6 +3968,9 @@
// Elapsed real time when the process started.
// Value is read from /proc/PID/stat, field 22. 0 if read from per-app memory cgroups.
optional int64 start_time_nanos = 10;
+
+ // Anonymous page size plus swap size. Values are read from /proc/PID/status.
+ optional int32 anon_rss_and_swap_in_kilobytes = 11;
}
/*
@@ -3990,7 +3993,7 @@
optional int64 page_major_fault = 4;
// RSS
- // Value read from /proc/PID/stat, field 24.
+ // Value read from /proc/PID/status.
optional int64 rss_in_bytes = 5;
// Deprecated: use ProcessMemoryHighWaterMark atom instead. Always 0.
@@ -4003,6 +4006,9 @@
// SWAP
// Value read from /proc/PID/status, field VmSwap.
optional int64 swap_in_bytes = 8;
+
+ // Anonymous page size plus swap size. Values are read from /proc/PID/status.
+ optional int32 anon_rss_and_swap_in_kilobytes = 9;
}
/*