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

Commit 8aef1c18 authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Fix PowerStatsService dumpsys and include PowerStatsLogger info" into...

Merge "Fix PowerStatsService dumpsys and include PowerStatsLogger info" into udc-d1-dev am: a0638f14

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



Change-Id: I3ce64832588669dca16c60362dddaf8a7ef9a46a
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents c4d7ee11 a0638f14
Loading
Loading
Loading
Loading
+49 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.server.powerstats;

import android.content.Context;
import android.util.IndentingPrintWriter;
import android.util.Slog;

import com.android.internal.util.FileRotator;
@@ -27,6 +28,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.ByteBuffer;
import java.util.Date;
import java.util.concurrent.locks.ReentrantLock;

/**
@@ -266,4 +268,51 @@ public class PowerStatsDataStorage {
            mLock.unlock();
        }
    }

    /**
     * Dump stats about stored data.
     */
    public void dump(IndentingPrintWriter ipw) {
        mLock.lock();
        try {
            final int versionDot = mDataStorageFilename.lastIndexOf('.');
            final String beforeVersionDot = mDataStorageFilename.substring(0, versionDot);
            final File[] files = mDataStorageDir.listFiles();

            int number = 0;
            int dataSize = 0;
            long earliestLogEpochTime = Long.MAX_VALUE;
            for (int i = 0; i < files.length; i++) {
                // Check that the stems before the version match.
                final File file = files[i];
                final String fileName = file.getName();
                if (files[i].getName().startsWith(beforeVersionDot)) {
                    number++;
                    dataSize += file.length();
                    final int firstTimeChar = fileName.lastIndexOf('.') + 1;
                    final int endChar = fileName.lastIndexOf('-');
                    try {
                        final Long startTime =
                                Long.parseLong(fileName.substring(firstTimeChar, endChar));
                        if (startTime != null && startTime < earliestLogEpochTime) {
                            earliestLogEpochTime = startTime;
                        }
                    } catch (NumberFormatException nfe) {
                        Slog.e(TAG,
                                "Failed to extract start time from file : " + fileName, nfe);
                    }
                }
            }

            if (earliestLogEpochTime != Long.MAX_VALUE) {
                ipw.println("Earliest data time : " + new Date(earliestLogEpochTime));
            } else {
                ipw.println("Failed to parse earliest data time!!!");
            }
            ipw.println("# files : " + number);
            ipw.println("Total data size (B) : " + dataSize);
        } finally {
            mLock.unlock();
        }
    }
}
+20 −0
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import android.os.Looper;
import android.os.Message;
import android.os.SystemClock;
import android.util.AtomicFile;
import android.util.IndentingPrintWriter;
import android.util.Slog;
import android.util.proto.ProtoInputStream;
import android.util.proto.ProtoOutputStream;
@@ -354,4 +355,23 @@ public final class PowerStatsLogger extends Handler {
            updateCacheFile(residencyCacheFilename, powerEntityBytes);
        }
    }

    /**
     * Dump stats about stored data.
     */
    public void dump(IndentingPrintWriter ipw) {
        ipw.println("PowerStats Meter Data:");
        ipw.increaseIndent();
        mPowerStatsMeterStorage.dump(ipw);
        ipw.decreaseIndent();
        ipw.println("PowerStats Model Data:");
        ipw.increaseIndent();
        mPowerStatsModelStorage.dump(ipw);
        ipw.decreaseIndent();
        ipw.println("PowerStats State Residency Data:");
        ipw.increaseIndent();
        mPowerStatsResidencyStorage.dump(ipw);
        ipw.decreaseIndent();
    }

}
+21 −7
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import android.os.HandlerThread;
import android.os.Looper;
import android.os.UserHandle;
import android.power.PowerStatsInternal;
import android.util.IndentingPrintWriter;
import android.util.Slog;

import com.android.internal.annotations.GuardedBy;
@@ -176,18 +177,31 @@ public class PowerStatsService extends SystemService {
                    } else if ("residency".equals(args[1])) {
                        mPowerStatsLogger.writeResidencyDataToFile(fd);
                    }
                } else if (args.length == 0) {
                    pw.println("PowerStatsService dumpsys: available PowerEntities");
                } else {
                    IndentingPrintWriter ipw = new IndentingPrintWriter(pw);
                    ipw.println("PowerStatsService dumpsys: available PowerEntities");
                    PowerEntity[] powerEntity = getPowerStatsHal().getPowerEntityInfo();
                    PowerEntityUtils.dumpsys(powerEntity, pw);
                    ipw.increaseIndent();
                    PowerEntityUtils.dumpsys(powerEntity, ipw);
                    ipw.decreaseIndent();

                    pw.println("PowerStatsService dumpsys: available Channels");
                    ipw.println("PowerStatsService dumpsys: available Channels");
                    Channel[] channel = getPowerStatsHal().getEnergyMeterInfo();
                    ChannelUtils.dumpsys(channel, pw);
                    ipw.increaseIndent();
                    ChannelUtils.dumpsys(channel, ipw);
                    ipw.decreaseIndent();

                    pw.println("PowerStatsService dumpsys: available EnergyConsumers");
                    ipw.println("PowerStatsService dumpsys: available EnergyConsumers");
                    EnergyConsumer[] energyConsumer = getPowerStatsHal().getEnergyConsumerInfo();
                    EnergyConsumerUtils.dumpsys(energyConsumer, pw);
                    ipw.increaseIndent();
                    EnergyConsumerUtils.dumpsys(energyConsumer, ipw);
                    ipw.decreaseIndent();

                    ipw.println("PowerStatsService dumpsys: PowerStatsLogger stats");
                    ipw.increaseIndent();
                    mPowerStatsLogger.dump(ipw);
                    ipw.decreaseIndent();

                }
            }
        }