add instant freq & util, average util, and total idle & used for cpu energy
This commit is contained in:
parent
7779251e5a
commit
ddb6e215b2
|
|
@ -37,7 +37,7 @@
|
|||
<ConfirmationsSetting value="0" id="Add" />
|
||||
<ConfirmationsSetting value="0" id="Remove" />
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||
</component>
|
||||
<component name="ProjectType">
|
||||
|
|
|
|||
|
|
@ -66,14 +66,6 @@
|
|||
<sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
|
||||
|
|
@ -82,6 +74,14 @@
|
|||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/builds" />
|
||||
|
|
|
|||
|
|
@ -66,14 +66,6 @@
|
|||
<sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
|
||||
|
|
@ -82,6 +74,14 @@
|
|||
<sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/recyclerview-v7/22.0.0/jars" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-v4/22.2.0/jars" />
|
||||
|
|
|
|||
|
|
@ -17,9 +17,14 @@ class EnergyAnalyzer():
|
|||
self.myModel.load(productname)
|
||||
self.results = []
|
||||
self.deltas = []
|
||||
self.instant_freqs = []
|
||||
self.instant_utils = []
|
||||
self.instant_power = []
|
||||
self.total_idle = [] # [cpu0, cpu1, ..., cpuN, cpuOverall]
|
||||
self.total_used = [] # [cpu0, cpu1, ..., cpuN, cpuOverall]
|
||||
self.total_energy = 0 # unit as defined in unit
|
||||
self.avg_power = 0
|
||||
self.avg_utils = [] # [cpu0, cpu1, ..., cpuN, cpuOverall]
|
||||
self.total_time = 0
|
||||
|
||||
self.DEBUG = isDebugging
|
||||
|
|
@ -75,24 +80,35 @@ class EnergyAnalyzer():
|
|||
self.logger.error("get_cpu_energy finds delta empty")
|
||||
self.logger.error(self.results)
|
||||
return
|
||||
|
||||
self.logger.debug("get_cpu_energy started")
|
||||
num_of_cores = len(self.deltas[0][3])
|
||||
# allocate memory
|
||||
self.total_idle = [0 for i in xrange(num_of_cores + 1)]
|
||||
self.total_used = [0 for i in xrange(num_of_cores + 1)]
|
||||
self.avg_utils = [0 for i in xrange(num_of_cores + 1)]
|
||||
for result in self.deltas:
|
||||
# allocate memory
|
||||
freqs = [0 for i in xrange(num_of_cores)]
|
||||
utils = [0 for i in xrange(num_of_cores + 1)]
|
||||
for i in xrange(num_of_cores):
|
||||
if result[3][i][0] + result[3][i][1] > 0:
|
||||
utils[i] = 1.0 * \
|
||||
result[3][i][1] / (result[3][i][0] + result[3][i][1])
|
||||
self.total_idle[i] += result[3][i][0]
|
||||
self.total_used[i] += result[3][i][1]
|
||||
else:
|
||||
utils[i] = 0
|
||||
freqs[i] = result[3][i][-1]
|
||||
# calculate total
|
||||
if result[1] + result[2] > 0:
|
||||
utils[-1] = 1.0 * result[1] / (result[1] + result[2])
|
||||
utils[-1] = 1.0 * result[2] / (result[1] + result[2])
|
||||
self.total_idle[-1] += result[1]
|
||||
self.total_used[-1] += result[2]
|
||||
else:
|
||||
utils[-1] = 0
|
||||
# store the results
|
||||
self.instant_freqs.append(freqs)
|
||||
self.instant_utils.append(utils)
|
||||
# get power (only if the unit is in Watts or mWatts)
|
||||
instant_power = self.myModel.get_cpu_energy(
|
||||
result[0], freqs, utils[:-1])
|
||||
|
|
@ -104,6 +120,9 @@ class EnergyAnalyzer():
|
|||
self.total_time += result[0]
|
||||
self.total_energy += energy
|
||||
self.avg_power = self.total_energy / self.total_time
|
||||
for i in xrange(num_of_cores + 1):
|
||||
self.avg_utils[i] = 1.0 * \
|
||||
self.total_used[i] / (self.total_used[i] + self.total_idle[i])
|
||||
|
||||
self.logger.info(
|
||||
"total energy: {0:.4f}mJ".format(self.total_energy))
|
||||
|
|
@ -111,12 +130,16 @@ class EnergyAnalyzer():
|
|||
"total time: {0:.4f}s".format(self.total_time))
|
||||
self.logger.info(
|
||||
"average power: {0:.4f}mW".format(self.avg_power))
|
||||
self.logger.info(
|
||||
"average util: {0}".format(
|
||||
",".join(
|
||||
["{0:.2f}%".format(x * 100) for x in self.avg_utils])))
|
||||
self.logger.debug("get_cpu_energy ended")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
# cpuFile = sys.argv[1]
|
||||
cpuFile = "1485560673559.cpu"
|
||||
cpuFile = "./models/test/1485560673559.cpu"
|
||||
if not os.path.isfile(cpuFile):
|
||||
print ".....!"
|
||||
sys.exit(-1)
|
||||
|
|
|
|||
Loading…
Reference in New Issue