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

Commit a8d2599b authored by Jing Ji's avatar Jing Ji
Browse files

Emit trace point event on process freeze/unfreeze

Bug: 244386510
Test: Perfetto
Change-Id: I55c2ec39506f63171489205fbcb17c149b9afa8e
parent a133b8be
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
@@ -40,18 +40,19 @@ import android.util.EventLog;
import android.util.Pair;
import android.util.Slog;
import android.util.SparseArray;

import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.os.ProcLocksReader;
import com.android.internal.util.FrameworkStatsLog;
import com.android.server.ServiceThread;

import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.EnumMap;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.LinkedList;
@@ -109,6 +110,7 @@ public final class CachedAppOptimizer {
    private static final int COMPACT_ACTION_ANON_FLAG = 2;

    private static final String ATRACE_COMPACTION_TRACK = "Compaction";
    private static final String ATRACE_FREEZER_TRACK = "Freezer";

    // Defaults for phenotype flags.
    @VisibleForTesting static final Boolean DEFAULT_USE_COMPACTION = false;
@@ -1309,6 +1311,7 @@ public final class CachedAppOptimizer {
        }

        try {
            traceAppFreeze(app.processName, pid, false);
            Process.setProcessFrozen(pid, app.uid, false);

            opt.setFreezeUnfreezeTime(SystemClock.uptimeMillis());
@@ -1359,6 +1362,7 @@ public final class CachedAppOptimizer {
            }

            try {
                traceAppFreeze(app.processName, pid, false);
                Process.setProcessFrozen(pid, app.uid, false);
            } catch (Exception e) {
                Slog.e(TAG_AM, "Unable to quick unfreeze " + pid);
@@ -1366,6 +1370,11 @@ public final class CachedAppOptimizer {
        }
    }

    private static void traceAppFreeze(String processName, int pid, boolean freeze) {
        Trace.instantForTrack(Trace.TRACE_TAG_ACTIVITY_MANAGER, ATRACE_FREEZER_TRACK,
                (freeze ? "Freeze " : "Unfreeze ") + processName + ":" + pid);
    }

    /**
     * To be called when the given app is killed.
     */
@@ -1959,6 +1968,7 @@ public final class CachedAppOptimizer {
                long unfreezeTime = opt.getFreezeUnfreezeTime();

                try {
                    traceAppFreeze(proc.processName, pid, true);
                    Process.setProcessFrozen(pid, proc.uid, true);

                    opt.setFreezeUnfreezeTime(SystemClock.uptimeMillis());