From 5e099800f83651d7b7acc02048e28e45f6986ea3 Mon Sep 17 00:00:00 2001 From: Robert Benea Date: Wed, 4 Oct 2017 18:28:01 -0700 Subject: Incorporate slab reclaimable into meminfo Instead of using the whole slab mem for kernel usage, split the unreclaimable to kernel and reclaimable to cache (since is freed under mem. pressure). Test: tested on gobo Bug:67753120 Change-Id: I0f5a310bb88603ad7bb28e5398ea57c249c04fc2 --- core/java/android/os/Debug.java | 20 ++++++++++++-------- .../com/android/internal/util/MemInfoReader.java | 4 ++-- core/jni/android_os_Debug.cpp | 8 +++++++- 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/core/java/android/os/Debug.java b/core/java/android/os/Debug.java index b46c6b1620b1..017c2134f288 100644 --- a/core/java/android/os/Debug.java +++ b/core/java/android/os/Debug.java @@ -1748,22 +1748,26 @@ public final class Debug public static final int MEMINFO_SHMEM = 4; /** @hide */ public static final int MEMINFO_SLAB = 5; + /** @hide */ + public static final int MEMINFO_SLAB_RECLAIMABLE = 6; + /** @hide */ + public static final int MEMINFO_SLAB_UNRECLAIMABLE = 7; /** @hide */ - public static final int MEMINFO_SWAP_TOTAL = 6; + public static final int MEMINFO_SWAP_TOTAL = 8; /** @hide */ - public static final int MEMINFO_SWAP_FREE = 7; + public static final int MEMINFO_SWAP_FREE = 9; /** @hide */ - public static final int MEMINFO_ZRAM_TOTAL = 8; + public static final int MEMINFO_ZRAM_TOTAL = 10; /** @hide */ - public static final int MEMINFO_MAPPED = 9; + public static final int MEMINFO_MAPPED = 11; /** @hide */ - public static final int MEMINFO_VM_ALLOC_USED = 10; + public static final int MEMINFO_VM_ALLOC_USED = 12; /** @hide */ - public static final int MEMINFO_PAGE_TABLES = 11; + public static final int MEMINFO_PAGE_TABLES = 13; /** @hide */ - public static final int MEMINFO_KERNEL_STACK = 12; + public static final int MEMINFO_KERNEL_STACK = 14; /** @hide */ - public static final int MEMINFO_COUNT = 13; + public static final int MEMINFO_COUNT = 15; /** * Retrieves /proc/meminfo. outSizes is filled with fields diff --git a/core/java/com/android/internal/util/MemInfoReader.java b/core/java/com/android/internal/util/MemInfoReader.java index b71fa0674b4e..8d7166679b78 100644 --- a/core/java/com/android/internal/util/MemInfoReader.java +++ b/core/java/com/android/internal/util/MemInfoReader.java @@ -82,7 +82,7 @@ public final class MemInfoReader { * that are mapped in to processes. */ public long getCachedSizeKb() { - return mInfos[Debug.MEMINFO_BUFFERS] + return mInfos[Debug.MEMINFO_BUFFERS] + mInfos[Debug.MEMINFO_SLAB_RECLAIMABLE] + mInfos[Debug.MEMINFO_CACHED] - mInfos[Debug.MEMINFO_MAPPED]; } @@ -90,7 +90,7 @@ public final class MemInfoReader { * Amount of RAM that is in use by the kernel for actual allocations. */ public long getKernelUsedSizeKb() { - return mInfos[Debug.MEMINFO_SHMEM] + mInfos[Debug.MEMINFO_SLAB] + return mInfos[Debug.MEMINFO_SHMEM] + mInfos[Debug.MEMINFO_SLAB_UNRECLAIMABLE] + mInfos[Debug.MEMINFO_VM_ALLOC_USED] + mInfos[Debug.MEMINFO_PAGE_TABLES] + mInfos[Debug.MEMINFO_KERNEL_STACK]; } diff --git a/core/jni/android_os_Debug.cpp b/core/jni/android_os_Debug.cpp index 4d32c0546d93..4370747dfcd1 100644 --- a/core/jni/android_os_Debug.cpp +++ b/core/jni/android_os_Debug.cpp @@ -705,6 +705,8 @@ enum { MEMINFO_CACHED, MEMINFO_SHMEM, MEMINFO_SLAB, + MEMINFO_SLAB_RECLAIMABLE, + MEMINFO_SLAB_UNRECLAIMABLE, MEMINFO_SWAP_TOTAL, MEMINFO_SWAP_FREE, MEMINFO_ZRAM_TOTAL, @@ -776,6 +778,8 @@ static void android_os_Debug_getMemInfo(JNIEnv *env, jobject clazz, jlongArray o "Cached:", "Shmem:", "Slab:", + "SReclaimable:", + "SUnreclaim:", "SwapTotal:", "SwapFree:", "ZRam:", @@ -792,6 +796,8 @@ static void android_os_Debug_getMemInfo(JNIEnv *env, jobject clazz, jlongArray o 7, 6, 5, + 13, + 11, 10, 9, 5, @@ -801,7 +807,7 @@ static void android_os_Debug_getMemInfo(JNIEnv *env, jobject clazz, jlongArray o 12, 0 }; - long mem[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + long mem[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; char* p = buffer; while (*p && numFound < (sizeof(tagsLen) / sizeof(tagsLen[0]))) { -- cgit v1.2.3-59-g8ed1b