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

Commit 43d5e2d1 authored by Jeffrey Huang's avatar Jeffrey Huang
Browse files

Migrate pullCpuTimePerFreq

Test: No Cts Test. Ran adb shell cmd stats pull-source 10008
Change-Id: I5448b77d99d8033aed22596dc18b1758ca09975c
parent 2ba07e09
Loading
Loading
Loading
Loading
+0 −23
Original line number Diff line number Diff line
@@ -761,24 +761,6 @@ public class StatsCompanionService extends IStatsCompanionService.Stub {
        }
    }

    private void pullCpuTimePerFreq(
            int tagId, long elapsedNanos, long wallClockNanos,
            List<StatsLogEventWrapper> pulledData) {
        for (int cluster = 0; cluster < mKernelCpuSpeedReaders.length; cluster++) {
            long[] clusterTimeMs = mKernelCpuSpeedReaders[cluster].readAbsolute();
            if (clusterTimeMs != null) {
                for (int speed = clusterTimeMs.length - 1; speed >= 0; --speed) {
                    StatsLogEventWrapper e = new StatsLogEventWrapper(tagId, elapsedNanos,
                            wallClockNanos);
                    e.writeInt(cluster);
                    e.writeInt(speed);
                    e.writeLong(clusterTimeMs[speed]);
                    pulledData.add(e);
                }
            }
        }
    }

    private void pullKernelUidCpuTime(
            int tagId, long elapsedNanos, long wallClockNanos,
            List<StatsLogEventWrapper> pulledData) {
@@ -2128,11 +2110,6 @@ public class StatsCompanionService extends IStatsCompanionService.Stub {
                break;
            }

            case StatsLog.CPU_TIME_PER_FREQ: {
                pullCpuTimePerFreq(tagId, elapsedNanos, wallClockNanos, ret);
                break;
            }

            case StatsLog.CPU_TIME_PER_UID: {
                pullKernelUidCpuTime(tagId, elapsedNanos, wallClockNanos, ret);
                break;
+0 −5
Original line number Diff line number Diff line
@@ -72,11 +72,6 @@ std::map<PullerKey, PullAtomInfo> StatsPullerManager::kAllPullAtomInfo = {
        {{.atomTag = android::util::ON_DEVICE_POWER_MEASUREMENT},
         {.puller = new PowerStatsPuller()}},

        // cpu_time_per_freq
        {{.atomTag = android::util::CPU_TIME_PER_FREQ},
         {.additiveFields = {3},
          .puller = new StatsCompanionServicePuller(android::util::CPU_TIME_PER_FREQ)}},

        // cpu_time_per_uid
        {{.atomTag = android::util::CPU_TIME_PER_UID},
         {.additiveFields = {2, 3},
+40 −3
Original line number Diff line number Diff line
@@ -210,6 +210,18 @@ public class StatsPullAtomService extends SystemService {
    @Override
    public void onStart() {
        mStatsManager = (StatsManager) mContext.getSystemService(Context.STATS_MANAGER);

        // Used to initialize the CPU Frequency atom.
        PowerProfile powerProfile = new PowerProfile(mContext);
        final int numClusters = powerProfile.getNumCpuClusters();
        mKernelCpuSpeedReaders = new KernelCpuSpeedReader[numClusters];
        int firstCpuOfCluster = 0;
        for (int i = 0; i < numClusters; i++) {
            final int numSpeedSteps = powerProfile.getNumSpeedStepsInCpuCluster(i);
            mKernelCpuSpeedReaders[i] = new KernelCpuSpeedReader(firstCpuOfCluster,
                    numSpeedSteps);
            firstCpuOfCluster += powerProfile.getNumCoresInCpuCluster(i);
        }
    }

    @Override
@@ -618,12 +630,37 @@ public class StatsPullAtomService extends SystemService {
        // No op.
    }

    private KernelCpuSpeedReader[] mKernelCpuSpeedReaders;

    private void registerCpuTimePerFreq() {
        // No op.
        int tagId = StatsLog.CPU_TIME_PER_FREQ;
        PullAtomMetadata metadata = PullAtomMetadata.newBuilder()
                .setAdditiveFields(new int[] {3})
                .build();
        mStatsManager.registerPullAtomCallback(
                tagId,
                metadata,
                (atomTag, data) -> pullCpuTimePerFreq(atomTag, data),
                Executors.newSingleThreadExecutor()
        );
    }

    private void pullCpuTimePerFreq() {
        // No op.
    private int pullCpuTimePerFreq(int atomTag, List<StatsEvent> pulledData) {
        for (int cluster = 0; cluster < mKernelCpuSpeedReaders.length; cluster++) {
            long[] clusterTimeMs = mKernelCpuSpeedReaders[cluster].readAbsolute();
            if (clusterTimeMs != null) {
                for (int speed = clusterTimeMs.length - 1; speed >= 0; --speed) {
                    StatsEvent e = StatsEvent.newBuilder()
                            .setAtomId(atomTag)
                            .writeInt(cluster)
                            .writeInt(speed)
                            .writeLong(clusterTimeMs[speed])
                            .build();
                    pulledData.add(e);
                }
            }
        }
        return StatsManager.PULL_SUCCESS;
    }

    private void registerCpuTimePerUid() {