Delete rss_high_watermark_in_bytes field

Reading RSS high-water mark was moved to a separate atom.

Bug: 119598534
Test: atest UidAtomTests#testProcessMemoryState
Test: atest UidAtomTests#testNativeProcessMemoryState
Test: atest MemoryStatUtilTest
Change-Id: I18424ea3f0ab1555febe62df1be97b174e93a55c
diff --git a/cmds/statsd/src/atoms.proto b/cmds/statsd/src/atoms.proto
index c8405a2..8567ff2 100644
--- a/cmds/statsd/src/atoms.proto
+++ b/cmds/statsd/src/atoms.proto
@@ -2543,10 +2543,7 @@
     // SWAP
     optional int64 swap_in_bytes = 8;
 
-    // RSS high watermark.
-    // Peak RSS usage of the process. Value is read from the VmHWM field in /proc/PID/status or
-    // from memory.max_usage_in_bytes under /dev/memcg if the device uses per-app memory cgroups.
-    // Deprecated: use ProcessMemoryHighWaterMark atom instead.
+    // Deprecated: use ProcessMemoryHighWaterMark atom instead. Always 0.
     optional int64 rss_high_watermark_in_bytes = 9 [deprecated = true];
 
     // Elapsed real time when the process started.
@@ -2573,9 +2570,7 @@
     // RSS
     optional int64 rss_in_bytes = 5;
 
-    // RSS high watermark.
-    // Peak RSS usage of the process. Value is read from the VmHWM field in /proc/PID/status.
-    // Deprecated: use ProcessMemoryHighWaterMark atom instead.
+    // Deprecated: use ProcessMemoryHighWaterMark atom instead. Always 0.
     optional int64 rss_high_watermark_in_bytes = 6 [deprecated = true];
 
     // Elapsed real time when the process started.
diff --git a/core/java/android/app/ProcessMemoryState.java b/core/java/android/app/ProcessMemoryState.java
index 9df4fff..95d5d19 100644
--- a/core/java/android/app/ProcessMemoryState.java
+++ b/core/java/android/app/ProcessMemoryState.java
@@ -32,13 +32,11 @@
     public final long rssInBytes;
     public final long cacheInBytes;
     public final long swapInBytes;
-    // TODO(rslawik): Delete this field once ProcessMemoryHighWaterMark is ready.
-    public final long rssHighWatermarkInBytes;
     public final long startTimeNanos;
 
     public ProcessMemoryState(int uid, String processName, int oomScore, long pgfault,
                               long pgmajfault, long rssInBytes, long cacheInBytes,
-                              long swapInBytes, long rssHighWatermarkInBytes, long startTimeNanos) {
+                              long swapInBytes, long startTimeNanos) {
         this.uid = uid;
         this.processName = processName;
         this.oomScore = oomScore;
@@ -47,7 +45,6 @@
         this.rssInBytes = rssInBytes;
         this.cacheInBytes = cacheInBytes;
         this.swapInBytes = swapInBytes;
-        this.rssHighWatermarkInBytes = rssHighWatermarkInBytes;
         this.startTimeNanos = startTimeNanos;
     }
 
@@ -60,7 +57,6 @@
         rssInBytes = in.readLong();
         cacheInBytes = in.readLong();
         swapInBytes = in.readLong();
-        rssHighWatermarkInBytes = in.readLong();
         startTimeNanos = in.readLong();
     }
 
@@ -91,7 +87,6 @@
         parcel.writeLong(rssInBytes);
         parcel.writeLong(cacheInBytes);
         parcel.writeLong(swapInBytes);
-        parcel.writeLong(rssHighWatermarkInBytes);
         parcel.writeLong(startTimeNanos);
     }
 }
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index b62f648..80f47d5 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -18912,7 +18912,6 @@
                     if (memoryStat == null) {
                         continue;
                     }
-                    // TODO(rslawik): Delete RSS high-water mark field.
                     ProcessMemoryState processMemoryState =
                             new ProcessMemoryState(uid,
                                     r.processName,
@@ -18922,7 +18921,6 @@
                                     memoryStat.rssInBytes,
                                     memoryStat.cacheInBytes,
                                     memoryStat.swapInBytes,
-                                    memoryStat.rssHighWatermarkInBytes,
                                     memoryStat.startTimeNanos);
                     processMemoryStates.add(processMemoryState);
                 }
diff --git a/services/core/java/com/android/server/am/MemoryStatUtil.java b/services/core/java/com/android/server/am/MemoryStatUtil.java
index cc3da1c..90fe30c 100644
--- a/services/core/java/com/android/server/am/MemoryStatUtil.java
+++ b/services/core/java/com/android/server/am/MemoryStatUtil.java
@@ -49,13 +49,8 @@
     private static final boolean DEVICE_HAS_PER_APP_MEMCG =
             SystemProperties.getBoolean("ro.config.per_app_memcg", false);
 
-    /** Path to check if device has memcg */
-    private static final String MEMCG_TEST_PATH = "/dev/memcg/apps/memory.stat";
     /** Path to memory stat file for logging app start memory state */
     private static final String MEMORY_STAT_FILE_FMT = "/dev/memcg/apps/uid_%d/pid_%d/memory.stat";
-    /** Path to memory max usage file for logging app memory state */
-    private static final String MEMORY_MAX_USAGE_FILE_FMT =
-            "/dev/memcg/apps/uid_%d/pid_%d/memory.max_usage_in_bytes";
     /** Path to procfs stat file for logging app start memory state */
     private static final String PROC_STAT_FILE_FMT = "/proc/%d/stat";
     /** Path to procfs status file for logging app memory state */
