diff options
Diffstat (limited to 'src/test/power/PowerMeasure.py')
-rw-r--r-- | src/test/power/PowerMeasure.py | 171 |
1 files changed, 0 insertions, 171 deletions
diff --git a/src/test/power/PowerMeasure.py b/src/test/power/PowerMeasure.py deleted file mode 100644 index 3a8f3977052..00000000000 --- a/src/test/power/PowerMeasure.py +++ /dev/null @@ -1,171 +0,0 @@ -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -# !/usr/bin/env python - -# ---------Power measurement ------------------------------# -# This script will run the servo with the given benchmark and -# get the power usage using Powermetrics. Results will be put -# in sperate files with that name. -# Do not forget to run the script in servo/src/test/power folder -# --------------------------------------------------------# - -import os -import time -import argparse - -# ------------------------PowerCollector----------------------------# -# Collecting all the power data and put them into files - - -def PowerCollector(OutputDir, Benchmarks, LayoutThreads, Renderer): - print " Running the power collector" - os.mkdir(os.path.join(OutputDir+"power"), 0777) - os.mkdir(os.path.join(OutputDir+"time"), 0777) - os.mkdir(os.path.join(OutputDir+"Addtional"), 0777) - SleepTime = 20 - GuardTime = 0.5 - powerTiming = 1 - ExperimentNum = 21 - for ExpNum in range(1, ExperimentNum): - for layoutT in range(1, LayoutThreads+1): - PowerFiles = OutputDir + 'power/' + 'power-Layout' + \ - str(layoutT) + "-set" + str(ExpNum) + ".csv" - TimeFiles = OutputDir + 'time/' + "time-Layout" + \ - str(layoutT) + "-set" + str(ExpNum) + ".csv" - # ServoCmd ="(time ./servo -x -y " + str(layoutT) \ - # +" "+ Renderer + " " + Benchmarks + " ) 2> " + TimeFiles - ServoCmd = "(time ../../../build/servo -x -y " + \ - str(layoutT) + " " + Renderer + " " + \ - Benchmarks + " ) 2> " + TimeFiles - Metrics = OutputDir + 'Addtional/' + "metrics-Layout" + \ - str(layoutT) + "-set" + str(ExpNum) + "-css.csv" - cmd = '(sudo powermetrics -i ' + str(powerTiming) + \ - ' | grep \"energy\\|elapsed\\|servo\" > ' + \ - PowerFiles + '& ) 2> ' + Metrics - time.sleep(SleepTime) - os.system(cmd) - time.sleep(GuardTime) - os.system(ServoCmd) - time.sleep(GuardTime) - os.system('sudo pkill -9 powermetrics') - time.sleep(SleepTime) - -# -------------------PowerParser ---------------------------------# -# Parsing collected power by PowerCollector fucntion - - -def PowerParser(OutputDir, LayoutThreads): - print "Running the PowerParser" - ExperimentNum = 21 - ResultTable = OutputDir + "ResultTable.csv" - ResultFile = open(ResultTable, "w") - ResultFile.write("LayoutThreads, MeanPower, MeanTime , MaxTime, " - "MinTime , MaxPower , MinPower \n") - - for layoutT in range(1, LayoutThreads+1): - MaxTime = 0 - MinTime = 1000000 - MaxPower = 0 - MinPower = 1000000 - TotalPower = 0 - TotalTime = 0 - for ExpNum in range(1, ExperimentNum): - Files = OutputDir + 'power/' + 'power-Layout' + str(layoutT) + \ - "-set" + str(ExpNum) + ".csv" - NewFile = OutputDir + 'power/Servo-L' + str(layoutT) + \ - "set" + str(ExpNum) + ".csv" - File = open(Files, 'r') - PowerFile = open(NewFile, 'w') - TimeFiles = OutputDir + 'time/' + "time-Layout" + \ - str(layoutT) + "-set" + str(ExpNum) + ".csv" - # ----Putting the power the power and its time into a table---- # - - for line in File: - words = line.split() - if words[0] == "***": - insertingWord = words[10][1:-2] + " " - elif words[0] == "Intel": - insertingWord += words[7][:-1] - insertingWord += "\n" - PowerFile.write(insertingWord) - File.close() - PowerFile.close() - - # ---------------geting the total power of experiments-------- # - - TempFile = open(NewFile, 'r') - Power = 0 - for line in TempFile: - words2 = line.split() - Power += float(words2[0]) * float(words2[1]) - TotalPower = float(Power / 1000.0) - if TotalPower > MaxPower: - MaxPower = TotalPower - if TotalPower < MinPower: - MinPower = TotalPower - - # -------------getting the total time of execution---------- # - - TempFile2 = open(TimeFiles, "r") - for line in TempFile2: - words3 = line.split() - if line != "\n" and words3[0] == "real": - TotalTime = (float(words3[1][0]) * 60) + \ - float(words3[1][2:-1]) - if TotalTime > MaxTime: - MaxTime = TotalTime - if TotalTime < MinTime: - MinTime = TotalTime - - TotalPower = TotalPower / float(ExperimentNum-1) - TotalTime = TotalTime / float(ExperimentNum-1) - ResultFile.write(str(layoutT) + " , " + str(TotalPower) + " , " + - str(TotalTime) + " , " + str(MaxTime) + " , " + - str(MinTime) + " , " + str(MaxPower) + " , " + - str(MinPower) + "\n") - ResultFile.close() - Opener = ResultFile = open(ResultTable, "r") - for line in Opener: - print line - - print "Also you can find all the numbers for Power " \ - "and Performance in : ", ResultTable - - -# ----------------------------------------------------# -def main(): - LayoutThreads = 8 # Maximum number of threads considered for Layout - Benchmarks = "../../test/html/perf-rainbow.html" - OutputDir = "Experiments/" - os.mkdir(os.path.join(OutputDir), 0777) - Renderer = " " - - # Parsing the input of the script - parser = argparse.ArgumentParser(description="Mesuring \ - power and performance of your servo runs") - parser.add_argument("-b", "--benchmark", help="Gets the \ - benchmark, for example \"-B perf-rainbow.html\"") - parser.add_argument("-c", "--CPU", help="Rendering with \ - CPU instead of GPU, for example -C") - parser.add_argument("-l", "--LayoutThreads", help="Specifyes \ - the maximum number of threads for layout, for example \" -L 5\"") - parser.add_argument("-o", "--Output", help=" Specifyes \ - the output directory") - - args = parser.parse_args() - if args.benchmark: - Benchmarks = args.benchmark - if args.CPU: - Renderer = "-c" - if args.LayoutThreads: - LayoutThreads = int(args.LayoutThreads) - if args.Output: - OutputDir = args.Output - - PowerCollector(OutputDir, Benchmarks, LayoutThreads, Renderer) - PowerParser(OutputDir, LayoutThreads) - -if __name__ == "__main__": - main() |