Further tweak to issue #issue #25371736: Don't include z-ram allocations in Android OS

Make sure the duration shown for z-ram is sane (the maximum of the
other process durations of that app).

Change-Id: I62c46b89f927b2c7c16f5c31f6910419b2bdd130
This commit is contained in:
Dianne Hackborn
2015-10-29 17:32:28 -07:00
parent 30bbd902dd
commit b6c7b05056
2 changed files with 12 additions and 7 deletions

View File

@@ -201,17 +201,21 @@ public class ProcStatsData {
for (int i = pkgEntries.size() - 1; i >= 0 && totalTime > 0; i--) { for (int i = pkgEntries.size() - 1; i >= 0 && totalTime > 0; i--) {
ProcStatsPackageEntry entry = pkgEntries.get(i); ProcStatsPackageEntry entry = pkgEntries.get(i);
long pkgRunTime = 0; long pkgRunTime = 0;
long maxRunTime = 0;
for (int j = entry.mEntries.size() - 1; j >= 0; j--) { for (int j = entry.mEntries.size() - 1; j >= 0; j--) {
ProcStatsEntry proc = entry.mEntries.get(j); ProcStatsEntry proc = entry.mEntries.get(j);
pkgRunTime += proc.mRunDuration; pkgRunTime += proc.mRunDuration;
if (proc.mRunDuration > maxRunTime) {
maxRunTime = proc.mRunDuration;
}
} }
long pkgZRam = (zramMem*pkgRunTime)/totalTime; long pkgZRam = (zramMem*pkgRunTime)/totalTime;
if (pkgZRam > 0) { if (pkgZRam > 0) {
zramMem -= pkgZRam; zramMem -= pkgZRam;
totalTime -= pkgRunTime; totalTime -= pkgRunTime;
ProcStatsEntry procEntry = new ProcStatsEntry(entry.mPackage, 0, ProcStatsEntry procEntry = new ProcStatsEntry(entry.mPackage, 0,
mContext.getString(R.string.process_stats_os_zram), memTotalTime, mContext.getString(R.string.process_stats_os_zram), maxRunTime,
pkgZRam); pkgZRam, memTotalTime);
procEntry.evaluateTargetPackage(mPm, mStats, null, null, sEntryCompare, mUseUss); procEntry.evaluateTargetPackage(mPm, mStats, null, null, sEntryCompare, mUseUss);
entry.addEntry(procEntry); entry.addEntry(procEntry);
} }
@@ -226,14 +230,14 @@ public class ProcStatsData {
if (totalMem.sysMemNativeWeight > 0) { if (totalMem.sysMemNativeWeight > 0) {
osEntry = new ProcStatsEntry(Utils.OS_PKG, 0, osEntry = new ProcStatsEntry(Utils.OS_PKG, 0,
mContext.getString(R.string.process_stats_os_native), memTotalTime, mContext.getString(R.string.process_stats_os_native), memTotalTime,
(long) (totalMem.sysMemNativeWeight / memTotalTime)); (long) (totalMem.sysMemNativeWeight / memTotalTime), memTotalTime);
osEntry.evaluateTargetPackage(mPm, mStats, bgTotals, runTotals, sEntryCompare, mUseUss); osEntry.evaluateTargetPackage(mPm, mStats, bgTotals, runTotals, sEntryCompare, mUseUss);
osPkg.addEntry(osEntry); osPkg.addEntry(osEntry);
} }
if (totalMem.sysMemKernelWeight > 0) { if (totalMem.sysMemKernelWeight > 0) {
osEntry = new ProcStatsEntry(Utils.OS_PKG, 0, osEntry = new ProcStatsEntry(Utils.OS_PKG, 0,
mContext.getString(R.string.process_stats_os_kernel), memTotalTime, mContext.getString(R.string.process_stats_os_kernel), memTotalTime,
(long) (totalMem.sysMemKernelWeight / memTotalTime)); (long) (totalMem.sysMemKernelWeight / memTotalTime), memTotalTime);
osEntry.evaluateTargetPackage(mPm, mStats, bgTotals, runTotals, sEntryCompare, mUseUss); osEntry.evaluateTargetPackage(mPm, mStats, bgTotals, runTotals, sEntryCompare, mUseUss);
osPkg.addEntry(osEntry); osPkg.addEntry(osEntry);
} }
@@ -249,7 +253,7 @@ public class ProcStatsData {
if (baseCacheRam > 0) { if (baseCacheRam > 0) {
osEntry = new ProcStatsEntry(Utils.OS_PKG, 0, osEntry = new ProcStatsEntry(Utils.OS_PKG, 0,
mContext.getString(R.string.process_stats_os_cache), memTotalTime, mContext.getString(R.string.process_stats_os_cache), memTotalTime,
baseCacheRam / 1024); baseCacheRam / 1024, memTotalTime);
osEntry.evaluateTargetPackage(mPm, mStats, bgTotals, runTotals, sEntryCompare, mUseUss); osEntry.evaluateTargetPackage(mPm, mStats, bgTotals, runTotals, sEntryCompare, mUseUss);
osPkg.addEntry(osEntry); osPkg.addEntry(osEntry);
} }

View File

@@ -72,13 +72,14 @@ public final class ProcStatsEntry implements Parcelable {
+ " avgpss=" + mAvgBgMem + " weight=" + mBgWeight); + " avgpss=" + mAvgBgMem + " weight=" + mBgWeight);
} }
public ProcStatsEntry(String pkgName, int uid, String procName, long duration, long mem) { public ProcStatsEntry(String pkgName, int uid, String procName, long duration, long mem,
long memDuration) {
mPackage = pkgName; mPackage = pkgName;
mUid = uid; mUid = uid;
mName = procName; mName = procName;
mBgDuration = mRunDuration = duration; mBgDuration = mRunDuration = duration;
mAvgBgMem = mMaxBgMem = mAvgRunMem = mMaxRunMem = mem; mAvgBgMem = mMaxBgMem = mAvgRunMem = mMaxRunMem = mem;
mBgWeight = mRunWeight = ((double)duration) * mem; mBgWeight = mRunWeight = ((double)memDuration) * mem;
if (DEBUG) Log.d(TAG, "New proc entry " + procName + ": dur=" + mBgDuration if (DEBUG) Log.d(TAG, "New proc entry " + procName + ": dur=" + mBgDuration
+ " avgpss=" + mAvgBgMem + " weight=" + mBgWeight); + " avgpss=" + mAvgBgMem + " weight=" + mBgWeight);
} }