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

Commit cd88027c authored by Keun-young Park's avatar Keun-young Park Committed by Android (Google) Code Review
Browse files

Merge "bgDexOpt: record last execution time and duration to dump"

parents c209fa53 bdff40e8
Loading
Loading
Loading
Loading
+19 −2
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@ import android.os.PowerManager;
import android.os.Process;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.SystemClock;
import android.os.SystemProperties;
import android.os.Trace;
import android.os.UserHandle;
@@ -146,6 +147,11 @@ public final class BackgroundDexOptService {
    @GuardedBy("mLock")
    @Status private int mLastExecutionStatus = STATUS_OK;

    @GuardedBy("mLock")
    private long mLastExecutionStartTimeMs;
    @GuardedBy("mLock")
    private long mLastExecutionDurationMs;

    // Keeps packages cancelled from PDO for last session. This is for debugging.
    @GuardedBy("mLock")
    private final ArraySet<String> mLastCancelledPackages = new ArraySet<String>();
@@ -218,9 +224,15 @@ public final class BackgroundDexOptService {
            writer.print("mDexOptCancellingThread:");
            writer.println(mDexOptCancellingThread);
            writer.print("mFinishedPostBootUpdate:");
            writer.print(mFinishedPostBootUpdate);
            writer.print(",mLastExecutionStatus:");
            writer.println(mFinishedPostBootUpdate);
            writer.print("mLastExecutionStatus:");
            writer.println(mLastExecutionStatus);
            writer.print("mLastExecutionStartTimeMs:");
            writer.println(mLastExecutionStartTimeMs);
            writer.print("mLastExecutionDurationMs:");
            writer.println(mLastExecutionDurationMs);
            writer.print("now:");
            writer.println(SystemClock.elapsedRealtime());
            writer.print("mLastCancelledPackages:");
            writer.println(String.join(",", mLastCancelledPackages));
            writer.print("mFailedPackageNamesPrimary:");
@@ -514,12 +526,17 @@ public final class BackgroundDexOptService {
    /** Returns true if completed */
    private boolean runIdleOptimization(PackageManagerService pm, ArraySet<String> pkgs,
            boolean isPostBootUpdate) {
        synchronized (mLock) {
            mLastExecutionStartTimeMs = SystemClock.elapsedRealtime();
            mLastExecutionDurationMs = -1;
        }
        long lowStorageThreshold = getLowStorageThreshold();
        int status = idleOptimizePackages(pm, pkgs, lowStorageThreshold,
                isPostBootUpdate);
        logStatus(status);
        synchronized (mLock) {
            mLastExecutionStatus = status;
            mLastExecutionDurationMs = SystemClock.elapsedRealtime() - mLastExecutionStartTimeMs;
        }

        return status == STATUS_OK;