am f4db340d: Consistently use weight to get average mem usage

* commit 'f4db340daeb50572d7e0ab12f4745affae8b567f':
  Consistently use weight to get average mem usage
This commit is contained in:
Jason Monk
2015-05-07 20:07:46 +00:00
committed by Android Git Automerger
4 changed files with 27 additions and 31 deletions

View File

@@ -90,10 +90,10 @@ public class ProcStatsPackageEntry implements Parcelable {
for (int i=0; i < N; i++) {
ProcStatsEntry entry = mEntries.get(i);
mBgDuration += entry.mBgDuration;
mAvgBgMem += entry.mAvgBgMem * entry.mBgDuration;
mAvgBgMem += entry.mAvgBgMem;
mBgWeight += entry.mBgWeight;
mRunDuration += entry.mRunDuration;
mAvgRunMem += entry.mAvgRunMem * entry.mRunDuration;
mAvgRunMem += entry.mAvgRunMem;
mRunWeight += entry.mRunWeight;
// Each entry is generally a process or something similar. Since it is extremely
@@ -103,12 +103,8 @@ public class ProcStatsPackageEntry implements Parcelable {
mMaxBgMem += entry.mMaxBgMem;
mMaxRunMem += entry.mMaxRunMem;
}
if (mBgDuration != 0) {
mAvgBgMem = mAvgBgMem * N / mBgDuration;
}
if (mRunDuration != 0) {
mAvgRunMem = mAvgRunMem * N / mRunDuration;
}
mAvgBgMem /= N;
mAvgRunMem /= N;
}
public void retrieveUiData(Context context, PackageManager pm) {

View File

@@ -86,7 +86,7 @@ public class ProcessStatsDetail extends SettingsPreferenceFragment
private LinearColorBar mColorBar;
private float mMaxMemoryUsage;
private double mMaxMemoryUsage;
private double mTotalScale;
@@ -101,7 +101,7 @@ public class ProcessStatsDetail extends SettingsPreferenceFragment
mUseUss = args.getBoolean(EXTRA_USE_USS);
mWeightToRam = args.getDouble(EXTRA_WEIGHT_TO_RAM);
mTotalTime = args.getLong(EXTRA_TOTAL_TIME);
mMaxMemoryUsage = args.getFloat(EXTRA_MAX_MEMORY_USAGE);
mMaxMemoryUsage = args.getDouble(EXTRA_MAX_MEMORY_USAGE);
mTotalScale = args.getDouble(EXTRA_TOTAL_SCALE);
mOnePercentTime = mTotalTime/100;
@@ -199,16 +199,17 @@ public class ProcessStatsDetail extends SettingsPreferenceFragment
// TODO: Find way to share this code with ProcessStatsPreference.
boolean statsForeground = mApp.mRunWeight > mApp.mBgWeight;
float mAvgRatio = (statsForeground ? mApp.mAvgRunMem : mApp.mAvgBgMem) / mMaxMemoryUsage;
float mMaxRatio = (statsForeground ? mApp.mMaxRunMem : mApp.mMaxBgMem) / mMaxMemoryUsage
- mAvgRatio;
float mRemainingRatio = 1 - mAvgRatio - mMaxRatio;
float avgRatio = (float) ((statsForeground ? mApp.mRunWeight : mApp.mBgWeight)
* mWeightToRam / mMaxMemoryUsage);
float maxRatio = (float) ((statsForeground ? mApp.mMaxRunMem : mApp.mMaxBgMem)
* mTotalScale * 1024 / mMaxMemoryUsage - avgRatio);
float remainingRatio = 1 - avgRatio - maxRatio;
mColorBar = (LinearColorBar) headerLayout.findViewById(R.id.color_bar);
Context context = getActivity();
mColorBar.setColors(context.getColor(R.color.memory_avg_use),
context.getColor(R.color.memory_max_use),
context.getColor(R.color.memory_remaining));
mColorBar.setRatios(mAvgRatio, mMaxRatio, mRemainingRatio);
mColorBar.setRatios(avgRatio, maxRatio, remainingRatio);
}
public void onClick(View v) {

View File

@@ -58,7 +58,8 @@ public class ProcessStatsPreference extends Preference {
mRemainingColor = context.getColor(R.color.memory_remaining);
}
public void init(ProcStatsPackageEntry entry, PackageManager pm, float maxMemory) {
public void init(ProcStatsPackageEntry entry, PackageManager pm, double maxMemory,
double weightToRam, double totalScale) {
mEntry = entry;
setTitle(TextUtils.isEmpty(entry.mUiLabel) ? entry.mPackage : entry.mUiLabel);
if (entry.mUiTargetApp != null) {
@@ -69,8 +70,10 @@ public class ProcessStatsPreference extends Preference {
boolean statsForeground = entry.mRunWeight > entry.mBgWeight;
setSummary(entry.mRunDuration > entry.mBgDuration ? entry.getRunningFrequency(getContext())
: entry.getBackgroundFrequency(getContext()));
mAvgRatio = (statsForeground ? entry.mAvgRunMem : entry.mAvgBgMem) / maxMemory;
mMaxRatio = (statsForeground ? entry.mMaxRunMem : entry.mMaxBgMem) / maxMemory - mAvgRatio;
mAvgRatio = (float) ((statsForeground ? entry.mRunWeight : entry.mBgWeight)
* weightToRam / maxMemory);
mMaxRatio = (float) ((statsForeground ? entry.mMaxRunMem : entry.mMaxBgMem)
* totalScale * 1024 / maxMemory - mAvgRatio);
mRemainingRatio = 1 - mAvgRatio - mMaxRatio;
}

View File

@@ -74,16 +74,12 @@ public class ProcessStatsUi extends InstrumentedPreferenceFragment {
= new Comparator<ProcStatsPackageEntry>() {
@Override
public int compare(ProcStatsPackageEntry lhs, ProcStatsPackageEntry rhs) {
if (lhs.mRunWeight < rhs.mRunWeight) {
return 1;
} else if (lhs.mRunWeight > rhs.mRunWeight) {
return -1;
} else if (lhs.mRunDuration < rhs.mRunDuration) {
return 1;
} else if (lhs.mRunDuration > rhs.mRunDuration) {
return -1;
double rhsWeight = Math.max(rhs.mRunWeight, rhs.mBgWeight);
double lhsWeight = Math.max(lhs.mRunWeight, lhs.mBgWeight);
if (lhsWeight == rhsWeight) {
return 0;
}
return 0;
return lhsWeight < rhsWeight ? 1 : -1;
}
};
@@ -128,7 +124,7 @@ public class ProcessStatsUi extends InstrumentedPreferenceFragment {
};
private ProcStatsData mStatsManager;
private float mMaxMemoryUsage;
private double mMaxMemoryUsage;
@Override
public void onCreate(Bundle icicle) {
@@ -200,7 +196,7 @@ public class ProcessStatsUi extends InstrumentedPreferenceFragment {
args.putDouble(ProcessStatsDetail.EXTRA_WEIGHT_TO_RAM,
mStatsManager.getMemInfo().weightToRam);
args.putLong(ProcessStatsDetail.EXTRA_TOTAL_TIME, memTotalTime);
args.putFloat(ProcessStatsDetail.EXTRA_MAX_MEMORY_USAGE, mMaxMemoryUsage);
args.putDouble(ProcessStatsDetail.EXTRA_MAX_MEMORY_USAGE, mMaxMemoryUsage);
args.putDouble(ProcessStatsDetail.EXTRA_TOTAL_SCALE, mStatsManager.getMemInfo().totalScale);
((SettingsActivity) getActivity()).startPreferencePanel(
ProcessStatsDetail.class.getName(), args, R.string.details_title, null, null, 0);
@@ -422,7 +418,7 @@ public class ProcessStatsUi extends InstrumentedPreferenceFragment {
for (int i=0, N=pkgEntries.size(); i<N; i++) {
ProcStatsPackageEntry pkg = pkgEntries.get(i);
pkg.updateMetrics();
float maxMem = Math.max(pkg.mMaxBgMem, pkg.mMaxRunMem);
double maxMem = Math.max(pkg.mMaxBgMem, pkg.mMaxRunMem) * 1024 * memInfo.totalScale;
if (maxMem > mMaxMemoryUsage) {
mMaxMemoryUsage = maxMem;
}
@@ -452,7 +448,7 @@ public class ProcessStatsUi extends InstrumentedPreferenceFragment {
ProcStatsPackageEntry pkg = pkgEntries.get(i);
ProcessStatsPreference pref = new ProcessStatsPreference(context);
pkg.retrieveUiData(context, mPm);
pref.init(pkg, mPm, mMaxMemoryUsage);
pref.init(pkg, mPm, mMaxMemoryUsage, memInfo.weightToRam, memInfo.totalScale);
pref.setOrder(i);
mAppListGroup.addPreference(pref);
if (mAppListGroup.getPreferenceCount() > (MAX_ITEMS_TO_LIST+1)) {