@@ -98,14 +93,7 @@
     @Nullable
     static MemoryStat readMemoryStatFromMemcg(int uid, int pid) {
         final String statPath = String.format(Locale.US, MEMORY_STAT_FILE_FMT, uid, pid);
-        MemoryStat stat = parseMemoryStatFromMemcg(readFileContents(statPath));
-        if (stat == null) {
-            return null;
-        }
-        String maxUsagePath = String.format(Locale.US, MEMORY_MAX_USAGE_FILE_FMT, uid, pid);
-        stat.rssHighWatermarkInBytes = parseMemoryMaxUsageFromMemCg(
-                readFileContents(maxUsagePath));
-        return stat;
+        return parseMemoryStatFromMemcg(readFileContents(statPath));
     }
 
     /**
@@ -116,12 +104,7 @@
     @Nullable
     public static MemoryStat readMemoryStatFromProcfs(int pid) {
         final String statPath = String.format(Locale.US, PROC_STAT_FILE_FMT, pid);
-        MemoryStat stat = parseMemoryStatFromProcfs(readFileContents(statPath));
-        if (stat == null) {
-            return null;
-        }
-        stat.rssHighWatermarkInBytes = readRssHighWaterMarkFromProcfs(pid);
-        return stat;
+        return parseMemoryStatFromProcfs(readFileContents(statPath));
     }
 
     /**
@@ -185,19 +168,6 @@
         return memoryStat;
     }
 
-    @VisibleForTesting
-    static long parseMemoryMaxUsageFromMemCg(String memoryMaxUsageContents) {
-        if (memoryMaxUsageContents == null || memoryMaxUsageContents.isEmpty()) {
-            return 0;
-        }
-        try {
-            return Long.parseLong(memoryMaxUsageContents);
-        } catch (NumberFormatException e) {
-            Slog.e(TAG, "Failed to parse value", e);
-            return 0;
-        }
-    }
-
     /**
      * Parses relevant statistics out from the contents of the /proc/pid/stat file in procfs.
      */
@@ -258,8 +228,6 @@
         public long cacheInBytes;
         /** Number of bytes of swap usage */
         public long swapInBytes;
-        /** Number of bytes of peak anonymous and swap cache memory */
-        public long rssHighWatermarkInBytes;
         /** Device time when the processes started. */
         public long startTimeNanos;
     }
diff --git a/services/core/java/com/android/server/stats/StatsCompanionService.java b/services/core/java/com/android/server/stats/StatsCompanionService.java
index aa11e1e..39b12c2 100644
--- a/services/core/java/com/android/server/stats/StatsCompanionService.java
+++ b/services/core/java/com/android/server/stats/StatsCompanionService.java
@@ -1080,7 +1080,7 @@
             e.writeLong(processMemoryState.rssInBytes);
             e.writeLong(processMemoryState.cacheInBytes);
             e.writeLong(processMemoryState.swapInBytes);
-            e.writeLong(processMemoryState.rssHighWatermarkInBytes);
+            e.writeLong(0);  // unused
             e.writeLong(processMemoryState.startTimeNanos);
             pulledData.add(e);
         }
@@ -1104,7 +1104,7 @@
             e.writeLong(memoryStat.pgfault);
             e.writeLong(memoryStat.pgmajfault);
             e.writeLong(memoryStat.rssInBytes);
-            e.writeLong(memoryStat.rssHighWatermarkInBytes);
+            e.writeLong(0);  // unused
             e.writeLong(memoryStat.startTimeNanos);
             pulledData.add(e);
         }
diff --git a/services/tests/servicestests/src/com/android/server/am/MemoryStatUtilTest.java b/services/tests/servicestests/src/com/android/server/am/MemoryStatUtilTest.java
index c7409d7..89c7b71 100644
--- a/services/tests/servicestests/src/com/android/server/am/MemoryStatUtilTest.java
+++ b/services/tests/servicestests/src/com/android/server/am/MemoryStatUtilTest.java
@@ -20,7 +20,6 @@
 import static com.android.server.am.MemoryStatUtil.JIFFY_NANOS;
 import static com.android.server.am.MemoryStatUtil.MemoryStat;
 import static com.android.server.am.MemoryStatUtil.PAGE_SIZE;
-import static com.android.server.am.MemoryStatUtil.parseMemoryMaxUsageFromMemCg;
 import static com.android.server.am.MemoryStatUtil.parseMemoryStatFromMemcg;
 import static com.android.server.am.MemoryStatUtil.parseMemoryStatFromProcfs;
 import static com.android.server.am.MemoryStatUtil.parseVmHWMFromProcfs;
@@ -197,23 +196,6 @@
     }
 
     @Test
-    public void testParseMemoryMaxUsageFromMemCg_parsesCorrectValue() {
-        assertEquals(1234, parseMemoryMaxUsageFromMemCg("1234"));
-    }
-
-    @Test
-    public void testParseMemoryMaxUsageFromMemCg_emptyContents() {
-        assertEquals(0, parseMemoryMaxUsageFromMemCg(""));
-
-        assertEquals(0, parseMemoryMaxUsageFromMemCg(null));
-    }
-
-    @Test
-    public void testParseMemoryMaxUsageFromMemCg_incorrectValue() {
-        assertEquals(0, parseMemoryMaxUsageFromMemCg("memory"));
-    }
-
-    @Test
     public void testParseMemoryStatFromProcfs_parsesCorrectValues() {
         MemoryStat stat = parseMemoryStatFromProcfs(PROC_STAT_CONTENTS);
         assertEquals(1, stat.pgfault);