From ca894b396b93344ac255746e12730cb269d4d856 Mon Sep 17 00:00:00 2001 From: Martin Wallgren Date: Tue, 20 Sep 2011 13:45:48 +0200 Subject: statistics from some cpus don't fit Cpu statistics from time_in_state does not fit in the data structures in ProcessState.java. The time_in_state file eventually becomes larger than the buffer of 256 bytes witch cause missing data in the result or a NoMoreElementsException when parsing the data. The numger of cpu speeds can be larger than the MAX_SPEEDS limit. Solution Make sure that the whole file gets read and increase the MAX_SPEEDS that the system can handle. Change-Id: I6dfc127b2934988006649cce321d58750a946017 --- core/java/com/android/internal/os/ProcessStats.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/java/com/android/internal/os/ProcessStats.java b/core/java/com/android/internal/os/ProcessStats.java index e0e9a29714d1..94904377cb43 100644 --- a/core/java/com/android/internal/os/ProcessStats.java +++ b/core/java/com/android/internal/os/ProcessStats.java @@ -154,7 +154,7 @@ public class ProcessStats { private boolean mFirst = true; - private byte[] mBuffer = new byte[256]; + private byte[] mBuffer = new byte[4096]; /** * The time in microseconds that the CPU has been running at each speed. @@ -556,7 +556,7 @@ public class ProcessStats { private long[] getCpuSpeedTimes(long[] out) { long[] tempTimes = out; long[] tempSpeeds = mCpuSpeeds; - final int MAX_SPEEDS = 20; + final int MAX_SPEEDS = 60; if (out == null) { tempTimes = new long[MAX_SPEEDS]; // Hopefully no more than that tempSpeeds = new long[MAX_SPEEDS]; -- cgit v1.2.3-59-g8ed1b