Loading cmds/statsd/src/atoms.proto +19 −2 Original line number Diff line number Diff line Loading @@ -342,7 +342,7 @@ message Atom { } // Pulled events will start at field 10000. // Next: 10070 // Next: 10071 oneof pulled { WifiBytesTransfer wifi_bytes_transfer = 10000; WifiBytesTransferByFgBg wifi_bytes_transfer_by_fg_bg = 10001; Loading Loading @@ -399,7 +399,7 @@ message Atom { ExternalStorageInfo external_storage_info = 10053; GpuStatsGlobalInfo gpu_stats_global_info = 10054; GpuStatsAppInfo gpu_stats_app_info = 10055; SystemIonHeapSize system_ion_heap_size = 10056; SystemIonHeapSize system_ion_heap_size = 10056 [deprecated = true]; AppsOnExternalStorageInfo apps_on_external_storage_info = 10057; FaceSettings face_settings = 10058; CoolingDevice cooling_device = 10059; Loading @@ -413,6 +413,7 @@ message Atom { DangerousPermissionStateSampled dangerous_permission_state_sampled = 10067; GraphicsStats graphics_stats = 10068; RuntimeAppOpsAccess runtime_app_ops_access = 10069; IonHeapSize ion_heap_size = 10070; } // DO NOT USE field numbers above 100,000 in AOSP. Loading Loading @@ -6946,10 +6947,26 @@ message GpuStatsAppInfo { * Pulled from StatsCompanionService. */ message SystemIonHeapSize { // Deprecated due to limited support of ion stats in debugfs. // Use `IonHeapSize` instead. option deprecated = true; // Size of the system ion heap in bytes. // Read from debugfs. optional int64 size_in_bytes = 1; } /* * Logs the total size of the ion heap. * * Pulled from StatsCompanionService. */ message IonHeapSize { // Total size of all ion heaps in kilobytes. // Read from: /sys/kernel/ion/total_heaps_kb. optional int32 total_size_kb = 1; } /* * Logs the per-process size of the system ion heap. * Loading services/core/java/com/android/server/stats/StatsPullAtomService.java +22 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.server.stats; import static android.app.AppOpsManager.OP_FLAGS_ALL_TRUSTED; import static android.content.pm.PackageInfo.REQUESTED_PERMISSION_GRANTED; import static android.content.pm.PermissionInfo.PROTECTION_DANGEROUS; import static android.os.Debug.getIonHeapsSizeKb; import static android.os.Process.THREAD_PRIORITY_BACKGROUND; import static android.os.Process.getUidForPid; import static android.os.storage.VolumeInfo.TYPE_PRIVATE; Loading Loading @@ -263,6 +264,7 @@ public class StatsPullAtomService extends SystemService { registerProcessMemoryHighWaterMark(); registerProcessMemorySnapshot(); registerSystemIonHeapSize(); registerIonHeapSize(); registerProcessSystemIonHeapSize(); registerTemperature(); registerCoolingDevice(); Loading Loading @@ -954,6 +956,26 @@ public class StatsPullAtomService extends SystemService { // No op. } private void registerIonHeapSize() { int tagId = StatsLog.ION_HEAP_SIZE; mStatsManager.registerPullAtomCallback( tagId, /* PullAtomMetadata */ null, (atomTag, data) -> pullIonHeapSize(atomTag, data), Executors.newSingleThreadExecutor() ); } private int pullIonHeapSize(int atomTag, List<StatsEvent> pulledData) { int ionHeapSizeInKilobytes = (int) getIonHeapsSizeKb(); StatsEvent e = StatsEvent.newBuilder() .setAtomId(atomTag) .writeInt(ionHeapSizeInKilobytes) .build(); pulledData.add(e); return StatsManager.PULL_SUCCESS; } private void registerProcessSystemIonHeapSize() { // No op. } Loading Loading
cmds/statsd/src/atoms.proto +19 −2 Original line number Diff line number Diff line Loading @@ -342,7 +342,7 @@ message Atom { } // Pulled events will start at field 10000. // Next: 10070 // Next: 10071 oneof pulled { WifiBytesTransfer wifi_bytes_transfer = 10000; WifiBytesTransferByFgBg wifi_bytes_transfer_by_fg_bg = 10001; Loading Loading @@ -399,7 +399,7 @@ message Atom { ExternalStorageInfo external_storage_info = 10053; GpuStatsGlobalInfo gpu_stats_global_info = 10054; GpuStatsAppInfo gpu_stats_app_info = 10055; SystemIonHeapSize system_ion_heap_size = 10056; SystemIonHeapSize system_ion_heap_size = 10056 [deprecated = true]; AppsOnExternalStorageInfo apps_on_external_storage_info = 10057; FaceSettings face_settings = 10058; CoolingDevice cooling_device = 10059; Loading @@ -413,6 +413,7 @@ message Atom { DangerousPermissionStateSampled dangerous_permission_state_sampled = 10067; GraphicsStats graphics_stats = 10068; RuntimeAppOpsAccess runtime_app_ops_access = 10069; IonHeapSize ion_heap_size = 10070; } // DO NOT USE field numbers above 100,000 in AOSP. Loading Loading @@ -6946,10 +6947,26 @@ message GpuStatsAppInfo { * Pulled from StatsCompanionService. */ message SystemIonHeapSize { // Deprecated due to limited support of ion stats in debugfs. // Use `IonHeapSize` instead. option deprecated = true; // Size of the system ion heap in bytes. // Read from debugfs. optional int64 size_in_bytes = 1; } /* * Logs the total size of the ion heap. * * Pulled from StatsCompanionService. */ message IonHeapSize { // Total size of all ion heaps in kilobytes. // Read from: /sys/kernel/ion/total_heaps_kb. optional int32 total_size_kb = 1; } /* * Logs the per-process size of the system ion heap. * Loading
services/core/java/com/android/server/stats/StatsPullAtomService.java +22 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.server.stats; import static android.app.AppOpsManager.OP_FLAGS_ALL_TRUSTED; import static android.content.pm.PackageInfo.REQUESTED_PERMISSION_GRANTED; import static android.content.pm.PermissionInfo.PROTECTION_DANGEROUS; import static android.os.Debug.getIonHeapsSizeKb; import static android.os.Process.THREAD_PRIORITY_BACKGROUND; import static android.os.Process.getUidForPid; import static android.os.storage.VolumeInfo.TYPE_PRIVATE; Loading Loading @@ -263,6 +264,7 @@ public class StatsPullAtomService extends SystemService { registerProcessMemoryHighWaterMark(); registerProcessMemorySnapshot(); registerSystemIonHeapSize(); registerIonHeapSize(); registerProcessSystemIonHeapSize(); registerTemperature(); registerCoolingDevice(); Loading Loading @@ -954,6 +956,26 @@ public class StatsPullAtomService extends SystemService { // No op. } private void registerIonHeapSize() { int tagId = StatsLog.ION_HEAP_SIZE; mStatsManager.registerPullAtomCallback( tagId, /* PullAtomMetadata */ null, (atomTag, data) -> pullIonHeapSize(atomTag, data), Executors.newSingleThreadExecutor() ); } private int pullIonHeapSize(int atomTag, List<StatsEvent> pulledData) { int ionHeapSizeInKilobytes = (int) getIonHeapsSizeKb(); StatsEvent e = StatsEvent.newBuilder() .setAtomId(atomTag) .writeInt(ionHeapSizeInKilobytes) .build(); pulledData.add(e); return StatsManager.PULL_SUCCESS; } private void registerProcessSystemIonHeapSize() { // No op. } Loading