Merge "Prevent double-counting of kernel stack size in dumpsys reports"
am: 9493f0ed0b
Change-Id: If643779ba45321f1dcb5b772ade4de451fcd4e1a
This commit is contained in:
@@ -2526,4 +2526,12 @@ public final class Debug
|
|||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
public static native long getIonMappedSizeKb();
|
public static native long getIonMappedSizeKb();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return whether virtually-mapped kernel stacks are enabled (CONFIG_VMAP_STACK).
|
||||||
|
* Note: caller needs config_gz read sepolicy permission
|
||||||
|
*
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public static native boolean isVmapStack();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -107,9 +107,12 @@ public final class MemInfoReader {
|
|||||||
* Amount of RAM that is in use by the kernel for actual allocations.
|
* Amount of RAM that is in use by the kernel for actual allocations.
|
||||||
*/
|
*/
|
||||||
public long getKernelUsedSizeKb() {
|
public long getKernelUsedSizeKb() {
|
||||||
return mInfos[Debug.MEMINFO_SHMEM] + mInfos[Debug.MEMINFO_SLAB_UNRECLAIMABLE]
|
long size = mInfos[Debug.MEMINFO_SHMEM] + mInfos[Debug.MEMINFO_SLAB_UNRECLAIMABLE]
|
||||||
+ mInfos[Debug.MEMINFO_VM_ALLOC_USED] + mInfos[Debug.MEMINFO_PAGE_TABLES]
|
+ mInfos[Debug.MEMINFO_VM_ALLOC_USED] + mInfos[Debug.MEMINFO_PAGE_TABLES];
|
||||||
+ mInfos[Debug.MEMINFO_KERNEL_STACK];
|
if (!Debug.isVmapStack()) {
|
||||||
|
size += mInfos[Debug.MEMINFO_KERNEL_STACK];
|
||||||
|
}
|
||||||
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
public long getSwapTotalSizeKb() {
|
public long getSwapTotalSizeKb() {
|
||||||
|
|||||||
@@ -50,6 +50,7 @@
|
|||||||
#include <memunreachable/memunreachable.h>
|
#include <memunreachable/memunreachable.h>
|
||||||
#include <android-base/strings.h>
|
#include <android-base/strings.h>
|
||||||
#include "android_os_Debug.h"
|
#include "android_os_Debug.h"
|
||||||
|
#include <vintf/VintfObject.h>
|
||||||
|
|
||||||
namespace android
|
namespace android
|
||||||
{
|
{
|
||||||
@@ -833,6 +834,23 @@ static jlong android_os_Debug_getIonMappedSizeKb(JNIEnv* env, jobject clazz) {
|
|||||||
return ionPss;
|
return ionPss;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static jboolean android_os_Debug_isVmapStack(JNIEnv *env, jobject clazz)
|
||||||
|
{
|
||||||
|
static enum {
|
||||||
|
CONFIG_UNKNOWN,
|
||||||
|
CONFIG_SET,
|
||||||
|
CONFIG_UNSET,
|
||||||
|
} cfg_state = CONFIG_UNKNOWN;
|
||||||
|
|
||||||
|
if (cfg_state == CONFIG_UNKNOWN) {
|
||||||
|
const std::map<std::string, std::string> configs =
|
||||||
|
vintf::VintfObject::GetInstance()->getRuntimeInfo()->kernelConfigs();
|
||||||
|
std::map<std::string, std::string>::const_iterator it = configs.find("CONFIG_VMAP_STACK");
|
||||||
|
cfg_state = (it != configs.end() && it->second == "y") ? CONFIG_SET : CONFIG_UNSET;
|
||||||
|
}
|
||||||
|
return cfg_state == CONFIG_SET;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* JNI registration.
|
* JNI registration.
|
||||||
*/
|
*/
|
||||||
@@ -882,6 +900,8 @@ static const JNINativeMethod gMethods[] = {
|
|||||||
(void*)android_os_Debug_getIonPoolsSizeKb },
|
(void*)android_os_Debug_getIonPoolsSizeKb },
|
||||||
{ "getIonMappedSizeKb", "()J",
|
{ "getIonMappedSizeKb", "()J",
|
||||||
(void*)android_os_Debug_getIonMappedSizeKb },
|
(void*)android_os_Debug_getIonMappedSizeKb },
|
||||||
|
{ "isVmapStack", "()Z",
|
||||||
|
(void*)android_os_Debug_isVmapStack },
|
||||||
};
|
};
|
||||||
|
|
||||||
int register_android_os_Debug(JNIEnv *env)
|
int register_android_os_Debug(JNIEnv *env)
|
||||||
|
|||||||
Reference in New Issue
Block a user