Merge "Dynamically read scaling_max_freq for each CPU frequency policy." into udc-qpr-dev
This commit is contained in:
@@ -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 + '}';
|
||||
}
|
||||
|
||||
@@ -1 +1 @@
|
||||
2500000
|
||||
2600000
|
||||
|
||||
@@ -1 +1 @@
|
||||
2800000
|
||||
2900000
|
||||
|
||||
@@ -1 +1 @@
|
||||
2000000
|
||||
2100000
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user