Merge "Fix PowerStatsService dumpsys and include PowerStatsLogger info" into udc-d1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
a0638f14c9
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user