Loading cmds/statsd/src/atoms.proto +8 −2 Original line number Diff line number Diff line Loading @@ -3958,7 +3958,7 @@ message ProcessMemoryState { 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; Loading @@ -3978,6 +3978,9 @@ message ProcessMemoryState { // 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; } /* Loading @@ -4000,7 +4003,7 @@ message NativeProcessMemoryState { 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. Loading @@ -4013,6 +4016,9 @@ message NativeProcessMemoryState { // 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; } /* Loading core/java/android/app/ActivityManagerInternal.java +1 −8 Original line number Diff line number Diff line Loading @@ -168,19 +168,12 @@ public abstract class ActivityManagerInternal { public abstract boolean isUidActive(int uid); /** * Returns a list that contains the memory stats for currently running processes. * Returns a list of running processes along with corresponding uids, pids and their oom score. * * Only processes managed by ActivityManagerService are included. */ public abstract List<ProcessMemoryState> getMemoryStateForProcesses(); /** * Returns a list that contains the memory high-water mark for currently running processes. * * Only processes managed by ActivityManagerService are included. */ public abstract List<ProcessMemoryHighWaterMark> getMemoryHighWaterMarkForProcesses(); /** * Checks to see if the calling pid is allowed to handle the user. Returns adjusted user id as * needed. Loading core/java/android/app/ProcessMemoryHighWaterMark.javadeleted 100644 → 0 +0 −67 Original line number Diff line number Diff line /* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.app; import android.os.Parcel; import android.os.Parcelable; /** * The memory high-water mark value for a process. * {@hide} */ public final class ProcessMemoryHighWaterMark implements Parcelable { public final int uid; public final String processName; public final long rssHighWaterMarkInBytes; public ProcessMemoryHighWaterMark(int uid, String processName, long rssHighWaterMarkInBytes) { this.uid = uid; this.processName = processName; this.rssHighWaterMarkInBytes = rssHighWaterMarkInBytes; } private ProcessMemoryHighWaterMark(Parcel in) { uid = in.readInt(); processName = in.readString(); rssHighWaterMarkInBytes = in.readLong(); } public static final @android.annotation.NonNull Creator<ProcessMemoryHighWaterMark> CREATOR = new Creator<ProcessMemoryHighWaterMark>() { @Override public ProcessMemoryHighWaterMark createFromParcel(Parcel in) { return new ProcessMemoryHighWaterMark(in); } @Override public ProcessMemoryHighWaterMark[] newArray(int size) { return new ProcessMemoryHighWaterMark[size]; } }; @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel parcel, int flags) { parcel.writeInt(uid); parcel.writeString(processName); parcel.writeLong(rssHighWaterMarkInBytes); } } core/java/android/app/ProcessMemoryState.java +6 −28 Original line number Diff line number Diff line Loading @@ -20,44 +20,27 @@ import android.os.Parcel; import android.os.Parcelable; /** * The memory stats for a process. * State (oom score) for processes known to activity manager. * {@hide} */ public final class ProcessMemoryState implements Parcelable { public final int uid; public final int pid; public final String processName; public final int oomScore; public final long pgfault; public final long pgmajfault; public final long rssInBytes; public final long cacheInBytes; public final long swapInBytes; public final long startTimeNanos; public ProcessMemoryState(int uid, String processName, int oomScore, long pgfault, long pgmajfault, long rssInBytes, long cacheInBytes, long swapInBytes, long startTimeNanos) { public ProcessMemoryState(int uid, int pid, String processName, int oomScore) { this.uid = uid; this.pid = pid; this.processName = processName; this.oomScore = oomScore; this.pgfault = pgfault; this.pgmajfault = pgmajfault; this.rssInBytes = rssInBytes; this.cacheInBytes = cacheInBytes; this.swapInBytes = swapInBytes; this.startTimeNanos = startTimeNanos; } private ProcessMemoryState(Parcel in) { uid = in.readInt(); pid = in.readInt(); processName = in.readString(); oomScore = in.readInt(); pgfault = in.readLong(); pgmajfault = in.readLong(); rssInBytes = in.readLong(); cacheInBytes = in.readLong(); swapInBytes = in.readLong(); startTimeNanos = in.readLong(); } public static final @android.annotation.NonNull Creator<ProcessMemoryState> CREATOR = new Creator<ProcessMemoryState>() { Loading @@ -80,13 +63,8 @@ public final class ProcessMemoryState implements Parcelable { @Override public void writeToParcel(Parcel parcel, int i) { parcel.writeInt(uid); parcel.writeInt(pid); parcel.writeString(processName); parcel.writeInt(oomScore); parcel.writeLong(pgfault); parcel.writeLong(pgmajfault); parcel.writeLong(rssInBytes); parcel.writeLong(cacheInBytes); parcel.writeLong(swapInBytes); parcel.writeLong(startTimeNanos); } } services/core/java/com/android/server/am/ActivityManagerService.java +2 −35 Original line number Diff line number Diff line Loading @@ -120,8 +120,6 @@ import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_UID_OBSER import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM; import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.server.am.MemoryStatUtil.hasMemcg; import static com.android.server.am.MemoryStatUtil.readMemoryStatFromFilesystem; import static com.android.server.am.MemoryStatUtil.readRssHighWaterMarkFromProcfs; import static com.android.server.pm.PackageManagerService.PLATFORM_PACKAGE_NAME; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_CLEANUP; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_CONFIGURATION; Loading Loading @@ -178,7 +176,6 @@ import android.app.Instrumentation; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.app.ProcessMemoryHighWaterMark; import android.app.ProcessMemoryState; import android.app.ProfilerInfo; import android.app.WaitResult; Loading Loading @@ -349,7 +346,6 @@ import com.android.server.SystemServiceManager; import com.android.server.ThreadPriorityBooster; import com.android.server.Watchdog; import com.android.server.am.ActivityManagerServiceDumpProcessesProto.UidObserverRegistrationProto; import com.android.server.am.MemoryStatUtil.MemoryStat; import com.android.server.appop.AppOpsService; import com.android.server.contentcapture.ContentCaptureManagerInternal; import com.android.server.firewall.IntentFirewall; Loading Loading @@ -17861,42 +17857,13 @@ public class ActivityManagerService extends IActivityManager.Stub synchronized (mPidsSelfLocked) { for (int i = 0, size = mPidsSelfLocked.size(); i < size; i++) { final ProcessRecord r = mPidsSelfLocked.valueAt(i); final int pid = r.pid; final int uid = r.uid; final MemoryStat memoryStat = readMemoryStatFromFilesystem(uid, pid); if (memoryStat == null) { continue; } ProcessMemoryState processMemoryState = new ProcessMemoryState(uid, r.processName, r.curAdj, memoryStat.pgfault, memoryStat.pgmajfault, memoryStat.rssInBytes, memoryStat.cacheInBytes, memoryStat.swapInBytes, memoryStat.startTimeNanos); processMemoryStates.add(processMemoryState); processMemoryStates.add( new ProcessMemoryState(r.uid, r.pid, r.processName, r.curAdj)); } } return processMemoryStates; } @Override public List<ProcessMemoryHighWaterMark> getMemoryHighWaterMarkForProcesses() { List<ProcessMemoryHighWaterMark> results = new ArrayList<>(); synchronized (mPidsSelfLocked) { for (int i = 0, size = mPidsSelfLocked.size(); i < size; i++) { final ProcessRecord r = mPidsSelfLocked.valueAt(i); final long rssHighWaterMarkInBytes = readRssHighWaterMarkFromProcfs(r.pid); results.add(new ProcessMemoryHighWaterMark(r.uid, r.processName, rssHighWaterMarkInBytes)); } } return results; } @Override public int handleIncomingUser(int callingPid, int callingUid, int userId, boolean allowAll, int allowMode, String name, String callerPackage) { Loading
cmds/statsd/src/atoms.proto +8 −2 Original line number Diff line number Diff line Loading @@ -3958,7 +3958,7 @@ message ProcessMemoryState { 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; Loading @@ -3978,6 +3978,9 @@ message ProcessMemoryState { // 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; } /* Loading @@ -4000,7 +4003,7 @@ message NativeProcessMemoryState { 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. Loading @@ -4013,6 +4016,9 @@ message NativeProcessMemoryState { // 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; } /* Loading
core/java/android/app/ActivityManagerInternal.java +1 −8 Original line number Diff line number Diff line Loading @@ -168,19 +168,12 @@ public abstract class ActivityManagerInternal { public abstract boolean isUidActive(int uid); /** * Returns a list that contains the memory stats for currently running processes. * Returns a list of running processes along with corresponding uids, pids and their oom score. * * Only processes managed by ActivityManagerService are included. */ public abstract List<ProcessMemoryState> getMemoryStateForProcesses(); /** * Returns a list that contains the memory high-water mark for currently running processes. * * Only processes managed by ActivityManagerService are included. */ public abstract List<ProcessMemoryHighWaterMark> getMemoryHighWaterMarkForProcesses(); /** * Checks to see if the calling pid is allowed to handle the user. Returns adjusted user id as * needed. Loading
core/java/android/app/ProcessMemoryHighWaterMark.javadeleted 100644 → 0 +0 −67 Original line number Diff line number Diff line /* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.app; import android.os.Parcel; import android.os.Parcelable; /** * The memory high-water mark value for a process. * {@hide} */ public final class ProcessMemoryHighWaterMark implements Parcelable { public final int uid; public final String processName; public final long rssHighWaterMarkInBytes; public ProcessMemoryHighWaterMark(int uid, String processName, long rssHighWaterMarkInBytes) { this.uid = uid; this.processName = processName; this.rssHighWaterMarkInBytes = rssHighWaterMarkInBytes; } private ProcessMemoryHighWaterMark(Parcel in) { uid = in.readInt(); processName = in.readString(); rssHighWaterMarkInBytes = in.readLong(); } public static final @android.annotation.NonNull Creator<ProcessMemoryHighWaterMark> CREATOR = new Creator<ProcessMemoryHighWaterMark>() { @Override public ProcessMemoryHighWaterMark createFromParcel(Parcel in) { return new ProcessMemoryHighWaterMark(in); } @Override public ProcessMemoryHighWaterMark[] newArray(int size) { return new ProcessMemoryHighWaterMark[size]; } }; @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel parcel, int flags) { parcel.writeInt(uid); parcel.writeString(processName); parcel.writeLong(rssHighWaterMarkInBytes); } }
core/java/android/app/ProcessMemoryState.java +6 −28 Original line number Diff line number Diff line Loading @@ -20,44 +20,27 @@ import android.os.Parcel; import android.os.Parcelable; /** * The memory stats for a process. * State (oom score) for processes known to activity manager. * {@hide} */ public final class ProcessMemoryState implements Parcelable { public final int uid; public final int pid; public final String processName; public final int oomScore; public final long pgfault; public final long pgmajfault; public final long rssInBytes; public final long cacheInBytes; public final long swapInBytes; public final long startTimeNanos; public ProcessMemoryState(int uid, String processName, int oomScore, long pgfault, long pgmajfault, long rssInBytes, long cacheInBytes, long swapInBytes, long startTimeNanos) { public ProcessMemoryState(int uid, int pid, String processName, int oomScore) { this.uid = uid; this.pid = pid; this.processName = processName; this.oomScore = oomScore; this.pgfault = pgfault; this.pgmajfault = pgmajfault; this.rssInBytes = rssInBytes; this.cacheInBytes = cacheInBytes; this.swapInBytes = swapInBytes; this.startTimeNanos = startTimeNanos; } private ProcessMemoryState(Parcel in) { uid = in.readInt(); pid = in.readInt(); processName = in.readString(); oomScore = in.readInt(); pgfault = in.readLong(); pgmajfault = in.readLong(); rssInBytes = in.readLong(); cacheInBytes = in.readLong(); swapInBytes = in.readLong(); startTimeNanos = in.readLong(); } public static final @android.annotation.NonNull Creator<ProcessMemoryState> CREATOR = new Creator<ProcessMemoryState>() { Loading @@ -80,13 +63,8 @@ public final class ProcessMemoryState implements Parcelable { @Override public void writeToParcel(Parcel parcel, int i) { parcel.writeInt(uid); parcel.writeInt(pid); parcel.writeString(processName); parcel.writeInt(oomScore); parcel.writeLong(pgfault); parcel.writeLong(pgmajfault); parcel.writeLong(rssInBytes); parcel.writeLong(cacheInBytes); parcel.writeLong(swapInBytes); parcel.writeLong(startTimeNanos); } }
services/core/java/com/android/server/am/ActivityManagerService.java +2 −35 Original line number Diff line number Diff line Loading @@ -120,8 +120,6 @@ import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_UID_OBSER import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM; import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.server.am.MemoryStatUtil.hasMemcg; import static com.android.server.am.MemoryStatUtil.readMemoryStatFromFilesystem; import static com.android.server.am.MemoryStatUtil.readRssHighWaterMarkFromProcfs; import static com.android.server.pm.PackageManagerService.PLATFORM_PACKAGE_NAME; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_CLEANUP; import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_CONFIGURATION; Loading Loading @@ -178,7 +176,6 @@ import android.app.Instrumentation; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.app.ProcessMemoryHighWaterMark; import android.app.ProcessMemoryState; import android.app.ProfilerInfo; import android.app.WaitResult; Loading Loading @@ -349,7 +346,6 @@ import com.android.server.SystemServiceManager; import com.android.server.ThreadPriorityBooster; import com.android.server.Watchdog; import com.android.server.am.ActivityManagerServiceDumpProcessesProto.UidObserverRegistrationProto; import com.android.server.am.MemoryStatUtil.MemoryStat; import com.android.server.appop.AppOpsService; import com.android.server.contentcapture.ContentCaptureManagerInternal; import com.android.server.firewall.IntentFirewall; Loading Loading @@ -17861,42 +17857,13 @@ public class ActivityManagerService extends IActivityManager.Stub synchronized (mPidsSelfLocked) { for (int i = 0, size = mPidsSelfLocked.size(); i < size; i++) { final ProcessRecord r = mPidsSelfLocked.valueAt(i); final int pid = r.pid; final int uid = r.uid; final MemoryStat memoryStat = readMemoryStatFromFilesystem(uid, pid); if (memoryStat == null) { continue; } ProcessMemoryState processMemoryState = new ProcessMemoryState(uid, r.processName, r.curAdj, memoryStat.pgfault, memoryStat.pgmajfault, memoryStat.rssInBytes, memoryStat.cacheInBytes, memoryStat.swapInBytes, memoryStat.startTimeNanos); processMemoryStates.add(processMemoryState); processMemoryStates.add( new ProcessMemoryState(r.uid, r.pid, r.processName, r.curAdj)); } } return processMemoryStates; } @Override public List<ProcessMemoryHighWaterMark> getMemoryHighWaterMarkForProcesses() { List<ProcessMemoryHighWaterMark> results = new ArrayList<>(); synchronized (mPidsSelfLocked) { for (int i = 0, size = mPidsSelfLocked.size(); i < size; i++) { final ProcessRecord r = mPidsSelfLocked.valueAt(i); final long rssHighWaterMarkInBytes = readRssHighWaterMarkFromProcfs(r.pid); results.add(new ProcessMemoryHighWaterMark(r.uid, r.processName, rssHighWaterMarkInBytes)); } } return results; } @Override public int handleIncomingUser(int callingPid, int callingUid, int userId, boolean allowAll, int allowMode, String name, String callerPackage) {