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

Commit f406e230 authored by Dianne Hackborn's avatar Dianne Hackborn Committed by Android (Google) Code Review
Browse files

Merge "More work on procstats: save/restore state, fixes."

parents 04971a73 904a857d
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -2205,6 +2205,8 @@ public class ActivityManager {
        pw.println();
        dumpService(pw, fd, "procstats", new String[] { packageName });
        pw.println();
        dumpService(pw, fd, "usagestats", new String[] { "--packages", packageName });
        pw.println();
        dumpService(pw, fd, "package", new String[] { packageName });
        pw.println();
        dumpService(pw, fd, BatteryStats.SERVICE_NAME, new String[] { packageName });
+0 −1
Original line number Diff line number Diff line
@@ -613,7 +613,6 @@ public final class BatteryStatsImpl extends BatteryStats {
         * Constructs from a parcel.
         * @param type
         * @param unpluggables
         * @param powerType
         * @param in
         */
        Timer(int type, ArrayList<Unpluggable> unpluggables, Parcel in) {
+10 −10
Original line number Diff line number Diff line
@@ -244,7 +244,7 @@ public final class ActiveServices {
        r.lastActivity = SystemClock.uptimeMillis();
        r.startRequested = true;
        if (r.tracker != null) {
            r.tracker.setStarted(true, mAm.mProcessTracker.getMemFactor(), r.lastActivity);
            r.tracker.setStarted(true, mAm.mProcessTracker.getMemFactorLocked(), r.lastActivity);
        }
        r.callStart = false;
        r.pendingStarts.add(new ServiceRecord.StartItem(r, false, r.makeNextStartId(),
@@ -265,7 +265,7 @@ public final class ActiveServices {
        }
        service.startRequested = false;
        if (service.tracker != null) {
            service.tracker.setStarted(false, mAm.mProcessTracker.getMemFactor(),
            service.tracker.setStarted(false, mAm.mProcessTracker.getMemFactorLocked(),
                    SystemClock.uptimeMillis());
        }
        service.callStart = false;
@@ -365,7 +365,7 @@ public final class ActiveServices {
            }
            r.startRequested = false;
            if (r.tracker != null) {
                r.tracker.setStarted(false, mAm.mProcessTracker.getMemFactor(),
                r.tracker.setStarted(false, mAm.mProcessTracker.getMemFactorLocked(),
                        SystemClock.uptimeMillis());
            }
            r.callStart = false;
@@ -505,7 +505,7 @@ public final class ActiveServices {
                if (!s.hasAutoCreateConnections()) {
                    // This is the first binding, let the tracker know.
                    if (s.tracker != null) {
                        s.tracker.setBound(true, mAm.mProcessTracker.getMemFactor(),
                        s.tracker.setBound(true, mAm.mProcessTracker.getMemFactorLocked(),
                                s.lastActivity);
                    }
                }
@@ -827,7 +827,7 @@ public final class ActiveServices {
        long now = SystemClock.uptimeMillis();
        if (r.executeNesting == 0) {
            if (r.tracker != null) {
                r.tracker.setExecuting(true, mAm.mProcessTracker.getMemFactor(), now);
                r.tracker.setExecuting(true, mAm.mProcessTracker.getMemFactorLocked(), now);
            }
            if (r.app != null) {
                if (r.app.executingServices.size() == 0) {
@@ -1327,7 +1327,7 @@ public final class ActiveServices {
           ((ServiceRestarter)r.restarter).setService(null);
        }

        int memFactor = mAm.mProcessTracker.getMemFactor();
        int memFactor = mAm.mProcessTracker.getMemFactorLocked();
        long now = SystemClock.uptimeMillis();
        if (r.tracker != null) {
            r.tracker.setStarted(false, memFactor, now);
@@ -1394,7 +1394,7 @@ public final class ActiveServices {
                boolean hasAutoCreate = s.hasAutoCreateConnections();
                if (!hasAutoCreate) {
                    if (s.tracker != null) {
                        s.tracker.setBound(false, mAm.mProcessTracker.getMemFactor(),
                        s.tracker.setBound(false, mAm.mProcessTracker.getMemFactorLocked(),
                                SystemClock.uptimeMillis());
                    }
                }
@@ -1490,7 +1490,7 @@ public final class ActiveServices {
                mAm.updateOomAdjLocked(r.app);
            }
            if (r.tracker != null) {
                r.tracker.setExecuting(false, mAm.mProcessTracker.getMemFactor(),
                r.tracker.setExecuting(false, mAm.mProcessTracker.getMemFactorLocked(),
                        SystemClock.uptimeMillis());
            }
        }
@@ -1685,7 +1685,7 @@ public final class ActiveServices {
                sr.isolatedProc = null;
                sr.executeNesting = 0;
                if (sr.tracker != null) {
                    sr.tracker.setExecuting(false, mAm.mProcessTracker.getMemFactor(),
                    sr.tracker.setExecuting(false, mAm.mProcessTracker.getMemFactorLocked(),
                            SystemClock.uptimeMillis());
                }
                if (mStoppingServices.remove(sr)) {
@@ -1720,7 +1720,7 @@ public final class ActiveServices {
                        if (sr.pendingStarts.size() == 0) {
                            sr.startRequested = false;
                            if (sr.tracker != null) {
                                sr.tracker.setStarted(false, mAm.mProcessTracker.getMemFactor(),
                                sr.tracker.setStarted(false, mAm.mProcessTracker.getMemFactorLocked(),
                                        SystemClock.uptimeMillis());
                            }
                            if (!sr.hasAutoCreateConnections()) {
+38 −11
Original line number Diff line number Diff line
@@ -272,7 +272,11 @@ public final class ActivityManagerService extends ActivityManagerNative
    // The amount of time we will sample PSS of the current top process while the
    // screen is on.
    static final int PSS_TOP_INTERVAL = 5*60*1000;
    static final int PSS_TOP_INTERVAL = 2*60*1000;
    // The amount of time we will sample PSS of any processes that more at least as
    // important as perceptible while the screen is on.
    static final int PSS_PERCEPTIBLE_INTERVAL = 10*60*1000;
    // The maximum amount of time for a process to be around until we will take
    // a PSS snapshot on its next oom change.
@@ -423,7 +427,7 @@ public final class ActivityManagerService extends ActivityManagerNative
     * Tracking long-term execution of processes to look for abuse and other
     * bad app behavior.
     */
    ProcessTracker mProcessTracker;
    final ProcessTracker mProcessTracker;
    /**
     * The currently running isolated processes.
@@ -1528,12 +1532,12 @@ public final class ActivityManagerService extends ActivityManagerNative
                        if (proc.thread != null) {
                            oomAdj = proc.setAdj;
                            pid = proc.pid;
                            i++;
                        } else {
                            proc = null;
                            oomAdj = 0;
                            pid = 0;
                        }
                        i++;
                    }
                    if (proc != null) {
                        long pss = Debug.getPss(pid);
@@ -1620,7 +1624,6 @@ public final class ActivityManagerService extends ActivityManagerNative
        m.mContext = context;
        m.mFactoryTest = factoryTest;
        m.mIntentFirewall = new IntentFirewall(m.new IntentFirewallInterface());
        m.mProcessTracker = new ProcessTracker(context);
        m.mStackSupervisor = new ActivityStackSupervisor(m, context, thr.mLooper);
@@ -1817,8 +1820,10 @@ public final class ActivityManagerService extends ActivityManagerNative
                : mBatteryStatsService.getActiveStatistics().getIsOnBattery();
        mBatteryStatsService.getActiveStatistics().setCallback(this);
        mUsageStatsService = new UsageStatsService(new File(
                systemDir, "usagestats").toString());
        mProcessTracker = new ProcessTracker(new File(systemDir, "procstats"));
        mProcessTracker.readLocked();
        mUsageStatsService = new UsageStatsService(new File(systemDir, "usagestats").toString());
        mAppOpsService = new AppOpsService(new File(systemDir, "appops.xml"));
        mGrantFile = new AtomicFile(new File(systemDir, "urigrants.xml"));
@@ -7636,6 +7641,9 @@ public final class ActivityManagerService extends ActivityManagerNative
        mAppOpsService.shutdown();
        mUsageStatsService.shutdown();
        mBatteryStatsService.shutdown();
        synchronized (this) {
            mProcessTracker.shutdownLocked();
        }
        return timedout;
    }
@@ -14203,8 +14211,17 @@ public final class ActivityManagerService extends ActivityManagerNative
            app.setRawAdj = app.curRawAdj;
        }
        if (!mSleeping) {
            if (app == TOP_APP && now > (app.lastPssTime+PSS_TOP_INTERVAL)) {
                // For the current top application we will very aggressively collect
                // PSS data to have a good measure of memory use while in the foreground.
                requestPssLocked(app, now, true);
            } else if (app.curAdj <= ProcessList.PERCEPTIBLE_APP_ADJ
                    && now > (app.lastPssTime+PSS_TOP_INTERVAL)) {
                // For any unkillable processes, we will more regularly collect their PSS
                // since they have a significant impact on the memory state of the device.
                requestPssLocked(app, now, true);
            }
        }
        if (app.curAdj != app.setAdj) {
@@ -14223,7 +14240,7 @@ public final class ActivityManagerService extends ActivityManagerNative
                app.setAdj = app.curAdj;
                app.setAdjChanged = true;
                if (!doingAll) {
                    app.setProcessTrackerState(TOP_APP, mProcessTracker.getMemFactor(),
                    app.setProcessTrackerState(TOP_APP, mProcessTracker.getMemFactorLocked(),
                            now, mProcessList);
                }
            } else {
@@ -14599,9 +14616,9 @@ public final class ActivityManagerService extends ActivityManagerNative
            mStackSupervisor.scheduleDestroyAllActivities(null, "always-finish");
        }
        boolean allChanged = mProcessTracker.setMemFactor(memFactor, !mSleeping, now);
        boolean allChanged = mProcessTracker.setMemFactorLocked(memFactor, !mSleeping, now);
        if (changed || allChanged) {
            memFactor = mProcessTracker.getMemFactor();
            memFactor = mProcessTracker.getMemFactorLocked();
            for (i=mLruProcesses.size()-1; i>=0; i--) {
                ProcessRecord app = mLruProcesses.get(i);
                if (allChanged || app.setAdjChanged) {
@@ -14613,6 +14630,16 @@ public final class ActivityManagerService extends ActivityManagerNative
            requestPssAllProcsLocked(now, false);
        }
        if (mProcessTracker.shouldWriteNowLocked(now)) {
            mHandler.post(new Runnable() {
                @Override public void run() {
                    synchronized (ActivityManagerService.this) {
                        mProcessTracker.writeStateAsyncLocked();
                    }
                }
            });
        }
        if (DEBUG_OOM_ADJ) {
            Slog.d(TAG, "Did OOM ADJ in " + (SystemClock.uptimeMillis()-now) + "ms");
        }
+827 −318

File changed.

Preview size limit exceeded, changes collapsed.

Loading