Loading services/core/java/com/android/server/powerstats/PowerStatsDataStorage.java +49 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; /** Loading Loading @@ -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(); } } } services/core/java/com/android/server/powerstats/PowerStatsLogger.java +20 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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(); } } services/core/java/com/android/server/powerstats/PowerStatsService.java +21 −7 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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(); } } } Loading Loading
services/core/java/com/android/server/powerstats/PowerStatsDataStorage.java +49 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; /** Loading Loading @@ -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(); } } }
services/core/java/com/android/server/powerstats/PowerStatsLogger.java +20 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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(); } }
services/core/java/com/android/server/powerstats/PowerStatsService.java +21 −7 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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(); } } } Loading