diff options
| author | 2024-02-06 16:40:14 +0000 | |
|---|---|---|
| committer | 2024-02-06 16:40:14 +0000 | |
| commit | 5fbc86ca8c4f085692a6341a53b1b68924cf0498 (patch) | |
| tree | 70086a225f3763c69a6f01e92909e972a6cc0d81 | |
| parent | 0ace856e3815f7606b05157de420ee61a2c4904b (diff) | |
| parent | a73a8b3a9e4d9112db4790e3c760fa56e489f229 (diff) | |
Merge "[Optimize][am_kill]add pss for process exit due to am_kill" into main am: a73a8b3a9e
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/2935570
Change-Id: I2843d67c43247fcb7aadf39e81831f369c16f03f
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
3 files changed, 13 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/am/EventLogTags.logtags b/services/core/java/com/android/server/am/EventLogTags.logtags index 2aed8476d031..0f75ad481662 100644 --- a/services/core/java/com/android/server/am/EventLogTags.logtags +++ b/services/core/java/com/android/server/am/EventLogTags.logtags @@ -31,7 +31,7 @@ option java_package com.android.server.am 30017 am_low_memory (Num Processes|1|1) # Kill a process to reclaim memory. -30023 am_kill (User|1|5),(PID|1|5),(Process Name|3),(OomAdj|1|5),(Reason|3) +30023 am_kill (User|1|5),(PID|1|5),(Process Name|3),(OomAdj|1|5),(Reason|3),(Rss|2|2) # Discard an undelivered serialized broadcast (timeout/ANR/crash) 30024 am_broadcast_discard_filter (User|1|5),(Broadcast|1|5),(Action|3),(Receiver Number|1|1),(BroadcastFilter|1|5) 30025 am_broadcast_discard_app (User|1|5),(Broadcast|1|5),(Action|3),(Receiver Number|1|1),(App|3) diff --git a/services/core/java/com/android/server/am/PhantomProcessRecord.java b/services/core/java/com/android/server/am/PhantomProcessRecord.java index 1a692df94dd0..ac96bdc1a27d 100644 --- a/services/core/java/com/android/server/am/PhantomProcessRecord.java +++ b/services/core/java/com/android/server/am/PhantomProcessRecord.java @@ -105,6 +105,11 @@ public final class PhantomProcessRecord { } } + public long getRss(int pid) { + long[] rss = Process.getRss(pid); + return (rss != null && rss.length > 0) ? rss[0] : 0; + } + @GuardedBy("mLock") void killLocked(String reason, boolean noisy) { if (!mKilled) { @@ -115,7 +120,7 @@ public final class PhantomProcessRecord { } if (mPid > 0) { EventLog.writeEvent(EventLogTags.AM_KILL, UserHandle.getUserId(mUid), - mPid, mProcessName, mAdj, reason); + mPid, mProcessName, mAdj, reason, getRss(mPid)); if (!Process.supportsPidFd()) { onProcDied(false); } else { diff --git a/services/core/java/com/android/server/am/ProcessRecord.java b/services/core/java/com/android/server/am/ProcessRecord.java index b4cd6a31291e..36693facec6c 100644 --- a/services/core/java/com/android/server/am/ProcessRecord.java +++ b/services/core/java/com/android/server/am/ProcessRecord.java @@ -1184,6 +1184,11 @@ class ProcessRecord implements WindowProcessListener { } } + public long getRss(int pid) { + long[] rss = Process.getRss(pid); + return (rss != null && rss.length > 0) ? rss[0] : 0; + } + @GuardedBy("mService") void killLocked(String reason, @Reason int reasonCode, boolean noisy) { killLocked(reason, reasonCode, ApplicationExitInfo.SUBREASON_UNKNOWN, noisy, true); @@ -1227,7 +1232,7 @@ class ProcessRecord implements WindowProcessListener { if (mPid > 0) { mService.mProcessList.noteAppKill(this, reasonCode, subReason, description); EventLog.writeEvent(EventLogTags.AM_KILL, - userId, mPid, processName, mState.getSetAdj(), reason); + userId, mPid, processName, mState.getSetAdj(), reason, getRss(mPid)); Process.killProcessQuiet(mPid); killProcessGroupIfNecessaryLocked(asyncKPG); } else { |