Loading services/core/java/com/android/server/stats/pull/StatsPullAtomService.java +26 −6 Original line number Original line Diff line number Diff line Loading @@ -121,7 +121,6 @@ import android.os.IThermalService; import android.os.OutcomeReceiver; import android.os.OutcomeReceiver; import android.os.ParcelFileDescriptor; import android.os.ParcelFileDescriptor; import android.os.Parcelable; import android.os.Parcelable; import android.os.Process; import android.os.RemoteException; import android.os.RemoteException; import android.os.ServiceManager; import android.os.ServiceManager; import android.os.ServiceSpecificException; import android.os.ServiceSpecificException; Loading Loading @@ -231,7 +230,6 @@ import java.time.Instant; import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.ArrayList; import java.util.Arrays; import java.util.Arrays; import java.util.Comparator; import java.util.HashSet; import java.util.HashSet; import java.util.List; import java.util.List; import java.util.Map; import java.util.Map; Loading Loading @@ -2332,11 +2330,7 @@ public class StatsPullAtomService extends SystemService { List<ProcessMemoryState> managedProcessList = List<ProcessMemoryState> managedProcessList = LocalServices.getService(ActivityManagerInternal.class) LocalServices.getService(ActivityManagerInternal.class) .getMemoryStateForProcesses(); .getMemoryStateForProcesses(); managedProcessList.sort(Comparator.comparingInt(x -> x.oomScore)); for (ProcessMemoryState process : managedProcessList) { for (ProcessMemoryState process : managedProcessList) { if (process.uid == Process.SYSTEM_UID) { continue; } KernelAllocationStats.ProcessDmabuf proc = KernelAllocationStats.ProcessDmabuf proc = KernelAllocationStats.getDmabufAllocations(process.pid); KernelAllocationStats.getDmabufAllocations(process.pid); if (proc == null || (proc.retainedBuffersCount <= 0 && proc.mappedBuffersCount <= 0)) { if (proc == null || (proc.retainedBuffersCount <= 0 && proc.mappedBuffersCount <= 0)) { Loading @@ -2353,6 +2347,32 @@ public class StatsPullAtomService extends SystemService { proc.mappedSizeKb, proc.mappedSizeKb, proc.mappedBuffersCount)); proc.mappedBuffersCount)); } } SparseArray<String> processCmdlines = getProcessCmdlines(); managedProcessList.forEach(managedProcess -> processCmdlines.delete(managedProcess.pid)); int size = processCmdlines.size(); for (int i = 0; i < size; ++i) { int pid = processCmdlines.keyAt(i); int uid = getUidForPid(pid); // ignore root processes (unlikely to be interesting) if (uid <= 0) { continue; } KernelAllocationStats.ProcessDmabuf proc = KernelAllocationStats.getDmabufAllocations(pid); if (proc == null || (proc.retainedBuffersCount <= 0 && proc.mappedBuffersCount <= 0)) { continue; } pulledData.add( FrameworkStatsLog.buildStatsEvent( atomTag, uid, processCmdlines.valueAt(i), -1001 /*Placeholder for native processes, OOM_SCORE_ADJ_MIN - 1.*/, proc.retainedSizeKb, proc.retainedBuffersCount, proc.mappedSizeKb, proc.mappedBuffersCount)); } return StatsManager.PULL_SUCCESS; return StatsManager.PULL_SUCCESS; } } Loading Loading
services/core/java/com/android/server/stats/pull/StatsPullAtomService.java +26 −6 Original line number Original line Diff line number Diff line Loading @@ -121,7 +121,6 @@ import android.os.IThermalService; import android.os.OutcomeReceiver; import android.os.OutcomeReceiver; import android.os.ParcelFileDescriptor; import android.os.ParcelFileDescriptor; import android.os.Parcelable; import android.os.Parcelable; import android.os.Process; import android.os.RemoteException; import android.os.RemoteException; import android.os.ServiceManager; import android.os.ServiceManager; import android.os.ServiceSpecificException; import android.os.ServiceSpecificException; Loading Loading @@ -231,7 +230,6 @@ import java.time.Instant; import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.ArrayList; import java.util.Arrays; import java.util.Arrays; import java.util.Comparator; import java.util.HashSet; import java.util.HashSet; import java.util.List; import java.util.List; import java.util.Map; import java.util.Map; Loading Loading @@ -2332,11 +2330,7 @@ public class StatsPullAtomService extends SystemService { List<ProcessMemoryState> managedProcessList = List<ProcessMemoryState> managedProcessList = LocalServices.getService(ActivityManagerInternal.class) LocalServices.getService(ActivityManagerInternal.class) .getMemoryStateForProcesses(); .getMemoryStateForProcesses(); managedProcessList.sort(Comparator.comparingInt(x -> x.oomScore)); for (ProcessMemoryState process : managedProcessList) { for (ProcessMemoryState process : managedProcessList) { if (process.uid == Process.SYSTEM_UID) { continue; } KernelAllocationStats.ProcessDmabuf proc = KernelAllocationStats.ProcessDmabuf proc = KernelAllocationStats.getDmabufAllocations(process.pid); KernelAllocationStats.getDmabufAllocations(process.pid); if (proc == null || (proc.retainedBuffersCount <= 0 && proc.mappedBuffersCount <= 0)) { if (proc == null || (proc.retainedBuffersCount <= 0 && proc.mappedBuffersCount <= 0)) { Loading @@ -2353,6 +2347,32 @@ public class StatsPullAtomService extends SystemService { proc.mappedSizeKb, proc.mappedSizeKb, proc.mappedBuffersCount)); proc.mappedBuffersCount)); } } SparseArray<String> processCmdlines = getProcessCmdlines(); managedProcessList.forEach(managedProcess -> processCmdlines.delete(managedProcess.pid)); int size = processCmdlines.size(); for (int i = 0; i < size; ++i) { int pid = processCmdlines.keyAt(i); int uid = getUidForPid(pid); // ignore root processes (unlikely to be interesting) if (uid <= 0) { continue; } KernelAllocationStats.ProcessDmabuf proc = KernelAllocationStats.getDmabufAllocations(pid); if (proc == null || (proc.retainedBuffersCount <= 0 && proc.mappedBuffersCount <= 0)) { continue; } pulledData.add( FrameworkStatsLog.buildStatsEvent( atomTag, uid, processCmdlines.valueAt(i), -1001 /*Placeholder for native processes, OOM_SCORE_ADJ_MIN - 1.*/, proc.retainedSizeKb, proc.retainedBuffersCount, proc.mappedSizeKb, proc.mappedBuffersCount)); } return StatsManager.PULL_SUCCESS; return StatsManager.PULL_SUCCESS; } } Loading