diff options
| author | 2021-02-10 18:32:15 +0000 | |
|---|---|---|
| committer | 2021-02-10 18:32:15 +0000 | |
| commit | df594989e632cefd2d4bdad94d728e65d7d60036 (patch) | |
| tree | 41ccc73e69da94b1ae4209444c8698400420bd9d | |
| parent | 5e4dadb0a0fb036f6fac54f8c91bdb8e7d0cbf82 (diff) | |
| parent | 7d360a08a025cba7eda6c7e7becc64db9c4ee136 (diff) | |
Merge changes from topic "b/167709539" am: ad688d3e8c am: 7d360a08a0
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1564601
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: Ib162f0d936d4876987dbc2beceb570955bd9530d
| -rw-r--r-- | core/java/android/os/Debug.java | 8 | ||||
| -rw-r--r-- | core/jni/android_os_Debug.cpp | 13 | ||||
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityManagerService.java | 23 |
3 files changed, 42 insertions, 2 deletions
diff --git a/core/java/android/os/Debug.java b/core/java/android/os/Debug.java index 5b2bef31d1ed..c82149e390ba 100644 --- a/core/java/android/os/Debug.java +++ b/core/java/android/os/Debug.java @@ -2567,6 +2567,14 @@ public final class Debug public static native long getIonHeapsSizeKb(); /** + * Return memory size in kilobytes allocated for DMA-BUF heap pools or -1 if + * /sys/kernel/dma_heap/total_pools_kb could not be read. + * + * @hide + */ + public static native long getDmabufHeapPoolsSizeKb(); + + /** * Return memory size in kilobytes allocated for ION pools or -1 if * /sys/kernel/ion/total_pools_kb could not be read. * diff --git a/core/jni/android_os_Debug.cpp b/core/jni/android_os_Debug.cpp index e0a3f2a398c7..2a93b4629e27 100644 --- a/core/jni/android_os_Debug.cpp +++ b/core/jni/android_os_Debug.cpp @@ -824,6 +824,17 @@ static jlong android_os_Debug_getIonPoolsSizeKb(JNIEnv* env, jobject clazz) { return poolsSizeKb; } +static jlong android_os_Debug_getDmabufHeapPoolsSizeKb(JNIEnv* env, jobject clazz) { + jlong poolsSizeKb = -1; + uint64_t size; + + if (meminfo::ReadDmabufHeapPoolsSizeKb(&size)) { + poolsSizeKb = size; + } + + return poolsSizeKb; +} + static jlong android_os_Debug_getDmabufMappedSizeKb(JNIEnv* env, jobject clazz) { jlong dmabufPss = 0; std::vector<dmabufinfo::DmaBuffer> dmabufs; @@ -936,6 +947,8 @@ static const JNINativeMethod gMethods[] = { (void*)android_os_Debug_getIonPoolsSizeKb }, { "getDmabufMappedSizeKb", "()J", (void*)android_os_Debug_getDmabufMappedSizeKb }, + { "getDmabufHeapPoolsSizeKb", "()J", + (void*)android_os_Debug_getDmabufHeapPoolsSizeKb }, { "getGpuTotalUsageKb", "()J", (void*)android_os_Debug_getGpuTotalUsageKb }, { "isVmapStack", "()Z", diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 8db7a69f4ef5..c19bedebfeac 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -13746,14 +13746,23 @@ public class ActivityManagerService extends IActivityManager.Stub pw.print(" mapped + "); pw.print(stringifyKBSize(dmabufUnmapped)); pw.println(" unmapped)"); - // TODO(b/167709539): also add pooled memory from DMA-BUF heaps kernelUsed += totalExportedDmabuf; } + final long totalDmabufHeapPool = Debug.getDmabufHeapPoolsSizeKb(); + if (totalDmabufHeapPool >= 0) { + pw.print("DMA-BUF Heaps pool: "); + pw.println(stringifyKBSize(totalDmabufHeapPool)); + } } final long gpuUsage = Debug.getGpuTotalUsageKb(); if (gpuUsage >= 0) { pw.print(" GPU: "); pw.println(stringifyKBSize(gpuUsage)); } + + /* + * Note: ION/DMA-BUF heap pools are reclaimable and hence, they are included as part of + * memInfo.getCachedSizeKb(). + */ final long lostRAM = memInfo.getTotalSizeKb() - (totalPss - totalSwapPss) - memInfo.getFreeSizeKb() - memInfo.getCachedSizeKb() - kernelUsed - memInfo.getZramTotalSizeKb(); @@ -14565,9 +14574,14 @@ public class ActivityManagerService extends IActivityManager.Stub memInfoBuilder.append("DMA-BUF: "); memInfoBuilder.append(stringifyKBSize(totalExportedDmabuf)); memInfoBuilder.append("\n"); - // TODO(b/167709539): also add pooled memory from DMA-BUF heaps kernelUsed += totalExportedDmabuf; } + final long totalDmabufHeapPool = Debug.getDmabufHeapPoolsSizeKb(); + if (totalDmabufHeapPool >= 0) { + memInfoBuilder.append("DMA-BUF Heaps pool: "); + memInfoBuilder.append(stringifyKBSize(totalDmabufHeapPool)); + memInfoBuilder.append("\n"); + } } final long gpuUsage = Debug.getGpuTotalUsageKb(); @@ -14580,6 +14594,11 @@ public class ActivityManagerService extends IActivityManager.Stub memInfoBuilder.append(stringifyKBSize( totalPss - cachedPss + kernelUsed)); memInfoBuilder.append("\n"); + + /* + * Note: ION/DMA-BUF heap pools are reclaimable and hence, they are included as part of + * memInfo.getCachedSizeKb(). + */ memInfoBuilder.append(" Lost RAM: "); memInfoBuilder.append(stringifyKBSize(memInfo.getTotalSizeKb() - (totalPss - totalSwapPss) - memInfo.getFreeSizeKb() - memInfo.getCachedSizeKb() |