Merge "Follow-on for #10671878: Proc stats needs to remove old data structures" into klp-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
d90ff6772b
@@ -78,7 +78,6 @@ public final class ProcStatsEntry implements Parcelable {
|
|||||||
mBestTargetPackage = null;
|
mBestTargetPackage = null;
|
||||||
if (mUnique) {
|
if (mUnique) {
|
||||||
mBestTargetPackage = mPackage;
|
mBestTargetPackage = mPackage;
|
||||||
addServices(stats.getPackageStateLocked(mPackage, mUid));
|
|
||||||
} else {
|
} else {
|
||||||
// See if there is one significant package that was running here.
|
// See if there is one significant package that was running here.
|
||||||
ArrayList<ProcStatsEntry> subProcs = new ArrayList<ProcStatsEntry>();
|
ArrayList<ProcStatsEntry> subProcs = new ArrayList<ProcStatsEntry>();
|
||||||
@@ -90,18 +89,13 @@ public final class ProcStatsEntry implements Parcelable {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
ProcessStats.PackageState pkgState = uids.valueAt(iu);
|
ProcessStats.PackageState pkgState = uids.valueAt(iu);
|
||||||
boolean match = false;
|
|
||||||
for (int iproc=0, NPROC=pkgState.mProcesses.size(); iproc<NPROC; iproc++) {
|
for (int iproc=0, NPROC=pkgState.mProcesses.size(); iproc<NPROC; iproc++) {
|
||||||
ProcessStats.ProcessState subProc =
|
ProcessStats.ProcessState subProc =
|
||||||
pkgState.mProcesses.valueAt(iproc);
|
pkgState.mProcesses.valueAt(iproc);
|
||||||
if (subProc.mName.equals(mName)) {
|
if (subProc.mName.equals(mName)) {
|
||||||
match = true;
|
|
||||||
subProcs.add(new ProcStatsEntry(subProc, totals));
|
subProcs.add(new ProcStatsEntry(subProc, totals));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (match) {
|
|
||||||
addServices(stats.getPackageStateLocked(mPackage, mUid));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (subProcs.size() > 1) {
|
if (subProcs.size() > 1) {
|
||||||
@@ -173,12 +167,8 @@ public final class ProcStatsEntry implements Parcelable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addServices(ProcessStats.PackageState pkgState) {
|
public void addService(ProcessStats.ServiceState svc) {
|
||||||
for (int isvc=0, NSVC=pkgState.mServices.size(); isvc<NSVC; isvc++) {
|
mServices.add(new Service(svc));
|
||||||
ProcessStats.ServiceState svc = pkgState.mServices.valueAt(isvc);
|
|
||||||
// XXX can't tell what process it is in!
|
|
||||||
mServices.add(new Service(svc));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -213,32 +203,22 @@ public final class ProcStatsEntry implements Parcelable {
|
|||||||
public static final class Service implements Parcelable {
|
public static final class Service implements Parcelable {
|
||||||
final String mPackage;
|
final String mPackage;
|
||||||
final String mName;
|
final String mName;
|
||||||
|
final String mProcess;
|
||||||
final long mDuration;
|
final long mDuration;
|
||||||
|
|
||||||
public Service(ProcessStats.ServiceState service) {
|
public Service(ProcessStats.ServiceState service) {
|
||||||
mPackage = service.mPackage;
|
mPackage = service.mPackage;
|
||||||
mName = service.mName;
|
mName = service.mName;
|
||||||
long startDuration = ProcessStats.dumpSingleServiceTime(null, null, service,
|
mProcess = service.mProcessName;
|
||||||
ProcessStats.ServiceState.SERVICE_STARTED,
|
mDuration = ProcessStats.dumpSingleServiceTime(null, null, service,
|
||||||
|
ProcessStats.ServiceState.SERVICE_RUN,
|
||||||
ProcessStats.STATE_NOTHING, 0, 0);
|
ProcessStats.STATE_NOTHING, 0, 0);
|
||||||
long bindDuration = ProcessStats.dumpSingleServiceTime(null, null, service,
|
|
||||||
ProcessStats.ServiceState.SERVICE_BOUND,
|
|
||||||
ProcessStats.STATE_NOTHING, 0, 0);
|
|
||||||
long execDuration = ProcessStats.dumpSingleServiceTime(null, null, service,
|
|
||||||
ProcessStats.ServiceState.SERVICE_EXEC,
|
|
||||||
ProcessStats.STATE_NOTHING, 0, 0);
|
|
||||||
if (bindDuration > startDuration) {
|
|
||||||
startDuration = bindDuration;
|
|
||||||
}
|
|
||||||
if (execDuration > startDuration) {
|
|
||||||
startDuration = execDuration;
|
|
||||||
}
|
|
||||||
mDuration = startDuration;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Service(Parcel in) {
|
public Service(Parcel in) {
|
||||||
mPackage = in.readString();
|
mPackage = in.readString();
|
||||||
mName = in.readString();
|
mName = in.readString();
|
||||||
|
mProcess = in.readString();
|
||||||
mDuration = in.readLong();
|
mDuration = in.readLong();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -251,6 +231,7 @@ public final class ProcStatsEntry implements Parcelable {
|
|||||||
public void writeToParcel(Parcel dest, int flags) {
|
public void writeToParcel(Parcel dest, int flags) {
|
||||||
dest.writeString(mPackage);
|
dest.writeString(mPackage);
|
||||||
dest.writeString(mName);
|
dest.writeString(mName);
|
||||||
|
dest.writeString(mProcess);
|
||||||
dest.writeLong(mDuration);
|
dest.writeLong(mDuration);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -30,6 +30,7 @@ import android.preference.PreferenceActivity;
|
|||||||
import android.preference.PreferenceFragment;
|
import android.preference.PreferenceFragment;
|
||||||
import android.preference.PreferenceGroup;
|
import android.preference.PreferenceGroup;
|
||||||
import android.preference.PreferenceScreen;
|
import android.preference.PreferenceScreen;
|
||||||
|
import android.util.ArrayMap;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.util.SparseArray;
|
import android.util.SparseArray;
|
||||||
import android.util.TimeUtils;
|
import android.util.TimeUtils;
|
||||||
@@ -245,10 +246,14 @@ public class ProcessStatsUi extends PreferenceFragment {
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
ArrayMap<String, ProcStatsEntry> processes = new ArrayMap<String, ProcStatsEntry>(
|
||||||
|
mStats.mProcesses.getMap().size());
|
||||||
for (int ip=0, N=mStats.mProcesses.getMap().size(); ip<N; ip++) {
|
for (int ip=0, N=mStats.mProcesses.getMap().size(); ip<N; ip++) {
|
||||||
SparseArray<ProcessStats.ProcessState> uids = mStats.mProcesses.getMap().valueAt(ip);
|
SparseArray<ProcessStats.ProcessState> uids = mStats.mProcesses.getMap().valueAt(ip);
|
||||||
for (int iu=0; iu<uids.size(); iu++) {
|
for (int iu=0; iu<uids.size(); iu++) {
|
||||||
procs.add(new ProcStatsEntry(uids.valueAt(iu), totals));
|
ProcStatsEntry ent = new ProcStatsEntry(uids.valueAt(iu), totals);
|
||||||
|
procs.add(ent);
|
||||||
|
processes.put(ent.mName, ent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -283,6 +288,21 @@ public class ProcessStatsUi extends PreferenceFragment {
|
|||||||
mAppListGroup.addPreference(pref);
|
mAppListGroup.addPreference(pref);
|
||||||
if (mAppListGroup.getPreferenceCount() > (MAX_ITEMS_TO_LIST+1)) break;
|
if (mAppListGroup.getPreferenceCount() > (MAX_ITEMS_TO_LIST+1)) break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Add in service info.
|
||||||
|
for (int ip=0, N=mStats.mPackages.getMap().size(); ip<N; ip++) {
|
||||||
|
SparseArray<ProcessStats.PackageState> uids = mStats.mPackages.getMap().valueAt(ip);
|
||||||
|
for (int iu=0; iu<uids.size(); iu++) {
|
||||||
|
ProcessStats.PackageState ps = uids.valueAt(iu);
|
||||||
|
for (int is=0, NS=ps.mServices.size(); is<NS; is++) {
|
||||||
|
ProcessStats.ServiceState ss = ps.mServices.valueAt(is);
|
||||||
|
if (ss.mProcessName != null) {
|
||||||
|
ProcStatsEntry ent = processes.get(ss.mProcessName);
|
||||||
|
ent.addService(ss);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void load() {
|
private void load() {
|
||||||
|
Reference in New Issue
Block a user