Loading core/java/android/os/Debug.java +2 −2 Original line number Diff line number Diff line Loading @@ -2593,11 +2593,11 @@ public final class Debug public static native long getIonPoolsSizeKb(); /** * Return GPU DMA buffer usage in kB or -1 on error. * Returns the global total GPU-private memory in kB or -1 on error. * * @hide */ public static native long getGpuDmaBufUsageKb(); public static native long getGpuPrivateMemoryKb(); /** * Return DMA-BUF memory mapped by processes in kB. Loading core/jni/Android.bp +0 −1 Original line number Diff line number Diff line Loading @@ -225,7 +225,6 @@ cc_library_shared { ], shared_libs: [ "android.hardware.memtrack-V1-ndk_platform", "libandroidicu", "libandroid_net", "libbpf_android", Loading core/jni/android_os_Debug.cpp +13 −20 Original line number Diff line number Diff line Loading @@ -33,7 +33,6 @@ #include <string> #include <vector> #include <aidl/android/hardware/memtrack/DeviceInfo.h> #include <android-base/logging.h> #include <bionic/malloc.h> #include <debuggerd/client.h> Loading @@ -46,7 +45,6 @@ #include "jni.h" #include <dmabufinfo/dmabuf_sysfs_stats.h> #include <dmabufinfo/dmabufinfo.h> #include <dmabufinfo/dmabuf_sysfs_stats.h> #include <meminfo/procmeminfo.h> #include <meminfo/sysmeminfo.h> #include <memtrack/memtrack.h> Loading Loading @@ -858,29 +856,24 @@ static jlong android_os_Debug_getDmabufHeapPoolsSizeKb(JNIEnv* env, jobject claz return poolsSizeKb; } static jlong android_os_Debug_getGpuDmaBufUsageKb(JNIEnv* env, jobject clazz) { std::vector<aidl::android::hardware::memtrack::DeviceInfo> gpu_device_info; if (!memtrack_gpu_device_info(&gpu_device_info)) { static jlong android_os_Debug_getGpuPrivateMemoryKb(JNIEnv* env, jobject clazz) { struct memtrack_proc* p = memtrack_proc_new(); if (p == nullptr) { LOG(ERROR) << "getGpuPrivateMemoryKb: Failed to create memtrack_proc"; return -1; } dmabufinfo::DmabufSysfsStats stats; if (!GetDmabufSysfsStats(&stats)) { // Memtrack hal defines PID 0 as global total for GPU-private (GL) memory. if (memtrack_proc_get(p, 0) != 0) { // The memtrack HAL may not be available, avoid flooding the log. memtrack_proc_destroy(p); return -1; } jlong sizeKb = 0; const auto& importer_stats = stats.importer_info(); for (const auto& dev_info : gpu_device_info) { const auto& importer_info = importer_stats.find(dev_info.name); if (importer_info == importer_stats.end()) { continue; } ssize_t gpuPrivateMem = memtrack_proc_gl_pss(p); sizeKb += importer_info->second.size / 1024; } return sizeKb; memtrack_proc_destroy(p); return gpuPrivateMem / 1024; } static jlong android_os_Debug_getDmabufMappedSizeKb(JNIEnv* env, jobject clazz) { Loading Loading @@ -991,8 +984,8 @@ static const JNINativeMethod gMethods[] = { (void*)android_os_Debug_getIonHeapsSizeKb }, { "getDmabufTotalExportedKb", "()J", (void*)android_os_Debug_getDmabufTotalExportedKb }, { "getGpuDmaBufUsageKb", "()J", (void*)android_os_Debug_getGpuDmaBufUsageKb }, { "getGpuPrivateMemoryKb", "()J", (void*)android_os_Debug_getGpuPrivateMemoryKb }, { "getDmabufHeapTotalExportedKb", "()J", (void*)android_os_Debug_getDmabufHeapTotalExportedKb }, { "getIonPoolsSizeKb", "()J", Loading services/core/java/com/android/server/am/ActivityManagerService.java +6 −6 Original line number Diff line number Diff line Loading @@ -13831,9 +13831,9 @@ public class ActivityManagerService extends IActivityManager.Stub } final long gpuUsage = Debug.getGpuTotalUsageKb(); if (gpuUsage >= 0) { final long gpuDmaBufUsage = Debug.getGpuDmaBufUsageKb(); if (gpuDmaBufUsage >= 0) { final long gpuPrivateUsage = gpuUsage - gpuDmaBufUsage; final long gpuPrivateUsage = Debug.getGpuPrivateMemoryKb(); if (gpuPrivateUsage >= 0) { final long gpuDmaBufUsage = gpuUsage - gpuPrivateUsage; pw.print(" GPU: "); pw.print(stringifyKBSize(gpuUsage)); pw.print(" ("); Loading Loading @@ -14701,9 +14701,9 @@ public class ActivityManagerService extends IActivityManager.Stub final long gpuUsage = Debug.getGpuTotalUsageKb(); if (gpuUsage >= 0) { final long gpuDmaBufUsage = Debug.getGpuDmaBufUsageKb(); if (gpuDmaBufUsage >= 0) { final long gpuPrivateUsage = gpuUsage - gpuDmaBufUsage; final long gpuPrivateUsage = Debug.getGpuPrivateMemoryKb(); if (gpuPrivateUsage >= 0) { final long gpuDmaBufUsage = gpuUsage - gpuPrivateUsage; memInfoBuilder.append(" GPU: "); memInfoBuilder.append(stringifyKBSize(gpuUsage)); memInfoBuilder.append(" ("); Loading
core/java/android/os/Debug.java +2 −2 Original line number Diff line number Diff line Loading @@ -2593,11 +2593,11 @@ public final class Debug public static native long getIonPoolsSizeKb(); /** * Return GPU DMA buffer usage in kB or -1 on error. * Returns the global total GPU-private memory in kB or -1 on error. * * @hide */ public static native long getGpuDmaBufUsageKb(); public static native long getGpuPrivateMemoryKb(); /** * Return DMA-BUF memory mapped by processes in kB. Loading
core/jni/Android.bp +0 −1 Original line number Diff line number Diff line Loading @@ -225,7 +225,6 @@ cc_library_shared { ], shared_libs: [ "android.hardware.memtrack-V1-ndk_platform", "libandroidicu", "libandroid_net", "libbpf_android", Loading
core/jni/android_os_Debug.cpp +13 −20 Original line number Diff line number Diff line Loading @@ -33,7 +33,6 @@ #include <string> #include <vector> #include <aidl/android/hardware/memtrack/DeviceInfo.h> #include <android-base/logging.h> #include <bionic/malloc.h> #include <debuggerd/client.h> Loading @@ -46,7 +45,6 @@ #include "jni.h" #include <dmabufinfo/dmabuf_sysfs_stats.h> #include <dmabufinfo/dmabufinfo.h> #include <dmabufinfo/dmabuf_sysfs_stats.h> #include <meminfo/procmeminfo.h> #include <meminfo/sysmeminfo.h> #include <memtrack/memtrack.h> Loading Loading @@ -858,29 +856,24 @@ static jlong android_os_Debug_getDmabufHeapPoolsSizeKb(JNIEnv* env, jobject claz return poolsSizeKb; } static jlong android_os_Debug_getGpuDmaBufUsageKb(JNIEnv* env, jobject clazz) { std::vector<aidl::android::hardware::memtrack::DeviceInfo> gpu_device_info; if (!memtrack_gpu_device_info(&gpu_device_info)) { static jlong android_os_Debug_getGpuPrivateMemoryKb(JNIEnv* env, jobject clazz) { struct memtrack_proc* p = memtrack_proc_new(); if (p == nullptr) { LOG(ERROR) << "getGpuPrivateMemoryKb: Failed to create memtrack_proc"; return -1; } dmabufinfo::DmabufSysfsStats stats; if (!GetDmabufSysfsStats(&stats)) { // Memtrack hal defines PID 0 as global total for GPU-private (GL) memory. if (memtrack_proc_get(p, 0) != 0) { // The memtrack HAL may not be available, avoid flooding the log. memtrack_proc_destroy(p); return -1; } jlong sizeKb = 0; const auto& importer_stats = stats.importer_info(); for (const auto& dev_info : gpu_device_info) { const auto& importer_info = importer_stats.find(dev_info.name); if (importer_info == importer_stats.end()) { continue; } ssize_t gpuPrivateMem = memtrack_proc_gl_pss(p); sizeKb += importer_info->second.size / 1024; } return sizeKb; memtrack_proc_destroy(p); return gpuPrivateMem / 1024; } static jlong android_os_Debug_getDmabufMappedSizeKb(JNIEnv* env, jobject clazz) { Loading Loading @@ -991,8 +984,8 @@ static const JNINativeMethod gMethods[] = { (void*)android_os_Debug_getIonHeapsSizeKb }, { "getDmabufTotalExportedKb", "()J", (void*)android_os_Debug_getDmabufTotalExportedKb }, { "getGpuDmaBufUsageKb", "()J", (void*)android_os_Debug_getGpuDmaBufUsageKb }, { "getGpuPrivateMemoryKb", "()J", (void*)android_os_Debug_getGpuPrivateMemoryKb }, { "getDmabufHeapTotalExportedKb", "()J", (void*)android_os_Debug_getDmabufHeapTotalExportedKb }, { "getIonPoolsSizeKb", "()J", Loading
services/core/java/com/android/server/am/ActivityManagerService.java +6 −6 Original line number Diff line number Diff line Loading @@ -13831,9 +13831,9 @@ public class ActivityManagerService extends IActivityManager.Stub } final long gpuUsage = Debug.getGpuTotalUsageKb(); if (gpuUsage >= 0) { final long gpuDmaBufUsage = Debug.getGpuDmaBufUsageKb(); if (gpuDmaBufUsage >= 0) { final long gpuPrivateUsage = gpuUsage - gpuDmaBufUsage; final long gpuPrivateUsage = Debug.getGpuPrivateMemoryKb(); if (gpuPrivateUsage >= 0) { final long gpuDmaBufUsage = gpuUsage - gpuPrivateUsage; pw.print(" GPU: "); pw.print(stringifyKBSize(gpuUsage)); pw.print(" ("); Loading Loading @@ -14701,9 +14701,9 @@ public class ActivityManagerService extends IActivityManager.Stub final long gpuUsage = Debug.getGpuTotalUsageKb(); if (gpuUsage >= 0) { final long gpuDmaBufUsage = Debug.getGpuDmaBufUsageKb(); if (gpuDmaBufUsage >= 0) { final long gpuPrivateUsage = gpuUsage - gpuDmaBufUsage; final long gpuPrivateUsage = Debug.getGpuPrivateMemoryKb(); if (gpuPrivateUsage >= 0) { final long gpuDmaBufUsage = gpuUsage - gpuPrivateUsage; memInfoBuilder.append(" GPU: "); memInfoBuilder.append(stringifyKBSize(gpuUsage)); memInfoBuilder.append(" (");