diff options
-rw-r--r-- | core/java/android/os/StatsLogEventWrapper.java | 11 | ||||
-rw-r--r-- | services/core/java/com/android/server/stats/StatsCompanionService.java | 27 |
2 files changed, 22 insertions, 16 deletions
diff --git a/core/java/android/os/StatsLogEventWrapper.java b/core/java/android/os/StatsLogEventWrapper.java index 3e8161f229c4..d4d3dc838d91 100644 --- a/core/java/android/os/StatsLogEventWrapper.java +++ b/core/java/android/os/StatsLogEventWrapper.java @@ -46,16 +46,17 @@ public final class StatsLogEventWrapper implements Parcelable { * @param tag The integer representing the tag for this event. * @param fields The number of fields specified in this event. */ - public StatsLogEventWrapper(int tag, int fields) { + public StatsLogEventWrapper(long elapsedNanos, int tag, int fields) { // Write four bytes from tag, starting with least-significant bit. // For pulled data, this tag number is not really used. We use the same tag number as // pushed ones to be consistent. write4Bytes(STATS_BUFFER_TAG_ID); mStorage.write(EVENT_TYPE_LIST); // This is required to start the log entry. - mStorage.write(fields + 1); // Indicate number of elements in this list. +1 for the tag - mStorage.write(EVENT_TYPE_INT); - // The first element is the real atom tag number - write4Bytes(tag); + mStorage.write(fields + 2); // Indicate number of elements in this list. +1 for the tag + // The first element is the elapsed realtime. + writeLong(elapsedNanos); + // The second element is the real atom tag number + writeInt(tag); } /** diff --git a/services/core/java/com/android/server/stats/StatsCompanionService.java b/services/core/java/com/android/server/stats/StatsCompanionService.java index d6359b8cbee3..95c30d10341f 100644 --- a/services/core/java/com/android/server/stats/StatsCompanionService.java +++ b/services/core/java/com/android/server/stats/StatsCompanionService.java @@ -418,10 +418,11 @@ public class StatsCompanionService extends IStatsCompanionService.Stub { private void addNetworkStats( int tag, List<StatsLogEventWrapper> ret, NetworkStats stats, boolean withFGBG) { int size = stats.size(); + long elapsedNanos = SystemClock.elapsedRealtimeNanos(); NetworkStats.Entry entry = new NetworkStats.Entry(); // For recycling for (int j = 0; j < size; j++) { stats.getValues(j, entry); - StatsLogEventWrapper e = new StatsLogEventWrapper(tag, withFGBG ? 6 : 5); + StatsLogEventWrapper e = new StatsLogEventWrapper(elapsedNanos, tag, withFGBG ? 6 : 5); e.writeInt(entry.uid); if (withFGBG) { e.writeInt(entry.set); @@ -500,10 +501,11 @@ public class StatsCompanionService extends IStatsCompanionService.Stub { private void pullKernelWakelock(int tagId, List<StatsLogEventWrapper> pulledData) { final KernelWakelockStats wakelockStats = mKernelWakelockReader.readKernelWakelockStats(mTmpWakelockStats); + long elapsedNanos = SystemClock.elapsedRealtimeNanos(); for (Map.Entry<String, KernelWakelockStats.Entry> ent : wakelockStats.entrySet()) { String name = ent.getKey(); KernelWakelockStats.Entry kws = ent.getValue(); - StatsLogEventWrapper e = new StatsLogEventWrapper(tagId, 4); + StatsLogEventWrapper e = new StatsLogEventWrapper(elapsedNanos, tagId, 4); e.writeString(name); e.writeInt(kws.mCount); e.writeInt(kws.mVersion); @@ -576,8 +578,9 @@ public class StatsCompanionService extends IStatsCompanionService.Stub { private void pullBluetoothBytesTransfer(int tagId, List<StatsLogEventWrapper> pulledData) { BluetoothActivityEnergyInfo info = pullBluetoothData(); + long elapsedNanos = SystemClock.elapsedRealtimeNanos(); for (UidTraffic traffic : info.getUidTraffic()) { - StatsLogEventWrapper e = new StatsLogEventWrapper(tagId, 3); + StatsLogEventWrapper e = new StatsLogEventWrapper(elapsedNanos, tagId, 3); e.writeInt(traffic.getUid()); e.writeLong(traffic.getRxBytes()); e.writeLong(traffic.getTxBytes()); @@ -605,11 +608,12 @@ public class StatsCompanionService extends IStatsCompanionService.Stub { } private void pullCpuTimePerFreq(int tagId, List<StatsLogEventWrapper> pulledData) { + long elapsedNanos = SystemClock.elapsedRealtimeNanos(); 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, 3); + StatsLogEventWrapper e = new StatsLogEventWrapper(elapsedNanos, tagId, 3); e.writeInt(cluster); e.writeInt(speed); e.writeLong(clusterTimeMs[speed]); @@ -630,7 +634,7 @@ public class StatsCompanionService extends IStatsCompanionService.Stub { SynchronousResultReceiver wifiReceiver = new SynchronousResultReceiver("wifi"); mWifiManager.requestActivityInfo(wifiReceiver); final WifiActivityEnergyInfo wifiInfo = awaitControllerInfo(wifiReceiver); - StatsLogEventWrapper e = new StatsLogEventWrapper(tagId, 6); + StatsLogEventWrapper e = new StatsLogEventWrapper(SystemClock.elapsedRealtimeNanos(), tagId, 6); e.writeLong(wifiInfo.getTimeStamp()); e.writeInt(wifiInfo.getStackState()); e.writeLong(wifiInfo.getControllerTxTimeMillis()); @@ -655,7 +659,7 @@ public class StatsCompanionService extends IStatsCompanionService.Stub { SynchronousResultReceiver modemReceiver = new SynchronousResultReceiver("telephony"); mTelephony.requestModemActivityInfo(modemReceiver); final ModemActivityInfo modemInfo = awaitControllerInfo(modemReceiver); - StatsLogEventWrapper e = new StatsLogEventWrapper(tagId, 6); + StatsLogEventWrapper e = new StatsLogEventWrapper(SystemClock.elapsedRealtimeNanos(), tagId, 6); e.writeLong(modemInfo.getTimestamp()); e.writeLong(modemInfo.getSleepTimeMillis()); e.writeLong(modemInfo.getIdleTimeMillis()); @@ -672,7 +676,7 @@ public class StatsCompanionService extends IStatsCompanionService.Stub { private void pullBluetoothActivityInfo(int tagId, List<StatsLogEventWrapper> pulledData) { BluetoothActivityEnergyInfo info = pullBluetoothData(); - StatsLogEventWrapper e = new StatsLogEventWrapper(tagId, 6); + StatsLogEventWrapper e = new StatsLogEventWrapper(SystemClock.elapsedRealtimeNanos(), tagId, 6); e.writeLong(info.getTimeStamp()); e.writeInt(info.getBluetoothStackState()); e.writeLong(info.getControllerTxTimeMillis()); @@ -695,13 +699,13 @@ public class StatsCompanionService extends IStatsCompanionService.Stub { } private void pullSystemElapsedRealtime(int tagId, List<StatsLogEventWrapper> pulledData) { - StatsLogEventWrapper e = new StatsLogEventWrapper(tagId, 1); + StatsLogEventWrapper e = new StatsLogEventWrapper(SystemClock.elapsedRealtimeNanos(), tagId, 1); e.writeLong(SystemClock.elapsedRealtime()); pulledData.add(e); } private void pullDiskSpace(int tagId, List<StatsLogEventWrapper> pulledData) { - StatsLogEventWrapper e = new StatsLogEventWrapper(tagId, 3); + StatsLogEventWrapper e = new StatsLogEventWrapper(SystemClock.elapsedRealtimeNanos(), tagId, 3); e.writeLong(mStatFsData.getAvailableBytes()); e.writeLong(mStatFsSystem.getAvailableBytes()); e.writeLong(mStatFsTemp.getAvailableBytes()); @@ -709,7 +713,7 @@ public class StatsCompanionService extends IStatsCompanionService.Stub { } private void pullSystemUpTime(int tagId, List<StatsLogEventWrapper> pulledData) { - StatsLogEventWrapper e = new StatsLogEventWrapper(tagId, 1); + StatsLogEventWrapper e = new StatsLogEventWrapper(SystemClock.elapsedRealtimeNanos(), tagId, 1); e.writeLong(SystemClock.uptimeMillis()); pulledData.add(e); } @@ -718,8 +722,9 @@ public class StatsCompanionService extends IStatsCompanionService.Stub { List<ProcessMemoryState> processMemoryStates = LocalServices.getService(ActivityManagerInternal.class) .getMemoryStateForProcesses(); + long elapsedNanos = SystemClock.elapsedRealtimeNanos(); for (ProcessMemoryState processMemoryState : processMemoryStates) { - StatsLogEventWrapper e = new StatsLogEventWrapper(tagId, 8 /* fields */); + StatsLogEventWrapper e = new StatsLogEventWrapper(elapsedNanos, tagId, 8 /* fields */); e.writeInt(processMemoryState.uid); e.writeString(processMemoryState.processName); e.writeInt(processMemoryState.oomScore); |