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

Commit d3f2c2bf authored by Android Build Merger (Role)'s avatar Android Build Merger (Role) Committed by Android (Google) Code Review
Browse files

Merge "Merge "Add anon RSS + swap metric" into qt-dev am: 9af8d157 am:...

Merge "Merge "Add anon RSS + swap metric" into qt-dev am: 9af8d157 am: 83270da5" into qt-r1-dev-plus-aosp
parents 26a8b7dd c724ee2d
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -3960,7 +3960,7 @@ message ProcessMemoryState {
    optional int64 page_major_fault = 5;

    // RSS
    // Value is read from /proc/PID/stat, field 24. Or from memory.stat, field
    // Value is read from /proc/PID/status. Or from memory.stat, field
    // total_rss if per-app memory cgroups are enabled.
    optional int64 rss_in_bytes = 6;

@@ -3980,6 +3980,9 @@ message ProcessMemoryState {
    // Elapsed real time when the process started.
    // Value is read from /proc/PID/stat, field 22. 0 if read from per-app memory cgroups.
    optional int64 start_time_nanos = 10;

    // Anonymous page size plus swap size. Values are read from /proc/PID/status.
    optional int32 anon_rss_and_swap_in_kilobytes = 11;
}

/*
@@ -4002,7 +4005,7 @@ message NativeProcessMemoryState {
    optional int64 page_major_fault = 4;

    // RSS
    // Value read from /proc/PID/stat, field 24.
    // Value read from /proc/PID/status.
    optional int64 rss_in_bytes = 5;

    // Deprecated: use ProcessMemoryHighWaterMark atom instead. Always 0.
@@ -4015,6 +4018,9 @@ message NativeProcessMemoryState {
    // SWAP
    // Value read from /proc/PID/status, field VmSwap.
    optional int64 swap_in_bytes = 8;

    // Anonymous page size plus swap size. Values are read from /proc/PID/status.
    optional int32 anon_rss_and_swap_in_kilobytes = 9;
}

/*
+1 −8
Original line number Diff line number Diff line
@@ -168,19 +168,12 @@ public abstract class ActivityManagerInternal {
    public abstract boolean isUidActive(int uid);

    /**
     * Returns a list that contains the memory stats for currently running processes.
     * Returns a list of running processes along with corresponding uids, pids and their oom score.
     *
     * Only processes managed by ActivityManagerService are included.
     */
    public abstract List<ProcessMemoryState> getMemoryStateForProcesses();

    /**
     * Returns a list that contains the memory high-water mark for currently running processes.
     *
     * Only processes managed by ActivityManagerService are included.
     */
    public abstract List<ProcessMemoryHighWaterMark> getMemoryHighWaterMarkForProcesses();

    /**
     * Checks to see if the calling pid is allowed to handle the user. Returns adjusted user id as
     * needed.
+0 −67
Original line number Diff line number Diff line
/*
 * Copyright (C) 2018 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.app;

import android.os.Parcel;
import android.os.Parcelable;

/**
 * The memory high-water mark value for a process.
 * {@hide}
 */
public final class ProcessMemoryHighWaterMark implements Parcelable {
    public final int uid;
    public final String processName;
    public final long rssHighWaterMarkInBytes;

    public ProcessMemoryHighWaterMark(int uid, String processName, long rssHighWaterMarkInBytes) {
        this.uid = uid;
        this.processName = processName;
        this.rssHighWaterMarkInBytes = rssHighWaterMarkInBytes;
    }

    private ProcessMemoryHighWaterMark(Parcel in) {
        uid = in.readInt();
        processName = in.readString();
        rssHighWaterMarkInBytes = in.readLong();
    }

    public static final @android.annotation.NonNull Creator<ProcessMemoryHighWaterMark> CREATOR =
            new Creator<ProcessMemoryHighWaterMark>() {
                @Override
                public ProcessMemoryHighWaterMark createFromParcel(Parcel in) {
                    return new ProcessMemoryHighWaterMark(in);
                }

                @Override
                public ProcessMemoryHighWaterMark[] newArray(int size) {
                    return new ProcessMemoryHighWaterMark[size];
                }
            };

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel parcel, int flags) {
        parcel.writeInt(uid);
        parcel.writeString(processName);
        parcel.writeLong(rssHighWaterMarkInBytes);
    }
}
+6 −28
Original line number Diff line number Diff line
@@ -20,44 +20,27 @@ import android.os.Parcel;
import android.os.Parcelable;

/**
 * The memory stats for a process.
 * State (oom score) for processes known to activity manager.
 * {@hide}
 */
public final class ProcessMemoryState implements Parcelable {
    public final int uid;
    public final int pid;
    public final String processName;
    public final int oomScore;
    public final long pgfault;
    public final long pgmajfault;
    public final long rssInBytes;
    public final long cacheInBytes;
    public final long swapInBytes;
    public final long startTimeNanos;

