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)