diff --git a/OffloadingDemo/.idea/misc.xml b/OffloadingDemo/.idea/misc.xml
index 95f0f03..1caa136 100755
--- a/OffloadingDemo/.idea/misc.xml
+++ b/OffloadingDemo/.idea/misc.xml
@@ -37,7 +37,7 @@
-
+
diff --git a/OffloadingDemo/mobile/mobile.iml b/OffloadingDemo/mobile/mobile.iml
index f15575d..ae10d2d 100755
--- a/OffloadingDemo/mobile/mobile.iml
+++ b/OffloadingDemo/mobile/mobile.iml
@@ -66,14 +66,6 @@
-
-
-
-
-
-
-
-
@@ -82,6 +74,14 @@
+
+
+
+
+
+
+
+
diff --git a/OffloadingDemo/wear/wear.iml b/OffloadingDemo/wear/wear.iml
index 57a96cb..23b52f0 100755
--- a/OffloadingDemo/wear/wear.iml
+++ b/OffloadingDemo/wear/wear.iml
@@ -66,14 +66,6 @@
-
-
-
-
-
-
-
-
@@ -82,6 +74,14 @@
+
+
+
+
+
+
+
+
diff --git a/energy_model/analyze.py b/energy_model/analyze.py
index 55f7135..9cef758 100644
--- a/energy_model/analyze.py
+++ b/energy_model/analyze.py
@@ -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)