From da5a9dd5ff58b38baff98a0446781f169eac06a7 Mon Sep 17 00:00:00 2001 From: Suren Baghdasaryan <surenb@google.com> Date: Mon, 25 Nov 2019 19:43:44 -0800 Subject: [PATCH] Add ION usage into dumpsys report and account ION pools as kernel cache Report ION pools, ION mapped and unmapped heap sizes. Account ION pools as kernel reclaimable memory which removes them from the "Lost RAM" category. Bug: 138148041 Test: dumpsys meminfo Change-Id: Ica3e1c3f73656b1b937f2fc58c18e0157e02bf57 Signed-off-by: Suren Baghdasaryan <surenb@google.com> --- .../server/am/ActivityManagerService.java | 40 ++++++++++++++++--- 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 35774ed3ca6f9..1c4f1e3ed5bf1 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -12799,14 +12799,31 @@ public class ActivityManagerService extends IActivityManager.Stub pw.println(totalPss - cachedPss); } } - long lostRAM = memInfo.getTotalSizeKb() - (totalPss - totalSwapPss) + long kernelUsed = memInfo.getKernelUsedSizeKb(); + final long ionHeap = Debug.getIonHeapsSizeKb(); + if (ionHeap > 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(" ("); + pw.print(stringifyKBSize(ionMapped)); + pw.print(" mapped + "); + pw.print(stringifyKBSize(ionUnmapped)); + pw.print(" unmapped + "); + pw.print(stringifyKBSize(ionPool)); + pw.println(" pools)"); + kernelUsed += ionUnmapped; + } + final long lostRAM = memInfo.getTotalSizeKb() - (totalPss - totalSwapPss) - memInfo.getFreeSizeKb() - memInfo.getCachedSizeKb() - - memInfo.getKernelUsedSizeKb() - memInfo.getZramTotalSizeKb(); + - kernelUsed - memInfo.getZramTotalSizeKb(); if (!opts.isCompact) { pw.print(" Used RAM: "); pw.print(stringifyKBSize(totalPss - cachedPss - + memInfo.getKernelUsedSizeKb())); pw.print(" ("); + + kernelUsed)); pw.print(" ("); pw.print(stringifyKBSize(totalPss - cachedPss)); pw.print(" used pss + "); - pw.print(stringifyKBSize(memInfo.getKernelUsedSizeKb())); pw.print(" kernel)\n"); + pw.print(stringifyKBSize(kernelUsed)); pw.print(" kernel)\n"); pw.print(" Lost RAM: "); pw.println(stringifyKBSize(lostRAM)); } else { pw.print("lostram,"); pw.println(lostRAM); @@ -13525,14 +13542,25 @@ public class ActivityManagerService extends IActivityManager.Stub memInfoBuilder.append(stringifyKBSize(cachedPss + memInfo.getCachedSizeKb() + memInfo.getFreeSizeKb())); memInfoBuilder.append("\n"); + long kernelUsed = memInfo.getKernelUsedSizeKb(); + final long ionHeap = Debug.getIonHeapsSizeKb(); + if (ionHeap > 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"); + kernelUsed += ionUnmapped; + } memInfoBuilder.append(" Used RAM: "); memInfoBuilder.append(stringifyKBSize( - totalPss - cachedPss + memInfo.getKernelUsedSizeKb())); + totalPss - cachedPss + kernelUsed)); memInfoBuilder.append("\n"); memInfoBuilder.append(" Lost RAM: "); memInfoBuilder.append(stringifyKBSize(memInfo.getTotalSizeKb() - (totalPss - totalSwapPss) - memInfo.getFreeSizeKb() - memInfo.getCachedSizeKb() - - memInfo.getKernelUsedSizeKb() - memInfo.getZramTotalSizeKb())); + - kernelUsed - memInfo.getZramTotalSizeKb())); memInfoBuilder.append("\n"); Slog.i(TAG, "Low on memory:"); Slog.i(TAG, shortNativeBuilder.toString()); -- GitLab