aboutsummaryrefslogtreecommitdiffstats
path: root/src/test/power/PowerMeasure.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/power/PowerMeasure.py')
-rw-r--r--src/test/power/PowerMeasure.py171
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()