diff options
| author | 2020-09-18 18:12:17 -0700 | |
|---|---|---|
| committer | 2020-09-23 16:09:08 +0000 | |
| commit | 193da6e642aee5def8bf28effef4a1c1e93412b4 (patch) | |
| tree | 51c33fd7970bc6135aa56a848f2f0a1e2c1337e2 | |
| parent | f08e8871d43a80eea9cdc1fd277da4212244c85f (diff) | |
Report ION usage event when ION heap size is 0
In a situation when ION heap size is 0 dumpsys meminfo will not report
ION memory usage. Fix this by differentiating 0-size ION heap or pool
from the cases when /sys/kernel/ion/* do not exist or not readable.
Bug: 168942451
Test: emulate 0-size ION heap and run dumpsys meminfo
Signed-off-by: Suren Baghdasaryan <surenb@google.com>
Change-Id: I66624c9e3c73a59462cce8830a36323677db0029
| -rw-r--r-- | core/java/android/os/Debug.java | 6 | ||||
| -rw-r--r-- | core/jni/android_os_Debug.cpp | 4 | ||||
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityManagerService.java | 8 |
3 files changed, 10 insertions, 8 deletions
diff --git a/core/java/android/os/Debug.java b/core/java/android/os/Debug.java index 4b2cfe222dd6..a2e53e29193c 100644 --- a/core/java/android/os/Debug.java +++ b/core/java/android/os/Debug.java @@ -2551,14 +2551,16 @@ public final class Debug public static native long getZramFreeKb(); /** - * Return memory size in kilobytes allocated for ION heaps. + * Return memory size in kilobytes allocated for ION heaps or -1 if + * /sys/kernel/ion/total_heaps_kb could not be read. * * @hide */ public static native long getIonHeapsSizeKb(); /** - * Return memory size in kilobytes allocated for ION pools. + * Return memory size in kilobytes allocated for ION pools or -1 if + * /sys/kernel/ion/total_pools_kb could not be read. * * @hide */ diff --git a/core/jni/android_os_Debug.cpp b/core/jni/android_os_Debug.cpp index ef0eeec2c7af..5a859aabce7b 100644 --- a/core/jni/android_os_Debug.cpp +++ b/core/jni/android_os_Debug.cpp @@ -792,7 +792,7 @@ static jlong android_os_Debug_getFreeZramKb(JNIEnv* env, jobject clazz) { } static jlong android_os_Debug_getIonHeapsSizeKb(JNIEnv* env, jobject clazz) { - jlong heapsSizeKb = 0; + jlong heapsSizeKb = -1; uint64_t size; if (meminfo::ReadIonHeapsSizeKb(&size)) { @@ -803,7 +803,7 @@ static jlong android_os_Debug_getIonHeapsSizeKb(JNIEnv* env, jobject clazz) { } static jlong android_os_Debug_getIonPoolsSizeKb(JNIEnv* env, jobject clazz) { - jlong poolsSizeKb = 0; + jlong poolsSizeKb = -1; uint64_t size; if (meminfo::ReadIonPoolsSizeKb(&size)) { diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index a3fbd2ca1c7c..09c0ba37028a 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -13738,10 +13738,10 @@ public class ActivityManagerService extends IActivityManager.Stub } long kernelUsed = memInfo.getKernelUsedSizeKb(); final long ionHeap = Debug.getIonHeapsSizeKb(); - if (ionHeap > 0) { + final long ionPool = Debug.getIonPoolsSizeKb(); + if (ionHeap >= 0 && ionPool >= 0) { final long ionMapped = Debug.getIonMappedSizeKb(); final long ionUnmapped = ionHeap - ionMapped; - final long ionPool = Debug.getIonPoolsSizeKb(); pw.print(" ION: "); pw.print(stringifyKBSize(ionHeap + ionPool)); pw.print(" ("); @@ -14552,10 +14552,10 @@ public class ActivityManagerService extends IActivityManager.Stub memInfoBuilder.append("\n"); long kernelUsed = memInfo.getKernelUsedSizeKb(); final long ionHeap = Debug.getIonHeapsSizeKb(); - if (ionHeap > 0) { + final long ionPool = Debug.getIonPoolsSizeKb(); + if (ionHeap >= 0 && ionPool >= 0) { final long ionMapped = Debug.getIonMappedSizeKb(); final long ionUnmapped = ionHeap - ionMapped; - final long ionPool = Debug.getIonPoolsSizeKb(); memInfoBuilder.append(" ION: "); memInfoBuilder.append(stringifyKBSize(ionHeap + ionPool)); memInfoBuilder.append("\n"); |