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

Commit 6adb3816 authored by Ioannis Ilkos's avatar Ioannis Ilkos Committed by Automerger Merge Worker
Browse files

Merge "Add VmStat atom and read the count of OOM kills" into sc-dev am: 3d44d6ed am: cdbfbb1c

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14934060

Change-Id: I63b58f5026db6c17756da640076901f57a4fe028
parents 867768d8 cdbfbb1c
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -30,6 +30,9 @@ public final class ProcfsMemoryUtil {
            "RssAnon:",
            "VmSwap:"
    };
    private static final String[] VMSTAT_KEYS = new String[] {
            "oom_kill"
    };

    private ProcfsMemoryUtil() {}

@@ -99,4 +102,22 @@ public final class ProcfsMemoryUtil {
        public int anonRssInKilobytes;
        public int swapInKilobytes;
    }

    /** Reads and parses selected entries of /proc/vmstat. */
    @Nullable
    static VmStat readVmStat() {
        long[] vmstat = new long[VMSTAT_KEYS.length];
        vmstat[0] = -1;
        Process.readProcLines("/proc/vmstat", VMSTAT_KEYS, vmstat);
        if (vmstat[0] == -1) {
            return null;
        }
        VmStat result = new VmStat();
        result.oomKillCount = (int) vmstat[0];
        return result;
    }

    static final class VmStat {
        public int oomKillCount;
    }
}
+24 −0
Original line number Diff line number Diff line
@@ -544,6 +544,8 @@ public class StatsPullAtomService extends SystemService {
                        return pullProcessDmabufMemory(atomTag, data);
                    case FrameworkStatsLog.SYSTEM_MEMORY:
                        return pullSystemMemory(atomTag, data);
                    case FrameworkStatsLog.VMSTAT:
                        return pullVmStat(atomTag, data);
                    case FrameworkStatsLog.TEMPERATURE:
                        synchronized (mTemperatureLock) {
                            return pullTemperatureLocked(atomTag, data);
@@ -842,6 +844,7 @@ public class StatsPullAtomService extends SystemService {
        registerProcessSystemIonHeapSize();
        registerSystemMemory();
        registerProcessDmabufMemory();
        registerVmStat();
        registerTemperature();
        registerCoolingDevice();
        registerBinderCallsStats();
@@ -2273,6 +2276,27 @@ public class StatsPullAtomService extends SystemService {
        return StatsManager.PULL_SUCCESS;
    }

    private void registerVmStat() {
        int tagId = FrameworkStatsLog.VMSTAT;
        mStatsManager.setPullAtomCallback(
                tagId,
                null, // use default PullAtomMetadata values
                DIRECT_EXECUTOR,
                mStatsCallbackImpl
        );
    }

    int pullVmStat(int atomTag, List<StatsEvent> pulledData) {
        ProcfsMemoryUtil.VmStat vmStat = ProcfsMemoryUtil.readVmStat();
        if (vmStat != null) {
            pulledData.add(
                    FrameworkStatsLog.buildStatsEvent(
                            atomTag,
                            vmStat.oomKillCount));
        }
        return StatsManager.PULL_SUCCESS;
    }

    private void registerTemperature() {
        int tagId = FrameworkStatsLog.TEMPERATURE;
        mStatsManager.setPullAtomCallback(