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

Commit 0cc705ef authored by Jeongik Cha's avatar Jeongik Cha Committed by Android (Google) Code Review
Browse files

Merge "Look for phantom processes before setting the process group" into main

parents 23573d68 5e04fba5
Loading
Loading
Loading
Loading
+30 −24
Original line number Diff line number Diff line
@@ -514,16 +514,29 @@ public class OomAdjuster {
        mLogger = new OomAdjusterDebugLogger(this, mService.mConstants);

        mProcessGroupHandler = new Handler(adjusterThread.getLooper(), msg -> {
            final int pid = msg.arg1;
            final int group = msg.arg2;
            final int group = msg.what;
            final ProcessRecord app = (ProcessRecord) msg.obj;
            setProcessGroup(app.getPid(), group, app.processName);
            if (Flags.phantomProcessesFix()) {
                mService.mPhantomProcessList.setProcessGroupForPhantomProcessOfApp(app, group);
            }
            return true;
        });
        mTmpUidRecords = new ActiveUids(service, false);
        mTmpQueue = new ArrayDeque<ProcessRecord>(mConstants.CUR_MAX_CACHED_PROCESSES << 1);
        mNumSlots = ((CACHED_APP_MAX_ADJ - CACHED_APP_MIN_ADJ + 1) >> 1)
                / CACHED_APP_IMPORTANCE_LEVELS;
    }

    void setProcessGroup(int pid, int group, String processName) {
        if (pid == ActivityManagerService.MY_PID) {
            // Skip setting the process group for system_server, keep it as default.
                return true;
            return;
        }
        final boolean traceEnabled = Trace.isTagEnabled(Trace.TRACE_TAG_ACTIVITY_MANAGER);
        if (traceEnabled) {
            Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "setProcessGroup "
                        + msg.obj + " to " + group);
                    + processName + " to " + group);
        }
        try {
            android.os.Process.setProcessGroup(pid, group);
@@ -536,17 +549,11 @@ public class OomAdjuster {
                Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
            }
        }
            return true;
        });
        mTmpUidRecords = new ActiveUids(service, false);
        mTmpQueue = new ArrayDeque<ProcessRecord>(mConstants.CUR_MAX_CACHED_PROCESSES << 1);
        mNumSlots = ((CACHED_APP_MAX_ADJ - CACHED_APP_MIN_ADJ + 1) >> 1)
                / CACHED_APP_IMPORTANCE_LEVELS;
    }

    void setProcessGroup(int pid, int group, String processName) {
    void setAppAndChildProcessGroup(ProcessRecord app, int group) {
        mProcessGroupHandler.sendMessage(mProcessGroupHandler.obtainMessage(
                0 /* unused */, pid, group, processName));
                group, app));
    }

    void initSettings() {
@@ -3503,8 +3510,7 @@ public class OomAdjuster {
                    processGroup = THREAD_GROUP_DEFAULT;
                    break;
            }
            setProcessGroup(app.getPid(), processGroup, app.processName);
            mService.mPhantomProcessList.setProcessGroupForPhantomProcessOfApp(app, processGroup);
            setAppAndChildProcessGroup(app, processGroup);
            try {
                final int renderThreadTid = app.getRenderThreadTid();
                if (curSchedGroup == SCHED_GROUP_TOP_APP) {
+1 −0
Original line number Diff line number Diff line
@@ -548,6 +548,7 @@ public final class PhantomProcessList {
     */
    void setProcessGroupForPhantomProcessOfApp(final ProcessRecord app, final int group) {
        synchronized (mLock) {
            lookForPhantomProcessesLocked(app);
            final SparseArray<PhantomProcessRecord> array = getPhantomProcessOfAppLocked(app);
            if (array == null) {
                return;
+11 −1
Original line number Diff line number Diff line
@@ -251,3 +251,13 @@ flag {
    description: "Add +X to the prev scores according to their positions in the process LRU list"
    bug: "359912586"
}

flag {
    name: "phantom_processes_fix"
    namespace: "backstage_power"
    description: "Make sure setProcessGroupForPhantomProcessOfApp deals with phantom processes properly"
    bug: "375058190"
    metadata {
        purpose: PURPOSE_BUGFIX
    }
}