Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6abe2f9b authored by Alec Mouri's avatar Alec Mouri
Browse files

Revert "Temporarily additional stats into battery dumpsys"

This reverts commit 39db76b5.

Reason for revert: Eng-prod no longer requires this patch

Bug: 169376495

Change-Id: I93be09f03745734d65190a5a39f79d90c0150652
parent 4a63b26d
Loading
Loading
Loading
Loading
+0 −169
Original line number Original line Diff line number Diff line
@@ -41,7 +41,6 @@ import android.net.NetworkStats;
import android.net.Uri;
import android.net.Uri;
import android.net.wifi.WifiManager;
import android.net.wifi.WifiManager;
import android.os.BatteryManager;
import android.os.BatteryManager;
import android.os.BatteryProperty;
import android.os.BatteryStats;
import android.os.BatteryStats;
import android.os.Binder;
import android.os.Binder;
import android.os.Build;
import android.os.Build;
@@ -58,7 +57,6 @@ import android.os.Process;
import android.os.RemoteException;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.ServiceManager;
import android.os.SystemClock;
import android.os.SystemClock;
import android.os.SystemProperties;
import android.os.UserHandle;
import android.os.UserHandle;
import android.os.WorkSource;
import android.os.WorkSource;
import android.os.WorkSource.WorkChain;
import android.os.WorkSource.WorkChain;
@@ -150,14 +148,6 @@ import java.util.concurrent.locks.ReentrantLock;
public class BatteryStatsImpl extends BatteryStats {
public class BatteryStatsImpl extends BatteryStats {
    private static final String TAG = "BatteryStatsImpl";
    private static final String TAG = "BatteryStatsImpl";
    private static final boolean DEBUG = false;
    private static final boolean DEBUG = false;
    // TODO(b/169376495): STOPSHIP if true
    private static final boolean DEBUG_FOREGROUND_STATS = true;
    private static final boolean ENABLE_FOREGROUND_STATS_COLLECTION =
            DEBUG_FOREGROUND_STATS && SystemProperties.getBoolean(
                    "debug.battery_foreground_stats_collection", false);
    public static final boolean DEBUG_ENERGY = false;
    public static final boolean DEBUG_ENERGY = false;
    private static final boolean DEBUG_ENERGY_CPU = DEBUG_ENERGY;
    private static final boolean DEBUG_ENERGY_CPU = DEBUG_ENERGY;
    private static final boolean DEBUG_BINDER_STATS = false;
    private static final boolean DEBUG_BINDER_STATS = false;
@@ -752,37 +742,6 @@ public class BatteryStatsImpl extends BatteryStats {
    long mTrackRunningHistoryElapsedRealtimeMs = 0;
    long mTrackRunningHistoryElapsedRealtimeMs = 0;
    long mTrackRunningHistoryUptimeMs = 0;
    long mTrackRunningHistoryUptimeMs = 0;
    private static final int FOREGROUND_UID_INITIAL_CAPACITY = 10;
    private static final int INVALID_UID = -1;
    private final IntArray mForegroundUids = ENABLE_FOREGROUND_STATS_COLLECTION
            ? new IntArray(FOREGROUND_UID_INITIAL_CAPACITY) :  null;
    // Last recorded battery energy capacity.
    // This is used for computing foregrund power per application.
    // See: PowerForUid below
    private long mLastBatteryEnergyCapacityNwh = 0;
    private static final class PowerForUid {
        public long energyNwh = 0;
        // Same as energyNwh, but not tracked for the first 2 minutes;
        public long filteredEnergyNwh = 0;
        public double totalHours = 0;
        public long baseTimeMs = 0;
        double computePower() {
            // units in nW
            return totalHours != 0 ? energyNwh / totalHours : -1.0;
        }
        double computeFilteredPower() {
            // units in nW
            return totalHours != 0 ? filteredEnergyNwh / totalHours : -1.0;
        }
    }
    private final HashMap<Integer, PowerForUid> mUidToPower = ENABLE_FOREGROUND_STATS_COLLECTION
            ? new HashMap<>() : null;
    @NonNull
    @NonNull
    final BatteryStatsHistory mBatteryStatsHistory;
    final BatteryStatsHistory mBatteryStatsHistory;
@@ -1094,7 +1053,6 @@ public class BatteryStatsImpl extends BatteryStats {
    private int mNumConnectivityChange;
    private int mNumConnectivityChange;
    private int mBatteryVoltageMv = -1;
    private int mBatteryVoltageMv = -1;
    private int mBatteryChargeUah = -1;
    private int mEstimatedBatteryCapacityMah = -1;
    private int mEstimatedBatteryCapacityMah = -1;
    private int mMinLearnedBatteryCapacityUah = -1;
    private int mMinLearnedBatteryCapacityUah = -1;
@@ -4020,49 +3978,6 @@ public class BatteryStatsImpl extends BatteryStats {
        // TODO(b/155216561): It is possible for isolated uids to be in a higher
        // TODO(b/155216561): It is possible for isolated uids to be in a higher
        // state than its parent uid. We should track the highest state within the union of host
        // state than its parent uid. We should track the highest state within the union of host
        // and isolated uids rather than only the parent uid.
        // and isolated uids rather than only the parent uid.
        int uidState = mapToInternalProcessState(state);
        boolean isForeground = (uidState == Uid.PROCESS_STATE_TOP)
                ||  (uidState == Uid.PROCESS_STATE_FOREGROUND);
        if (ENABLE_FOREGROUND_STATS_COLLECTION) {
            boolean previouslyInForegrond = false;
            for (int i = 0; i < mForegroundUids.size(); i++) {
                if (mForegroundUids.get(i) == uid) {
                    previouslyInForegrond = true;
                    if (!isForeground) {
                        // If we were previously in the foreground, remove the uid
                        // from the foreground set and dirty the slot.
                        mForegroundUids.set(i, INVALID_UID);
                        final PowerForUid pfu =
                                mUidToPower.computeIfAbsent(uid, unused -> new PowerForUid());
                        pfu.baseTimeMs = 0;
                        break;
                    }
                }
            }
            if (!previouslyInForegrond && isForeground) {
                boolean addedToForeground = false;
                // Check if we have a free slot to clobber...
                for (int i = 0; i < mForegroundUids.size(); i++) {
                    if (mForegroundUids.get(i) == INVALID_UID) {
                        addedToForeground = true;
                        mForegroundUids.set(i, uid);
                        break;
                    }
                }
                // ...if not, append to the end of the array.
                if (!addedToForeground) {
                    mForegroundUids.add(uid);
                }
            }
        }
        FrameworkStatsLog.write(FrameworkStatsLog.UID_PROCESS_STATE_CHANGED, uid,
        FrameworkStatsLog.write(FrameworkStatsLog.UID_PROCESS_STATE_CHANGED, uid,
                ActivityManager.processStateAmToProto(state));
                ActivityManager.processStateAmToProto(state));
        getUidStatsLocked(uid, elapsedRealtimeMs, uptimeMs)
        getUidStatsLocked(uid, elapsedRealtimeMs, uptimeMs)
@@ -13547,7 +13462,6 @@ public class BatteryStatsImpl extends BatteryStats {
                doWrite = true;
                doWrite = true;
                resetAllStatsLocked(mSecUptime, mSecRealtime);
                resetAllStatsLocked(mSecUptime, mSecRealtime);
                if (chargeUah > 0 && level > 0) {
                if (chargeUah > 0 && level > 0) {
                    mBatteryChargeUah = chargeUah;
                    // Only use the reported coulomb charge value if it is supported and reported.
                    // Only use the reported coulomb charge value if it is supported and reported.
                    mEstimatedBatteryCapacityMah = (int) ((chargeUah / 1000) / (level / 100.0));
                    mEstimatedBatteryCapacityMah = (int) ((chargeUah / 1000) / (level / 100.0));
                }
                }
@@ -13720,48 +13634,7 @@ public class BatteryStatsImpl extends BatteryStats {
                startRecordingHistory(elapsedRealtimeMs, uptimeMs, true);
                startRecordingHistory(elapsedRealtimeMs, uptimeMs, true);
            }
            }
        }
        }
        mBatteryVoltageMv = voltageMv;
        mBatteryVoltageMv = voltageMv;
        if (ENABLE_FOREGROUND_STATS_COLLECTION) {
            if (onBattery) {
                final long energyNwh = (voltageMv * (long) chargeUah);
                final long energyDelta = mLastBatteryEnergyCapacityNwh - energyNwh;
                for (int i = 0; i < mForegroundUids.size(); i++) {
                    final int uid = mForegroundUids.get(i);
                    if (uid == INVALID_UID) {
                        continue;
                    }
                    final PowerForUid pfu = mUidToPower
                            .computeIfAbsent(uid, unused -> new PowerForUid());
                    if (pfu.baseTimeMs <= 0) {
                        pfu.baseTimeMs = currentTimeMs;
                    } else {
                        // Check if mLastBatteryEnergyCapacityNwh > energyNwh,
                        // to make sure we only count discharges
                        if (energyDelta > 0) {
                            pfu.energyNwh += energyDelta;
                            // Convert from milliseconds to hours
                            // 1000 ms per second * 3600 seconds per hour
                            pfu.totalHours += ((double) (currentTimeMs - pfu.baseTimeMs)
                                    / (1.0 * 1000 * 60 * 60));
                            // Now convert from 2 minutes to hours
                            // 2 minutes = 1/30 of an hour
                            if (pfu.totalHours > (2.0 / 60)) {
                                pfu.filteredEnergyNwh += energyDelta;
                            }
                        }
                        pfu.baseTimeMs = currentTimeMs;
                    }
                }
                mLastBatteryEnergyCapacityNwh = energyNwh;
            } else if (onBattery != mOnBattery) {
                // Transition to onBattery = false
                mUidToPower.values().forEach(v -> v.baseTimeMs = 0);
            }
        }
        mCurrentBatteryLevel = level;
        mCurrentBatteryLevel = level;
        if (mDischargePlugLevel < 0) {
        if (mDischargePlugLevel < 0) {
            mDischargePlugLevel = level;
            mDischargePlugLevel = level;
@@ -16679,48 +16552,6 @@ public class BatteryStatsImpl extends BatteryStats {
    }
    }
    public void dumpLocked(Context context, PrintWriter pw, int flags, int reqUid, long histStart) {
    public void dumpLocked(Context context, PrintWriter pw, int flags, int reqUid, long histStart) {
        if (ENABLE_FOREGROUND_STATS_COLLECTION) {
            long actualChargeUah = -1;
            long actualEnergyNwh = -1;
            try {
                IBatteryPropertiesRegistrar registrar =
                        IBatteryPropertiesRegistrar.Stub.asInterface(
                                ServiceManager.getService("batteryproperties"));
                if (registrar != null) {
                    BatteryProperty prop = new BatteryProperty();
                    if (registrar.getProperty(
                                BatteryManager.BATTERY_PROPERTY_CHARGE_COUNTER, prop) == 0) {
                        actualChargeUah = prop.getLong();
                    }
                    prop = new BatteryProperty();
                    if (registrar.getProperty(
                                BatteryManager.BATTERY_PROPERTY_ENERGY_COUNTER, prop) == 0) {
                        actualEnergyNwh = prop.getLong();
                    }
                }
            } catch (RemoteException e) {
                // Ignore.
            }
            pw.printf("ActualCharge (uAh): %d\n", (int) actualChargeUah);
            pw.printf("ActualEnergy (nWh): %d\n", actualEnergyNwh);
            pw.printf("mBatteryCharge (uAh): %d\n", mBatteryChargeUah);
            pw.printf("mBatteryVolts (mV): %d\n", mBatteryVoltageMv);
            pw.printf("est energy (nWh): %d\n", mBatteryVoltageMv * (long) mBatteryChargeUah);
            pw.printf("mEstimatedBatteryCapacity (mAh): %d\n", mEstimatedBatteryCapacityMah);
            pw.printf("mMinLearnedBatteryCapacity (uAh): %d\n", mMinLearnedBatteryCapacityUah);
            pw.printf("mMaxLearnedBatteryCapacity (uAh): %d\n", mMaxLearnedBatteryCapacityUah);
            pw.printf("est. capacity: %f\n",
                    (float) actualChargeUah / (mEstimatedBatteryCapacityMah * 1000));
            pw.printf("mCurrentBatteryLevel: %d\n", mCurrentBatteryLevel);
            pw.println("Total Power per app:");
            mUidToPower.entrySet().forEach(e ->
                    pw.printf("Uid: %d, Total watts (nW): %f\n",
                            e.getKey(), e.getValue().computePower()));
            pw.println("Total Power per app after first 2 minutes initial launch:");
            mUidToPower.entrySet().forEach(e ->
                    pw.printf("Uid: %d, Total watts (nW): %f\n",
                            e.getKey(), e.getValue().computeFilteredPower()));
        }
        if (DEBUG) {
        if (DEBUG) {
            pw.println("mOnBatteryTimeBase:");
            pw.println("mOnBatteryTimeBase:");
            mOnBatteryTimeBase.dump(pw, "  ");
            mOnBatteryTimeBase.dump(pw, "  ");