summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2018-04-23 23:05:31 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2018-04-23 23:05:31 +0000
commit46c2b1451c762ff494bb66a2647a36dfae4e9239 (patch)
tree8d42cccbfd4578592f521a067c002e4a640354d4 /core/java
parent43ca6addd11f32da239c9ea72e8fd96566441707 (diff)
parent8aa51245e97f882a509a415e936ed4a4bf261acc (diff)
Merge "Reset binder call stats along with batterystats" into pi-dev
Diffstat (limited to 'core/java')
-rw-r--r--core/java/com/android/internal/os/BatteryStatsImpl.java9
-rw-r--r--core/java/com/android/internal/os/BinderCallsStats.java14
2 files changed, 17 insertions, 6 deletions
diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java
index d18faa75925d..a4680cab4b56 100644
--- a/core/java/com/android/internal/os/BatteryStatsImpl.java
+++ b/core/java/com/android/internal/os/BatteryStatsImpl.java
@@ -196,6 +196,7 @@ public class BatteryStatsImpl extends BatteryStats {
static final int MSG_REPORT_CPU_UPDATE_NEEDED = 1;
static final int MSG_REPORT_POWER_CHANGE = 2;
static final int MSG_REPORT_CHARGING = 3;
+ static final int MSG_REPORT_RESET_STATS = 4;
static final long DELAY_UPDATE_WAKELOCKS = 5*1000;
private final KernelWakelockReader mKernelWakelockReader = new KernelWakelockReader();
@@ -319,6 +320,7 @@ public class BatteryStatsImpl extends BatteryStats {
public void batteryNeedsCpuUpdate();
public void batteryPowerChanged(boolean onBattery);
public void batterySendBroadcast(Intent intent);
+ public void batteryStatsReset();
}
public interface PlatformIdleStateCallback {
@@ -373,7 +375,11 @@ public class BatteryStatsImpl extends BatteryStats {
cb.batterySendBroadcast(intent);
}
break;
- }
+ case MSG_REPORT_RESET_STATS:
+ if (cb != null) {
+ cb.batteryStatsReset();
+ }
+ }
}
}
@@ -10939,6 +10945,7 @@ public class BatteryStatsImpl extends BatteryStats {
initDischarge();
clearHistoryLocked();
+ mHandler.sendEmptyMessage(MSG_REPORT_RESET_STATS);
}
private void initActiveHistoryEventsLocked(long elapsedRealtimeMs, long uptimeMs) {
diff --git a/core/java/com/android/internal/os/BinderCallsStats.java b/core/java/com/android/internal/os/BinderCallsStats.java
index 7eefe59d4696..3315cb15d4b4 100644
--- a/core/java/com/android/internal/os/BinderCallsStats.java
+++ b/core/java/com/android/internal/os/BinderCallsStats.java
@@ -18,6 +18,7 @@ package com.android.internal.os;
import android.os.Binder;
import android.os.SystemClock;
+import android.text.format.DateFormat;
import android.util.ArrayMap;
import android.util.SparseArray;
@@ -46,6 +47,7 @@ public class BinderCallsStats {
private final SparseArray<UidEntry> mUidEntries = new SparseArray<>();
private final Queue<CallSession> mCallSessionsPool = new ConcurrentLinkedQueue<>();
private final Object mLock = new Object();
+ private long mStartTime = System.currentTimeMillis();
private BinderCallsStats() {
}
@@ -108,6 +110,8 @@ public class BinderCallsStats {
Map<Integer, Long> uidCallCountMap = new HashMap<>();
long totalCallsCount = 0;
long totalCallsTime = 0;
+ pw.print("Start time: ");
+ pw.println(DateFormat.format("yyyy-MM-dd HH:mm:ss", mStartTime));
int uidEntriesSize = mUidEntries.size();
List<UidEntry> entries = new ArrayList<>();
synchronized (mLock) {
@@ -126,8 +130,7 @@ public class BinderCallsStats {
}
}
if (mDetailedTracking) {
- pw.println("Binder call stats:");
- pw.println(" Raw data (uid,call_desc,time):");
+ pw.println("Raw data (uid,call_desc,time):");
entries.sort((o1, o2) -> {
if (o1.time < o2.time) {
return 1;
@@ -155,12 +158,12 @@ public class BinderCallsStats {
}
}
pw.println();
- pw.println(" Per UID Summary(UID: time, % of total_time, calls_count):");
+ pw.println("Per UID Summary(UID: time, % of total_time, calls_count):");
List<Map.Entry<Integer, Long>> uidTotals = new ArrayList<>(uidTimeMap.entrySet());
uidTotals.sort((o1, o2) -> o2.getValue().compareTo(o1.getValue()));
for (Map.Entry<Integer, Long> uidTotal : uidTotals) {
Long callCount = uidCallCountMap.get(uidTotal.getKey());
- pw.println(String.format(" %7d: %11d %3.0f%% %8d",
+ pw.println(String.format(" %7d: %11d %3.0f%% %8d",
uidTotal.getKey(), uidTotal.getValue(),
100d * uidTotal.getValue() / totalCallsTime, callCount));
}
@@ -170,7 +173,7 @@ public class BinderCallsStats {
totalCallsTime, totalCallsCount,
(double)totalCallsTime / totalCallsCount));
} else {
- pw.println(" Per UID Summary(UID: calls_count, % of total calls_count):");
+ pw.println("Per UID Summary(UID: calls_count, % of total calls_count):");
List<Map.Entry<Integer, Long>> uidTotals = new ArrayList<>(uidTimeMap.entrySet());
uidTotals.sort((o1, o2) -> o2.getValue().compareTo(o1.getValue()));
for (Map.Entry<Integer, Long> uidTotal : uidTotals) {
@@ -201,6 +204,7 @@ public class BinderCallsStats {
public void reset() {
synchronized (mLock) {
mUidEntries.clear();
+ mStartTime = System.currentTimeMillis();
}
}