Merge "Don't assume kernel tick is 100Hz" into mnc-dr1.5-dev

This commit is contained in:
Thierry Strudel
2016-01-22 22:07:32 +00:00
committed by Android (Google) Code Review
2 changed files with 12 additions and 5 deletions

View File

@@ -16,8 +16,11 @@
package com.android.internal.os;
import android.text.TextUtils;
import android.system.OsConstants;
import android.util.Slog;
import libcore.io.Libcore;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
@@ -29,7 +32,7 @@ import java.util.Arrays;
*
* freq time
*
* where time is measured in 1/100 seconds.
* where time is measured in jiffies.
*/
public class KernelCpuSpeedReader {
private static final String TAG = "KernelCpuSpeedReader";
@@ -38,6 +41,9 @@ public class KernelCpuSpeedReader {
private final long[] mLastSpeedTimes;
private final long[] mDeltaSpeedTimes;
// How long a CPU jiffy is in milliseconds.
private final long mJiffyMillis;
/**
* @param cpuNumber The cpu (cpu0, cpu1, etc) whose state to read.
*/
@@ -46,6 +52,8 @@ public class KernelCpuSpeedReader {
cpuNumber);
mLastSpeedTimes = new long[numSpeedSteps];
mDeltaSpeedTimes = new long[numSpeedSteps];
long jiffyHz = Libcore.os.sysconf(OsConstants._SC_CLK_TCK);
mJiffyMillis = 1000/jiffyHz;
}
/**
@@ -62,8 +70,7 @@ public class KernelCpuSpeedReader {
splitter.setString(line);
Long.parseLong(splitter.next());
// The proc file reports time in 1/100 sec, so convert to milliseconds.
long time = Long.parseLong(splitter.next()) * 10;
long time = Long.parseLong(splitter.next()) * mJiffyMillis;
if (time < mLastSpeedTimes[speedIndex]) {
// The stats reset when the cpu hotplugged. That means that the time
// we read is offset from 0, so the time is the delta.

View File

@@ -67,10 +67,10 @@ public class ProcessCpuTracker {
static final int PROCESS_STAT_UTIME = 2;
static final int PROCESS_STAT_STIME = 3;
/** Stores user time and system time in 100ths of a second. */
/** Stores user time and system time in jiffies. */
private final long[] mProcessStatsData = new long[4];
/** Stores user time and system time in 100ths of a second. Used for
/** Stores user time and system time in jiffies. Used for
* public API to retrieve CPU use for a process. Must lock while in use. */
private final long[] mSinglePidStatsData = new long[4];