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

Commit a0638f14 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

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

parents bcdca7c9 16b3e381
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();

                }
            }
        }