diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 09b06132040e2..bd08b628483e7 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -13772,9 +13772,12 @@ public class ActivityManagerService extends IActivityManager.Stub pw.print(" unmapped + "); pw.print(stringifyKBSize(ionPool)); pw.println(" pools)"); + kernelUsed += ionUnmapped; // Note: mapped ION memory is not accounted in PSS due to VM_PFNMAP flag being - // set on ION VMAs, therefore consider the entire ION heap as used kernel memory - kernelUsed += ionHeap; + // set on ION VMAs, however it might be included by the memtrack HAL. + // Replace memtrack HAL reported Graphics category with mapped dmabufs + totalPss -= totalMemtrackGraphics; + totalPss += dmabufMapped; } else { final long totalExportedDmabuf = Debug.getDmabufTotalExportedKb(); if (totalExportedDmabuf >= 0) { @@ -14634,17 +14637,21 @@ public class ActivityManagerService extends IActivityManager.Stub long kernelUsed = memInfo.getKernelUsedSizeKb(); final long ionHeap = Debug.getIonHeapsSizeKb(); final long ionPool = Debug.getIonPoolsSizeKb(); + final long dmabufMapped = Debug.getDmabufMappedSizeKb(); if (ionHeap >= 0 && ionPool >= 0) { + final long ionUnmapped = ionHeap - dmabufMapped; memInfoBuilder.append(" ION: "); memInfoBuilder.append(stringifyKBSize(ionHeap + ionPool)); memInfoBuilder.append("\n"); + kernelUsed += ionUnmapped; // Note: mapped ION memory is not accounted in PSS due to VM_PFNMAP flag being - // set on ION VMAs, therefore consider the entire ION heap as used kernel memory - kernelUsed += ionHeap; + // set on ION VMAs, however it might be included by the memtrack HAL. + // Replace memtrack HAL reported Graphics category with mapped dmabufs + totalPss -= totalMemtrackGraphics; + totalPss += dmabufMapped; } else { final long totalExportedDmabuf = Debug.getDmabufTotalExportedKb(); if (totalExportedDmabuf >= 0) { - final long dmabufMapped = Debug.getDmabufMappedSizeKb(); final long dmabufUnmapped = totalExportedDmabuf - dmabufMapped; memInfoBuilder.append("DMA-BUF: "); memInfoBuilder.append(stringifyKBSize(totalExportedDmabuf));