diff options
author | Thierry Strudel <tstrudel@google.com> | 2016-01-21 16:31:21 -0800 |
---|---|---|
committer | The Android Automerger <android-build@google.com> | 2016-01-22 14:46:19 -0800 |
commit | 914fc2a0d4fe16b60e4dbb65eda8a89472e568e6 (patch) | |
tree | 2be5b68eb59a2930117190781bd1c1a1d0b93ab4 /core | |
parent | ef9c8be5df6c84596a8c5a9d552be5a3fe845b03 (diff) | |
download | frameworks_base-914fc2a0d4fe16b60e4dbb65eda8a89472e568e6.zip frameworks_base-914fc2a0d4fe16b60e4dbb65eda8a89472e568e6.tar.gz frameworks_base-914fc2a0d4fe16b60e4dbb65eda8a89472e568e6.tar.bz2 |
Don't assume kernel tick is 100Hz
Bug: 26729731
Change-Id: I094d5fd0e611349becb91d4460bc2e4af255d125
Diffstat (limited to 'core')
-rw-r--r-- | core/java/com/android/internal/os/KernelCpuSpeedReader.java | 13 | ||||
-rw-r--r-- | core/java/com/android/internal/os/ProcessCpuTracker.java | 4 |
2 files changed, 12 insertions, 5 deletions
diff --git a/core/java/com/android/internal/os/KernelCpuSpeedReader.java b/core/java/com/android/internal/os/KernelCpuSpeedReader.java index 5b776ac..3f6ebb9 100644 --- a/core/java/com/android/internal/os/KernelCpuSpeedReader.java +++ b/core/java/com/android/internal/os/KernelCpuSpeedReader.java @@ -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. diff --git a/core/java/com/android/internal/os/ProcessCpuTracker.java b/core/java/com/android/internal/os/ProcessCpuTracker.java index bf97f1f..d831902 100644 --- a/core/java/com/android/internal/os/ProcessCpuTracker.java +++ b/core/java/com/android/internal/os/ProcessCpuTracker.java @@ -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]; |