diff options
5 files changed, 30 insertions, 30 deletions
diff --git a/services/core/java/com/android/server/cpu/CpuInfoReader.java b/services/core/java/com/android/server/cpu/CpuInfoReader.java index 70d7bde2e53a..92bbfab63b42 100644 --- a/services/core/java/com/android/server/cpu/CpuInfoReader.java +++ b/services/core/java/com/android/server/cpu/CpuInfoReader.java @@ -203,15 +203,15 @@ public final class CpuInfoReader { continue; } if (dynamicPolicyInfo.curCpuFreqKHz == CpuInfo.MISSING_FREQUENCY - || staticPolicyInfo.maxCpuFreqKHz == CpuInfo.MISSING_FREQUENCY) { + || dynamicPolicyInfo.maxCpuFreqKHz == CpuInfo.MISSING_FREQUENCY) { Slogf.w(TAG, "Current and maximum CPU frequency information mismatch/missing for" + " policy ID %d", policyId); continue; } - if (dynamicPolicyInfo.curCpuFreqKHz > staticPolicyInfo.maxCpuFreqKHz) { + if (dynamicPolicyInfo.curCpuFreqKHz > dynamicPolicyInfo.maxCpuFreqKHz) { Slogf.w(TAG, "Current CPU frequency (%d) is greater than maximum CPU frequency" + " (%d) for policy ID (%d). Skipping CPU frequency policy", - dynamicPolicyInfo.curCpuFreqKHz, staticPolicyInfo.maxCpuFreqKHz, policyId); + dynamicPolicyInfo.curCpuFreqKHz, dynamicPolicyInfo.maxCpuFreqKHz, policyId); continue; } for (int coreIdx = 0; coreIdx < staticPolicyInfo.relatedCpuCores.size(); coreIdx++) { @@ -234,7 +234,8 @@ public final class CpuInfoReader { if (dynamicPolicyInfo.affectedCpuCores.indexOf(relatedCpuCore) < 0) { cpuInfoByCpus.append(relatedCpuCore, new CpuInfo(relatedCpuCore, cpusetCategories, /* isOnline= */false, CpuInfo.MISSING_FREQUENCY, - staticPolicyInfo.maxCpuFreqKHz, CpuInfo.MISSING_FREQUENCY, usageStats)); + dynamicPolicyInfo.maxCpuFreqKHz, CpuInfo.MISSING_FREQUENCY, + usageStats)); continue; } // If a CPU core is online, it must have the usage stats. When the usage stats is @@ -245,7 +246,7 @@ public final class CpuInfoReader { continue; } CpuInfo cpuInfo = new CpuInfo(relatedCpuCore, cpusetCategories, /* isOnline= */true, - dynamicPolicyInfo.curCpuFreqKHz, staticPolicyInfo.maxCpuFreqKHz, + dynamicPolicyInfo.curCpuFreqKHz, dynamicPolicyInfo.maxCpuFreqKHz, dynamicPolicyInfo.avgTimeInStateCpuFreqKHz, usageStats); cpuInfoByCpus.append(relatedCpuCore, cpuInfo); if (DEBUG) { @@ -423,12 +424,6 @@ public final class CpuInfoReader { for (int i = 0; i < mCpuFreqPolicyDirsById.size(); i++) { int policyId = mCpuFreqPolicyDirsById.keyAt(i); File policyDir = mCpuFreqPolicyDirsById.valueAt(i); - long maxCpuFreqKHz = readCpuFreqKHz(new File(policyDir, MAX_SCALING_FREQ_FILE)); - if (maxCpuFreqKHz == CpuInfo.MISSING_FREQUENCY) { - Slogf.w(TAG, "Missing max CPU frequency information at %s", - policyDir.getAbsolutePath()); - continue; - } File cpuCoresFile = new File(policyDir, RELATED_CPUS_FILE); IntArray relatedCpuCores = readCpuCores(cpuCoresFile); if (relatedCpuCores == null || relatedCpuCores.size() == 0) { @@ -436,8 +431,7 @@ public final class CpuInfoReader { cpuCoresFile.getAbsolutePath()); continue; } - StaticPolicyInfo staticPolicyInfo = new StaticPolicyInfo(maxCpuFreqKHz, - relatedCpuCores); + StaticPolicyInfo staticPolicyInfo = new StaticPolicyInfo(relatedCpuCores); mStaticPolicyInfoById.append(policyId, staticPolicyInfo); if (DEBUG) { Slogf.d(TAG, "Added static policy info %s for policy id %d", staticPolicyInfo, @@ -464,8 +458,14 @@ public final class CpuInfoReader { Slogf.e(TAG, "Failed to read CPU cores from %s", cpuCoresFile.getAbsolutePath()); continue; } + long maxCpuFreqKHz = readCpuFreqKHz(new File(policyDir, MAX_SCALING_FREQ_FILE)); + if (maxCpuFreqKHz == CpuInfo.MISSING_FREQUENCY) { + Slogf.w(TAG, "Missing max CPU frequency information at %s", + policyDir.getAbsolutePath()); + continue; + } DynamicPolicyInfo dynamicPolicyInfo = new DynamicPolicyInfo(curCpuFreqKHz, - avgTimeInStateCpuFreqKHz, affectedCpuCores); + maxCpuFreqKHz, avgTimeInStateCpuFreqKHz, affectedCpuCores); dynamicPolicyInfoById.append(policyId, dynamicPolicyInfo); if (DEBUG) { Slogf.d(TAG, "Read dynamic policy info %s for policy id %d", dynamicPolicyInfo, @@ -889,29 +889,28 @@ public final class CpuInfoReader { } private static final class StaticPolicyInfo { - public final long maxCpuFreqKHz; public final IntArray relatedCpuCores; - StaticPolicyInfo(long maxCpuFreqKHz, IntArray relatedCpuCores) { - this.maxCpuFreqKHz = maxCpuFreqKHz; + StaticPolicyInfo(IntArray relatedCpuCores) { this.relatedCpuCores = relatedCpuCores; } @Override public String toString() { - return "StaticPolicyInfo{maxCpuFreqKHz = " + maxCpuFreqKHz + ", relatedCpuCores = " - + relatedCpuCores + '}'; + return "StaticPolicyInfo{relatedCpuCores = " + relatedCpuCores + '}'; } } private static final class DynamicPolicyInfo { public final long curCpuFreqKHz; + public final long maxCpuFreqKHz; public final long avgTimeInStateCpuFreqKHz; public final IntArray affectedCpuCores; - DynamicPolicyInfo(long curCpuFreqKHz, long avgTimeInStateCpuFreqKHz, + DynamicPolicyInfo(long curCpuFreqKHz, long maxCpuFreqKHz, long avgTimeInStateCpuFreqKHz, IntArray affectedCpuCores) { this.curCpuFreqKHz = curCpuFreqKHz; + this.maxCpuFreqKHz = maxCpuFreqKHz; this.avgTimeInStateCpuFreqKHz = avgTimeInStateCpuFreqKHz; this.affectedCpuCores = affectedCpuCores; } @@ -919,6 +918,7 @@ public final class CpuInfoReader { @Override public String toString() { return "DynamicPolicyInfo{curCpuFreqKHz = " + curCpuFreqKHz + + ", maxCpuFreqKHz = " + maxCpuFreqKHz + ", avgTimeInStateCpuFreqKHz = " + avgTimeInStateCpuFreqKHz + ", affectedCpuCores = " + affectedCpuCores + '}'; } diff --git a/services/tests/mockingservicestests/assets/CpuInfoReaderTest/valid_cpufreq_with_time_in_state_2/policy0/scaling_max_freq b/services/tests/mockingservicestests/assets/CpuInfoReaderTest/valid_cpufreq_with_time_in_state_2/policy0/scaling_max_freq index a93d6f7b2c09..d17275fcb4fc 100644 --- a/services/tests/mockingservicestests/assets/CpuInfoReaderTest/valid_cpufreq_with_time_in_state_2/policy0/scaling_max_freq +++ b/services/tests/mockingservicestests/assets/CpuInfoReaderTest/valid_cpufreq_with_time_in_state_2/policy0/scaling_max_freq @@ -1 +1 @@ -2500000 +2600000 diff --git a/services/tests/mockingservicestests/assets/CpuInfoReaderTest/valid_cpufreq_with_time_in_state_2/policy1/scaling_max_freq b/services/tests/mockingservicestests/assets/CpuInfoReaderTest/valid_cpufreq_with_time_in_state_2/policy1/scaling_max_freq index c754f1a461ab..79c41c7d3c28 100644 --- a/services/tests/mockingservicestests/assets/CpuInfoReaderTest/valid_cpufreq_with_time_in_state_2/policy1/scaling_max_freq +++ b/services/tests/mockingservicestests/assets/CpuInfoReaderTest/valid_cpufreq_with_time_in_state_2/policy1/scaling_max_freq @@ -1 +1 @@ -2800000 +2900000 diff --git a/services/tests/mockingservicestests/assets/CpuInfoReaderTest/valid_cpufreq_with_time_in_state_2/policy2/scaling_max_freq b/services/tests/mockingservicestests/assets/CpuInfoReaderTest/valid_cpufreq_with_time_in_state_2/policy2/scaling_max_freq index deebb18c2f77..526a7175060a 100644 --- a/services/tests/mockingservicestests/assets/CpuInfoReaderTest/valid_cpufreq_with_time_in_state_2/policy2/scaling_max_freq +++ b/services/tests/mockingservicestests/assets/CpuInfoReaderTest/valid_cpufreq_with_time_in_state_2/policy2/scaling_max_freq @@ -1 +1 @@ -2000000 +2100000 diff --git a/services/tests/mockingservicestests/src/com/android/server/cpu/CpuInfoReaderTest.java b/services/tests/mockingservicestests/src/com/android/server/cpu/CpuInfoReaderTest.java index 04f6f8b2e9f0..e2c2bec729ad 100644 --- a/services/tests/mockingservicestests/src/com/android/server/cpu/CpuInfoReaderTest.java +++ b/services/tests/mockingservicestests/src/com/android/server/cpu/CpuInfoReaderTest.java @@ -142,8 +142,8 @@ public final class CpuInfoReaderTest extends ExpectableTestCase { expectedCpuInfos.clear(); expectedCpuInfos.append(0, new CpuInfoReader.CpuInfo(/* cpuCore= */ 0, FLAG_CPUSET_CATEGORY_TOP_APP, /* isOnline= */ true, /* curCpuFreqKHz= */ 1_000_000, - /* maxCpuFreqKHz= */ 2_500_000, /* avgTimeInStateCpuFreqKHz= */ 419_354, - /* normalizedAvailableCpuFreqKHz= */ 2_425_919, + /* maxCpuFreqKHz= */ 2_600_000, /* avgTimeInStateCpuFreqKHz= */ 419_354, + /* normalizedAvailableCpuFreqKHz= */ 2_525_919, new CpuInfoReader.CpuUsageStats(/* userTimeMillis= */ 10_000_000, /* niceTimeMillis= */ 1_000_000, /* systemTimeMillis= */ 10_000_000, /* idleTimeMillis= */ 110_000_000, /* iowaitTimeMillis= */ 1_100_000, @@ -152,8 +152,8 @@ public final class CpuInfoReaderTest extends ExpectableTestCase { /* guestNiceTimeMillis= */ 0))); expectedCpuInfos.append(1, new CpuInfoReader.CpuInfo(/* cpuCore= */ 1, FLAG_CPUSET_CATEGORY_TOP_APP, /* isOnline= */ true, /* curCpuFreqKHz= */ 2_800_000, - /* maxCpuFreqKHz= */ 2_800_000, /* avgTimeInStateCpuFreqKHz= */ 429_032, - /* normalizedAvailableCpuFreqKHz= */ 2_403_009, + /* maxCpuFreqKHz= */ 2_900_000, /* avgTimeInStateCpuFreqKHz= */ 429_032, + /* normalizedAvailableCpuFreqKHz= */ 2_503_009, new CpuInfoReader.CpuUsageStats(/* userTimeMillis= */ 900_000, /* niceTimeMillis= */ 1_000_000, /* systemTimeMillis= */ 10_000_000, /* idleTimeMillis= */ 1_000_000, /* iowaitTimeMillis= */ 90_000, @@ -163,8 +163,8 @@ public final class CpuInfoReaderTest extends ExpectableTestCase { expectedCpuInfos.append(2, new CpuInfoReader.CpuInfo(/* cpuCore= */ 2, FLAG_CPUSET_CATEGORY_TOP_APP | FLAG_CPUSET_CATEGORY_BACKGROUND, /* isOnline= */ true, /* curCpuFreqKHz= */ 2_000_000, - /* maxCpuFreqKHz= */ 2_000_000, /* avgTimeInStateCpuFreqKHz= */ 403_225, - /* normalizedAvailableCpuFreqKHz= */ 1_688_209, + /* maxCpuFreqKHz= */ 2_100_000, /* avgTimeInStateCpuFreqKHz= */ 403_225, + /* normalizedAvailableCpuFreqKHz= */ 1_788_209, new CpuInfoReader.CpuUsageStats(/* userTimeMillis= */ 10_000_000, /* niceTimeMillis= */ 2_000_000, /* systemTimeMillis= */ 0, /* idleTimeMillis= */ 10_000_000, /* iowaitTimeMillis= */ 1_000_000, @@ -174,7 +174,7 @@ public final class CpuInfoReaderTest extends ExpectableTestCase { expectedCpuInfos.append(3, new CpuInfoReader.CpuInfo(/* cpuCore= */ 3, FLAG_CPUSET_CATEGORY_TOP_APP | FLAG_CPUSET_CATEGORY_BACKGROUND, /* isOnline= */ false, /* curCpuFreqKHz= */ MISSING_FREQUENCY, - /* maxCpuFreqKHz= */ 2_000_000, /* avgTimeInStateCpuFreqKHz= */ MISSING_FREQUENCY, + /* maxCpuFreqKHz= */ 2_100_000, /* avgTimeInStateCpuFreqKHz= */ MISSING_FREQUENCY, /* normalizedAvailableCpuFreqKHz= */ MISSING_FREQUENCY, new CpuInfoReader.CpuUsageStats(/* userTimeMillis= */ 2_000_000, /* niceTimeMillis= */ 1_000_000, /* systemTimeMillis= */ 1_000_000, |