diff options
| author | 2014-02-24 17:06:14 -0800 | |
|---|---|---|
| committer | 2014-02-24 17:06:14 -0800 | |
| commit | fb7b50a0263e500a6a8d2bbd7366b06d1fc91fe3 (patch) | |
| tree | 725a3d86206d1dc8e658cda9e125c30db08d9e4d | |
| parent | aec25d92242f46fe25eff3d2e1e7553a8882e8b3 (diff) | |
Fix some issues with network usage in battery stats.
Change-Id: I8b354872511fcb55cecb2e09aada2eab41a1e202
| -rw-r--r-- | core/java/com/android/internal/os/BatteryStatsHelper.java | 4 | ||||
| -rw-r--r-- | core/java/com/android/internal/os/BatteryStatsImpl.java | 34 |
2 files changed, 21 insertions, 17 deletions
diff --git a/core/java/com/android/internal/os/BatteryStatsHelper.java b/core/java/com/android/internal/os/BatteryStatsHelper.java index 8a15c999fa22..e0cf435a30ba 100644 --- a/core/java/com/android/internal/os/BatteryStatsHelper.java +++ b/core/java/com/android/internal/os/BatteryStatsHelper.java @@ -642,8 +642,8 @@ public class BatteryStatsHelper { final long radioDataUptimeMs = mStats.getMobileRadioActiveTime(mBatteryRealtime, mStatsType) / 1000; - final double mobilePps = radioDataUptimeMs != 0 - ? mobileData / (double)radioDataUptimeMs + final double mobilePps = (mobileData != 0 && radioDataUptimeMs != 0) + ? (mobileData / (double)radioDataUptimeMs) : (((double)MOBILE_BPS) / 8 / 2048); return (MOBILE_POWER / mobilePps) / (60*60); diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java index c3e986277c9f..40e87271ecf7 100644 --- a/core/java/com/android/internal/os/BatteryStatsImpl.java +++ b/core/java/com/android/internal/os/BatteryStatsImpl.java @@ -56,7 +56,6 @@ import com.android.internal.net.NetworkStatsFactory; import com.android.internal.util.ArrayUtils; import com.android.internal.util.FastPrintWriter; import com.android.internal.util.JournaledFile; -import com.google.android.collect.Sets; import java.io.File; import java.io.FileInputStream; @@ -65,7 +64,6 @@ import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; import java.util.HashMap; -import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -372,8 +370,10 @@ public final class BatteryStatsImpl extends BatteryStats { new HashMap<String, KernelWakelockStats>(); private final NetworkStatsFactory mNetworkStatsFactory = new NetworkStatsFactory(); - private NetworkStats mLastMobileSnapshot; - private NetworkStats mLastWifiSnapshot; + private NetworkStats mCurMobileSnapshot = new NetworkStats(SystemClock.elapsedRealtime(), 50); + private NetworkStats mLastMobileSnapshot = new NetworkStats(SystemClock.elapsedRealtime(), 50); + private NetworkStats mCurWifiSnapshot = new NetworkStats(SystemClock.elapsedRealtime(), 50); + private NetworkStats mLastWifiSnapshot = new NetworkStats(SystemClock.elapsedRealtime(), 50); private NetworkStats mTmpNetworkStats; private final NetworkStats.Entry mTmpNetworkStatsEntry = new NetworkStats.Entry(); @@ -5608,6 +5608,7 @@ public final class BatteryStatsImpl extends BatteryStats { if (mMobileIfaces.length > 0) { final NetworkStats snapshot; + final NetworkStats last = mCurMobileSnapshot; try { snapshot = mNetworkStatsFactory.readNetworkStatsDetail(UID_ALL, mMobileIfaces, NetworkStats.TAG_NONE, mLastMobileSnapshot); @@ -5616,15 +5617,12 @@ public final class BatteryStatsImpl extends BatteryStats { return; } - if (mLastMobileSnapshot == null) { - mLastMobileSnapshot = snapshot; - return; - } + mCurMobileSnapshot = snapshot; + mLastMobileSnapshot = last; - final NetworkStats delta = NetworkStats.subtract(snapshot, mLastMobileSnapshot, + final NetworkStats delta = NetworkStats.subtract(snapshot, last, null, null, mTmpNetworkStats); mTmpNetworkStats = delta; - mLastMobileSnapshot = snapshot; final int size = delta.size(); for (int i = 0; i < size; i++) { @@ -5649,6 +5647,7 @@ public final class BatteryStatsImpl extends BatteryStats { if (mWifiIfaces.length > 0) { final NetworkStats snapshot; + final NetworkStats last = mCurWifiSnapshot; try { snapshot = mNetworkStatsFactory.readNetworkStatsDetail(UID_ALL, mWifiIfaces, NetworkStats.TAG_NONE, mLastWifiSnapshot); @@ -5657,12 +5656,10 @@ public final class BatteryStatsImpl extends BatteryStats { return; } - if (mLastWifiSnapshot == null) { - mLastWifiSnapshot = snapshot; - return; - } + mCurWifiSnapshot = snapshot; + mLastWifiSnapshot = last; - final NetworkStats delta = NetworkStats.subtract(snapshot, mLastWifiSnapshot, + final NetworkStats delta = NetworkStats.subtract(snapshot, last, null, null, mTmpNetworkStats); mTmpNetworkStats = delta; mLastWifiSnapshot = snapshot; @@ -5671,6 +5668,13 @@ public final class BatteryStatsImpl extends BatteryStats { for (int i = 0; i < size; i++) { final NetworkStats.Entry entry = delta.getValues(i, mTmpNetworkStatsEntry); + if (DEBUG) { + final NetworkStats.Entry cur = snapshot.getValues(i, null); + Slog.d(TAG, "Wifi uid " + entry.uid + ": delta rx=" + entry.rxBytes + + " tx=" + entry.txBytes + ", cur rx=" + cur.rxBytes + + " tx=" + cur.txBytes); + } + if (entry.rxBytes == 0 || entry.txBytes == 0) continue; final Uid u = getUidStatsLocked(entry.uid); |