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

Commit 13d5c914 authored by Lee George Thomas's avatar Lee George Thomas Committed by Android (Google) Code Review
Browse files

Merge "Make PSS profiling configurable" into main

parents e806a0d3 6b045fbf
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -6587,4 +6587,7 @@
         vibrations for the customized haptic feedback IDs, and continue to use the system defaults
         for the non-customized ones. -->
    <string name="config_hapticFeedbackCustomizationFile" />

    <!-- Whether or not ActivityManager PSS profiling is disabled. -->
    <bool name="config_am_disablePssProfiling">false</bool>
</resources>
+3 −0
Original line number Diff line number Diff line
@@ -5185,4 +5185,7 @@
  <java-symbol type="bool" name="config_enable_a11y_magnification_single_panning" />

  <java-symbol type="string" name="config_hapticFeedbackCustomizationFile" />

  <!-- For ActivityManager PSS profiling configurability -->
  <java-symbol type="bool" name="config_am_disablePssProfiling" />
</resources>
+27 −2
Original line number Diff line number Diff line
@@ -46,6 +46,7 @@ import android.util.ArraySet;
import android.util.KeyValueListParser;
import android.util.Slog;

import com.android.internal.R;
import com.android.internal.annotations.GuardedBy;

import dalvik.annotation.optimization.NeverCompile;
@@ -1065,6 +1066,16 @@ final class ActivityManagerConstants extends ContentObserver {
    /** @see #KEY_ENABLE_NEW_OOMADJ */
    public boolean ENABLE_NEW_OOMADJ = DEFAULT_ENABLE_NEW_OOM_ADJ;

    /**
     * Indicates whether PSS profiling in AppProfiler is disabled or not.
     */
    static final String KEY_DISABLE_APP_PROFILER_PSS_PROFILING =
            "disable_app_profiler_pss_profiling";

    private final boolean mDefaultDisableAppProfilerPssProfiling;

    public boolean APP_PROFILER_PSS_PROFILING_DISABLED;

    private final OnPropertiesChangedListener mOnDeviceConfigChangedListener =
            new OnPropertiesChangedListener() {
                @Override
@@ -1240,6 +1251,9 @@ final class ActivityManagerConstants extends ContentObserver {
                            case KEY_USE_MODERN_TRIM:
                                updateUseModernTrim();
                                break;
                            case KEY_DISABLE_APP_PROFILER_PSS_PROFILING:
                                updateDisableAppProfilerPssProfiling();
                                break;
                            default:
                                updateFGSPermissionEnforcementFlagsIfNecessary(name);
                                break;
@@ -1321,8 +1335,10 @@ final class ActivityManagerConstants extends ContentObserver {
        CUR_TRIM_EMPTY_PROCESSES = rawMaxEmptyProcesses / 2;
        CUR_TRIM_CACHED_PROCESSES = (Integer.min(CUR_MAX_CACHED_PROCESSES, MAX_CACHED_PROCESSES)
                    - rawMaxEmptyProcesses) / 3;

        loadNativeBootDeviceConfigConstants();
        mDefaultDisableAppProfilerPssProfiling = context.getResources().getBoolean(
                R.bool.config_am_disablePssProfiling);
        APP_PROFILER_PSS_PROFILING_DISABLED = mDefaultDisableAppProfilerPssProfiling;
    }

    public void start(ContentResolver resolver) {
@@ -2029,6 +2045,12 @@ final class ActivityManagerConstants extends ContentObserver {
            .updatePermissionEnforcementFlagIfNecessary(name);
    }

    private void updateDisableAppProfilerPssProfiling() {
        APP_PROFILER_PSS_PROFILING_DISABLED = DeviceConfig.getBoolean(
                DeviceConfig.NAMESPACE_ACTIVITY_MANAGER, KEY_DISABLE_APP_PROFILER_PSS_PROFILING,
                mDefaultDisableAppProfilerPssProfiling);
    }

    @NeverCompile // Avoid size overhead of debugging code.
    void dump(PrintWriter pw) {
        pw.println("ACTIVITY MANAGER SETTINGS (dumpsys activity settings) "
@@ -2217,6 +2239,9 @@ final class ActivityManagerConstants extends ContentObserver {
        pw.print("  "); pw.print(KEY_ENABLE_NEW_OOMADJ);
        pw.print("="); pw.println(ENABLE_NEW_OOMADJ);

        pw.print("  "); pw.print(KEY_DISABLE_APP_PROFILER_PSS_PROFILING);
        pw.print("="); pw.println(APP_PROFILER_PSS_PROFILING_DISABLED);

        pw.println();
        if (mOverrideMaxCachedProcesses >= 0) {
            pw.print("  mOverrideMaxCachedProcesses="); pw.println(mOverrideMaxCachedProcesses);
+13 −8
Original line number Diff line number Diff line
@@ -633,6 +633,8 @@ public class AppProfiler {
                    return st.vsize > 0 && st.uid < FIRST_APPLICATION_UID;
                });
            }

            if (!mService.mConstants.APP_PROFILER_PSS_PROFILING_DISABLED) {
                final int numOfStats = stats.size();
                for (int j = 0; j < numOfStats; j++) {
                    synchronized (mService.mPidsSelfLocked) {
@@ -643,6 +645,8 @@ public class AppProfiler {
                    }
                    nativeTotalPss += Debug.getPss(stats.get(j).pid, null, null);
                }
            }

            memInfo.readMemInfo();
            synchronized (mService.mProcessStats.mLock) {
                if (DEBUG_PSS) {
@@ -706,7 +710,8 @@ public class AppProfiler {
                final boolean skipPSSCollection =
                        (profile.mApp.mOptRecord != null
                         && profile.mApp.mOptRecord.skipPSSCollectionBecauseFrozen())
                        || mService.isCameraActiveForUid(profile.mApp.uid);
                        || mService.isCameraActiveForUid(profile.mApp.uid)
                        || mService.mConstants.APP_PROFILER_PSS_PROFILING_DISABLED;
                long pss = skipPSSCollection ? 0 : Debug.getPss(pid, tmp, null);
                long endTime = SystemClock.currentThreadTimeMillis();
                synchronized (mProfilerLock) {