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="Add" />
|
||||||
<ConfirmationsSetting value="0" id="Remove" />
|
<ConfirmationsSetting value="0" id="Remove" />
|
||||||
</component>
|
</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" />
|
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectType">
|
<component name="ProjectType">
|
||||||
|
|
|
||||||
|
|
@ -66,14 +66,6 @@
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
|
<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/rs" isTestSource="false" />
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/main/shaders" 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/res" type="java-test-resource" />
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" 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/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/jni" isTestSource="true" />
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" 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/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/assets" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
|
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/builds" />
|
<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/jni" isTestSource="false" />
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" 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/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/res" type="java-test-resource" />
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" 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/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/jni" isTestSource="true" />
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" 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/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/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/recyclerview-v7/22.0.0/jars" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-v4/22.2.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.myModel.load(productname)
|
||||||
self.results = []
|
self.results = []
|
||||||
self.deltas = []
|
self.deltas = []
|
||||||
|
self.instant_freqs = []
|
||||||
|
self.instant_utils = []
|
||||||
self.instant_power = []
|
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.total_energy = 0 # unit as defined in unit
|
||||||
self.avg_power = 0
|
self.avg_power = 0
|
||||||
|
self.avg_utils = [] # [cpu0, cpu1, ..., cpuN, cpuOverall]
|
||||||
self.total_time = 0
|
self.total_time = 0
|
||||||
|
|
||||||
self.DEBUG = isDebugging
|
self.DEBUG = isDebugging
|
||||||
|
|
@ -75,24 +80,35 @@ class EnergyAnalyzer():
|
||||||
self.logger.error("get_cpu_energy finds delta empty")
|
self.logger.error("get_cpu_energy finds delta empty")
|
||||||
self.logger.error(self.results)
|
self.logger.error(self.results)
|
||||||
return
|
return
|
||||||
|
|
||||||
self.logger.debug("get_cpu_energy started")
|
self.logger.debug("get_cpu_energy started")
|
||||||
num_of_cores = len(self.deltas[0][3])
|
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:
|
for result in self.deltas:
|
||||||
|
# allocate memory
|
||||||
freqs = [0 for i in xrange(num_of_cores)]
|
freqs = [0 for i in xrange(num_of_cores)]
|
||||||
utils = [0 for i in xrange(num_of_cores + 1)]
|
utils = [0 for i in xrange(num_of_cores + 1)]
|
||||||
for i in xrange(num_of_cores):
|
for i in xrange(num_of_cores):
|
||||||
if result[3][i][0] + result[3][i][1] > 0:
|
if result[3][i][0] + result[3][i][1] > 0:
|
||||||
utils[i] = 1.0 * \
|
utils[i] = 1.0 * \
|
||||||
result[3][i][1] / (result[3][i][0] + result[3][i][1])
|
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:
|
else:
|
||||||
utils[i] = 0
|
utils[i] = 0
|
||||||
freqs[i] = result[3][i][-1]
|
freqs[i] = result[3][i][-1]
|
||||||
# calculate total
|
# calculate total
|
||||||
if result[1] + result[2] > 0:
|
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:
|
else:
|
||||||
utils[-1] = 0
|
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)
|
# get power (only if the unit is in Watts or mWatts)
|
||||||
instant_power = self.myModel.get_cpu_energy(
|
instant_power = self.myModel.get_cpu_energy(
|
||||||
result[0], freqs, utils[:-1])
|
result[0], freqs, utils[:-1])
|
||||||
|
|
@ -104,6 +120,9 @@ class EnergyAnalyzer():
|
||||||
self.total_time += result[0]
|
self.total_time += result[0]
|
||||||
self.total_energy += energy
|
self.total_energy += energy
|
||||||
self.avg_power = self.total_energy / self.total_time
|
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(
|
self.logger.info(
|
||||||
"total energy: {0:.4f}mJ".format(self.total_energy))
|
"total energy: {0:.4f}mJ".format(self.total_energy))
|
||||||
|
|
@ -111,12 +130,16 @@ class EnergyAnalyzer():
|
||||||
"total time: {0:.4f}s".format(self.total_time))
|
"total time: {0:.4f}s".format(self.total_time))
|
||||||
self.logger.info(
|
self.logger.info(
|
||||||
"average power: {0:.4f}mW".format(self.avg_power))
|
"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")
|
self.logger.debug("get_cpu_energy ended")
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
# cpuFile = sys.argv[1]
|
# cpuFile = sys.argv[1]
|
||||||
cpuFile = "1485560673559.cpu"
|
cpuFile = "./models/test/1485560673559.cpu"
|
||||||
if not os.path.isfile(cpuFile):
|
if not os.path.isfile(cpuFile):
|
||||||
print ".....!"
|
print ".....!"
|
||||||
sys.exit(-1)
|
sys.exit(-1)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue