diff options
| author | 2015-10-13 16:38:16 -0700 | |
|---|---|---|
| committer | 2015-10-15 16:04:05 -0700 | |
| commit | 468ae2dacafe3b87f26e8c6edbc4f9657bbac352 (patch) | |
| tree | ee2c19686c93acc7aff8fc466195c50419fd9983 | |
| parent | cbc4e08fb53aacbe028228086d7344780fe81129 (diff) | |
meminfo: Change size suffix to comply with iec, make it parseable with numfmt.
Re-factor to allow for future format flexibility
Add locale-specific large number thousand separator
Change-Id: If4b7c958b5f5fb7094dd4c10b4532e156e983935
Signed-off-by: Sasha Levitskiy <sanek@google.com>
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityManagerService.java | 171 |
1 files changed, 102 insertions, 69 deletions
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index e7601c2ec93e..ee8a5e8ffbd3 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -14054,8 +14054,8 @@ public final class ActivityManagerService extends ActivityManagerNative pw.print(": "); pw.print(name); pw.print(" ("); - pw.print(mProcessList.getMemLevel(adj)/1024); - pw.println(" kB)"); + pw.print(stringifySize(mProcessList.getMemLevel(adj), 1024)); + pw.println(")"); } boolean dumpOomLocked(FileDescriptor fd, PrintWriter pw, String[] args, @@ -14836,7 +14836,7 @@ public final class ActivityManagerService extends ActivityManagerNative for (int i=0; i<items.size(); i++) { MemItem mi = items.get(i); if (!isCompact) { - pw.print(prefix); pw.printf("%7d kB: ", mi.pss); pw.println(mi.label); + pw.printf("%s%s: %s\n", prefix, stringifyKBSize(mi.pss), mi.label); } else if (mi.isProc) { pw.print("proc,"); pw.print(tag); pw.print(","); pw.print(mi.shortLabel); pw.print(","); pw.print(mi.id); pw.print(","); pw.print(mi.pss); @@ -14912,7 +14912,7 @@ public final class ActivityManagerService extends ActivityManagerNative // short checkin version pw.print("time,"); pw.print(uptime); pw.print(","); pw.println(realtime); } else { - pw.println("Applications Memory Usage (kB):"); + pw.println("Applications Memory Usage (in Kilobytes):"); pw.println("Uptime: " + uptime + " Realtime: " + realtime); } } @@ -14946,6 +14946,26 @@ public final class ActivityManagerService extends ActivityManagerNative return longOut; } + private static String stringifySize(long size, int order) { + Locale locale = Locale.US; + switch (order) { + case 1: + return String.format(locale, "%,13d", size); + case 1024: + return String.format(locale, "%,9dK", size / 1024); + case 1024 * 1024: + return String.format(locale, "%,5dM", size / 1024 / 1024); + case 1024 * 1024 * 1024: + return String.format(locale, "%,1dG", size / 1024 / 1024 / 1024); + default: + throw new IllegalArgumentException("Invalid size order"); + } + } + + private static String stringifyKBSize(long size) { + return stringifySize(size * 1024, 1024); + } + final void dumpApplicationMemoryUsage(FileDescriptor fd, PrintWriter pw, String prefix, String[] args, boolean brief, PrintWriter categoryPw) { boolean dumpDetails = false; @@ -15299,8 +15319,8 @@ public final class ActivityManagerService extends ActivityManagerNative } if (!brief) { if (!isCompact) { - pw.print("Total RAM: "); pw.print(memInfo.getTotalSizeKb()); - pw.print(" kB (status "); + pw.print("Total RAM: "); pw.print(stringifyKBSize(memInfo.getTotalSizeKb())); + pw.print(" (status "); switch (mLastMemoryLevel) { case ProcessStats.ADJ_MEM_FACTOR_NORMAL: pw.println("normal)"); @@ -15319,11 +15339,16 @@ public final class ActivityManagerService extends ActivityManagerNative pw.println(")"); break; } - pw.print(" Free RAM: "); pw.print(cachedPss + memInfo.getCachedSizeKb() - + memInfo.getFreeSizeKb()); pw.print(" kB ("); - pw.print(cachedPss); pw.print(" cached pss + "); - pw.print(memInfo.getCachedSizeKb()); pw.print(" cached kernel + "); - pw.print(memInfo.getFreeSizeKb()); pw.println(" free)"); + pw.print(" Free RAM: "); + pw.print(stringifyKBSize(cachedPss + memInfo.getCachedSizeKb() + + memInfo.getFreeSizeKb())); + pw.print(" ("); + pw.print(stringifyKBSize(cachedPss)); + pw.print(" cached pss + "); + pw.print(stringifyKBSize(memInfo.getCachedSizeKb())); + pw.print(" cached kernel + "); + pw.print(stringifyKBSize(memInfo.getFreeSizeKb())); + pw.println(" free)"); } else { pw.print("ram,"); pw.print(memInfo.getTotalSizeKb()); pw.print(","); pw.print(cachedPss + memInfo.getCachedSizeKb() @@ -15332,24 +15357,25 @@ public final class ActivityManagerService extends ActivityManagerNative } } if (!isCompact) { - pw.print(" Used RAM: "); pw.print(totalPss - cachedPss - + memInfo.getKernelUsedSizeKb()); pw.print(" kB ("); - pw.print(totalPss - cachedPss); pw.print(" used pss + "); - pw.print(memInfo.getKernelUsedSizeKb()); pw.print(" kernel)\n"); - pw.print(" Lost RAM: "); pw.print(memInfo.getTotalSizeKb() + pw.print(" Used RAM: "); pw.print(stringifyKBSize(totalPss - cachedPss + + memInfo.getKernelUsedSizeKb())); pw.print(" ("); + pw.print(stringifyKBSize(totalPss - cachedPss)); pw.print(" used pss + "); + pw.print(stringifyKBSize(memInfo.getKernelUsedSizeKb())); pw.print(" kernel)\n"); + pw.print(" Lost RAM: "); pw.println(stringifyKBSize(memInfo.getTotalSizeKb() - totalPss - memInfo.getFreeSizeKb() - memInfo.getCachedSizeKb() - - memInfo.getKernelUsedSizeKb()); pw.println(" kB"); + - memInfo.getKernelUsedSizeKb())); } if (!brief) { if (memInfo.getZramTotalSizeKb() != 0) { if (!isCompact) { - pw.print(" ZRAM: "); pw.print(memInfo.getZramTotalSizeKb()); - pw.print(" kB physical used for "); - pw.print(memInfo.getSwapTotalSizeKb() - - memInfo.getSwapFreeSizeKb()); - pw.print(" kB in swap ("); - pw.print(memInfo.getSwapTotalSizeKb()); - pw.println(" kB total swap)"); + pw.print(" ZRAM: "); + pw.print(stringifyKBSize(memInfo.getZramTotalSizeKb())); + pw.print(" physical used for "); + pw.print(stringifyKBSize(memInfo.getSwapTotalSizeKb() + - memInfo.getSwapFreeSizeKb())); + pw.print(" in swap ("); + pw.print(stringifyKBSize(memInfo.getSwapTotalSizeKb())); + pw.println(" total swap)"); } else { pw.print("zram,"); pw.print(memInfo.getZramTotalSizeKb()); pw.print(","); pw.print(memInfo.getSwapTotalSizeKb()); pw.print(","); @@ -15360,23 +15386,23 @@ public final class ActivityManagerService extends ActivityManagerNative if (!isCompact) { if (ksm[KSM_SHARING] != 0 || ksm[KSM_SHARED] != 0 || ksm[KSM_UNSHARED] != 0 || ksm[KSM_VOLATILE] != 0) { - pw.print(" KSM: "); pw.print(ksm[KSM_SHARING]); - pw.print(" kB saved from shared "); - pw.print(ksm[KSM_SHARED]); pw.println(" kB"); - pw.print(" "); pw.print(ksm[KSM_UNSHARED]); - pw.print(" kB unshared; "); - pw.print(ksm[KSM_VOLATILE]); pw.println(" kB volatile"); + pw.print(" KSM: "); pw.print(stringifyKBSize(ksm[KSM_SHARING])); + pw.print(" saved from shared "); + pw.print(stringifyKBSize(ksm[KSM_SHARED])); + pw.print(" "); pw.print(stringifyKBSize(ksm[KSM_UNSHARED])); + pw.print(" unshared; "); + pw.print(stringifyKBSize( + ksm[KSM_VOLATILE])); pw.println(" volatile"); } pw.print(" Tuning: "); pw.print(ActivityManager.staticGetMemoryClass()); pw.print(" (large "); pw.print(ActivityManager.staticGetLargeMemoryClass()); pw.print("), oom "); - pw.print(mProcessList.getMemLevel(ProcessList.CACHED_APP_MAX_ADJ)/1024); - pw.print(" kB"); + pw.print(stringifySize( + mProcessList.getMemLevel(ProcessList.CACHED_APP_MAX_ADJ), 1024)); pw.print(", restore limit "); - pw.print(mProcessList.getCachedRestoreThresholdKb()); - pw.print(" kB"); + pw.print(stringifyKBSize(mProcessList.getCachedRestoreThresholdKb())); if (ActivityManager.isLowRamDeviceStatic()) { pw.print(" (low-ram)"); } @@ -15414,12 +15440,12 @@ public final class ActivityManagerService extends ActivityManagerNative sb.append(ProcessList.makeProcStateString(procState)); sb.append(' '); ProcessList.appendRamKb(sb, pss); - sb.append(" kB: "); + sb.append(": "); sb.append(name); if (memtrack > 0) { sb.append(" ("); - sb.append(memtrack); - sb.append(" kB memtrack)"); + sb.append(stringifyKBSize(memtrack)); + sb.append(" memtrack)"); } } @@ -15573,11 +15599,11 @@ public final class ActivityManagerService extends ActivityManagerNative fullJavaBuilder.append(" "); ProcessList.appendRamKb(fullJavaBuilder, totalPss); - fullJavaBuilder.append(" kB: TOTAL"); + fullJavaBuilder.append(": TOTAL"); if (totalMemtrack > 0) { fullJavaBuilder.append(" ("); - fullJavaBuilder.append(totalMemtrack); - fullJavaBuilder.append(" kB memtrack)"); + fullJavaBuilder.append(stringifyKBSize(totalMemtrack)); + fullJavaBuilder.append(" memtrack)"); } else { } fullJavaBuilder.append("\n"); @@ -15589,47 +15615,54 @@ public final class ActivityManagerService extends ActivityManagerNative StringBuilder memInfoBuilder = new StringBuilder(1024); Debug.getMemInfo(infos); memInfoBuilder.append(" MemInfo: "); - memInfoBuilder.append(infos[Debug.MEMINFO_SLAB]).append(" kB slab, "); - memInfoBuilder.append(infos[Debug.MEMINFO_SHMEM]).append(" kB shmem, "); - memInfoBuilder.append(infos[Debug.MEMINFO_VM_ALLOC_USED]).append(" kB vm alloc, "); - memInfoBuilder.append(infos[Debug.MEMINFO_PAGE_TABLES]).append(" kB page tables "); - memInfoBuilder.append(infos[Debug.MEMINFO_KERNEL_STACK]).append(" kB kernel stack\n"); + memInfoBuilder.append(stringifyKBSize(infos[Debug.MEMINFO_SLAB])).append(" slab, "); + memInfoBuilder.append(stringifyKBSize(infos[Debug.MEMINFO_SHMEM])).append(" shmem, "); + memInfoBuilder.append(stringifyKBSize( + infos[Debug.MEMINFO_VM_ALLOC_USED])).append(" vm alloc, "); + memInfoBuilder.append(stringifyKBSize( + infos[Debug.MEMINFO_PAGE_TABLES])).append(" page tables "); + memInfoBuilder.append(stringifyKBSize( + infos[Debug.MEMINFO_KERNEL_STACK])).append(" kernel stack\n"); memInfoBuilder.append(" "); - memInfoBuilder.append(infos[Debug.MEMINFO_BUFFERS]).append(" kB buffers, "); - memInfoBuilder.append(infos[Debug.MEMINFO_CACHED]).append(" kB cached, "); - memInfoBuilder.append(infos[Debug.MEMINFO_MAPPED]).append(" kB mapped, "); - memInfoBuilder.append(infos[Debug.MEMINFO_FREE]).append(" kB free\n"); + memInfoBuilder.append(stringifyKBSize(infos[Debug.MEMINFO_BUFFERS])).append(" buffers, "); + memInfoBuilder.append(stringifyKBSize(infos[Debug.MEMINFO_CACHED])).append(" cached, "); + memInfoBuilder.append(stringifyKBSize(infos[Debug.MEMINFO_MAPPED])).append(" mapped, "); + memInfoBuilder.append(stringifyKBSize(infos[Debug.MEMINFO_FREE])).append(" free\n"); if (infos[Debug.MEMINFO_ZRAM_TOTAL] != 0) { memInfoBuilder.append(" ZRAM: "); - memInfoBuilder.append(infos[Debug.MEMINFO_ZRAM_TOTAL]); - memInfoBuilder.append(" kB RAM, "); - memInfoBuilder.append(infos[Debug.MEMINFO_SWAP_TOTAL]); - memInfoBuilder.append(" kB swap total, "); - memInfoBuilder.append(infos[Debug.MEMINFO_SWAP_FREE]); - memInfoBuilder.append(" kB swap free\n"); + memInfoBuilder.append(stringifyKBSize(infos[Debug.MEMINFO_ZRAM_TOTAL])); + memInfoBuilder.append(" RAM, "); + memInfoBuilder.append(stringifyKBSize(infos[Debug.MEMINFO_SWAP_TOTAL])); + memInfoBuilder.append(" swap total, "); + memInfoBuilder.append(stringifyKBSize(infos[Debug.MEMINFO_SWAP_FREE])); + memInfoBuilder.append(" swap free\n"); } final long[] ksm = getKsmInfo(); if (ksm[KSM_SHARING] != 0 || ksm[KSM_SHARED] != 0 || ksm[KSM_UNSHARED] != 0 || ksm[KSM_VOLATILE] != 0) { - memInfoBuilder.append(" KSM: "); memInfoBuilder.append(ksm[KSM_SHARING]); - memInfoBuilder.append(" kB saved from shared "); - memInfoBuilder.append(ksm[KSM_SHARED]); memInfoBuilder.append(" kB\n"); - memInfoBuilder.append(" "); memInfoBuilder.append(ksm[KSM_UNSHARED]); - memInfoBuilder.append(" kB unshared; "); - memInfoBuilder.append(ksm[KSM_VOLATILE]); memInfoBuilder.append(" kB volatile\n"); + memInfoBuilder.append(" KSM: "); + memInfoBuilder.append(stringifyKBSize(ksm[KSM_SHARING])); + memInfoBuilder.append(" saved from shared "); + memInfoBuilder.append(stringifyKBSize(ksm[KSM_SHARED])); + memInfoBuilder.append("\n "); + memInfoBuilder.append(stringifyKBSize(ksm[KSM_UNSHARED])); + memInfoBuilder.append(" unshared; "); + memInfoBuilder.append(stringifyKBSize(ksm[KSM_VOLATILE])); + memInfoBuilder.append(" volatile\n"); } memInfoBuilder.append(" Free RAM: "); - memInfoBuilder.append(cachedPss + memInfo.getCachedSizeKb() - + memInfo.getFreeSizeKb()); - memInfoBuilder.append(" kB\n"); + memInfoBuilder.append(stringifyKBSize(cachedPss + memInfo.getCachedSizeKb() + + memInfo.getFreeSizeKb())); + memInfoBuilder.append("\n"); memInfoBuilder.append(" Used RAM: "); - memInfoBuilder.append(totalPss - cachedPss + memInfo.getKernelUsedSizeKb()); - memInfoBuilder.append(" kB\n"); + memInfoBuilder.append(stringifyKBSize( + totalPss - cachedPss + memInfo.getKernelUsedSizeKb())); + memInfoBuilder.append("\n"); memInfoBuilder.append(" Lost RAM: "); - memInfoBuilder.append(memInfo.getTotalSizeKb() + memInfoBuilder.append(stringifyKBSize(memInfo.getTotalSizeKb() - totalPss - memInfo.getFreeSizeKb() - memInfo.getCachedSizeKb() - - memInfo.getKernelUsedSizeKb()); - memInfoBuilder.append(" kB\n"); + - memInfo.getKernelUsedSizeKb())); + memInfoBuilder.append("\n"); Slog.i(TAG, "Low on memory:"); Slog.i(TAG, shortNativeBuilder.toString()); Slog.i(TAG, fullJavaBuilder.toString()); |