    public ProcessMemoryState(int uid, String processName, int oomScore, long pgfault,
                              long pgmajfault, long rssInBytes, long cacheInBytes,
                              long swapInBytes, long startTimeNanos) {
    public ProcessMemoryState(int uid, int pid, String processName, int oomScore) {
        this.uid = uid;
        this.pid = pid;
        this.processName = processName;
        this.oomScore = oomScore;
        this.pgfault = pgfault;
        this.pgmajfault = pgmajfault;
        this.rssInBytes = rssInBytes;
        this.cacheInBytes = cacheInBytes;
        this.swapInBytes = swapInBytes;
        this.startTimeNanos = startTimeNanos;
    }

    private ProcessMemoryState(Parcel in) {
        uid = in.readInt();
        pid = in.readInt();
        processName = in.readString();
        oomScore = in.readInt();
        pgfault = in.readLong();
        pgmajfault = in.readLong();
        rssInBytes = in.readLong();
        cacheInBytes = in.readLong();
        swapInBytes = in.readLong();
        startTimeNanos = in.readLong();
    }

    public static final @android.annotation.NonNull Creator<ProcessMemoryState> CREATOR = new Creator<ProcessMemoryState>() {
@@ -80,13 +63,8 @@ public final class ProcessMemoryState implements Parcelable {
    @Override
    public void writeToParcel(Parcel parcel, int i) {
        parcel.writeInt(uid);
        parcel.writeInt(pid);
        parcel.writeString(processName);
        parcel.writeInt(oomScore);
        parcel.writeLong(pgfault);
        parcel.writeLong(pgmajfault);
        parcel.writeLong(rssInBytes);
        parcel.writeLong(cacheInBytes);
        parcel.writeLong(swapInBytes);
        parcel.writeLong(startTimeNanos);
    }
}
+2 −35
Original line number Diff line number Diff line
@@ -120,8 +120,6 @@ import static com.android.server.am.ActivityManagerDebugConfig.POSTFIX_UID_OBSER
import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM;
import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME;
import static com.android.server.am.MemoryStatUtil.hasMemcg;
import static com.android.server.am.MemoryStatUtil.readMemoryStatFromFilesystem;
import static com.android.server.am.MemoryStatUtil.readRssHighWaterMarkFromProcfs;
import static com.android.server.pm.PackageManagerService.PLATFORM_PACKAGE_NAME;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_CLEANUP;
import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_CONFIGURATION;
@@ -178,7 +176,6 @@ import android.app.Instrumentation;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.ProcessMemoryHighWaterMark;
import android.app.ProcessMemoryState;
import android.app.ProfilerInfo;
import android.app.WaitResult;
@@ -349,7 +346,6 @@ import com.android.server.SystemServiceManager;
import com.android.server.ThreadPriorityBooster;
import com.android.server.Watchdog;
import com.android.server.am.ActivityManagerServiceDumpProcessesProto.UidObserverRegistrationProto;
import com.android.server.am.MemoryStatUtil.MemoryStat;
import com.android.server.appop.AppOpsService;
import com.android.server.contentcapture.ContentCaptureManagerInternal;
import com.android.server.firewall.IntentFirewall;
@@ -17861,42 +17857,13 @@ public class ActivityManagerService extends IActivityManager.Stub
            synchronized (mPidsSelfLocked) {
                for (int i = 0, size = mPidsSelfLocked.size(); i < size; i++) {
                    final ProcessRecord r = mPidsSelfLocked.valueAt(i);
                    final int pid = r.pid;
                    final int uid = r.uid;
                    final MemoryStat memoryStat = readMemoryStatFromFilesystem(uid, pid);
                    if (memoryStat == null) {
                        continue;
                    }
                    ProcessMemoryState processMemoryState =
                            new ProcessMemoryState(uid,
                                    r.processName,
                                    r.curAdj,
                                    memoryStat.pgfault,
                                    memoryStat.pgmajfault,
                                    memoryStat.rssInBytes,
                                    memoryStat.cacheInBytes,
                                    memoryStat.swapInBytes,
                                    memoryStat.startTimeNanos);
                    processMemoryStates.add(processMemoryState);
                    processMemoryStates.add(
                            new ProcessMemoryState(r.uid, r.pid, r.processName, r.curAdj));
                }
            }
            return processMemoryStates;
        }
        @Override
        public List<ProcessMemoryHighWaterMark> getMemoryHighWaterMarkForProcesses() {
            List<ProcessMemoryHighWaterMark> results = new ArrayList<>();
            synchronized (mPidsSelfLocked) {
                for (int i = 0, size = mPidsSelfLocked.size(); i < size; i++) {
                    final ProcessRecord r = mPidsSelfLocked.valueAt(i);
                    final long rssHighWaterMarkInBytes = readRssHighWaterMarkFromProcfs(r.pid);
                    results.add(new ProcessMemoryHighWaterMark(r.uid, r.processName,
                            rssHighWaterMarkInBytes));
                }
            }
            return results;
        }
        @Override
        public int handleIncomingUser(int callingPid, int callingUid, int userId,
                boolean allowAll, int allowMode, String name, String callerPackage) {
Loading