aboutsummaryrefslogtreecommitdiffstats
path: root/tests/power/PowerMeasure.py
diff options
context:
space:
mode:
authorJack Moffitt <jack@metajack.im>2014-09-14 21:02:37 -0600
committerMs2ger <ms2ger@gmail.com>2014-12-12 22:49:02 +0100
commitca156942bcdd12522d027dae5b06027e27d3eac8 (patch)
treef7df5703a3c8592bbb5212b664a317226c9d6a1e /tests/power/PowerMeasure.py
parent9e83f096a5b61beb7a26c222b1f6d7780b1335b0 (diff)
downloadservo-ca156942bcdd12522d027dae5b06027e27d3eac8.tar.gz
servo-ca156942bcdd12522d027dae5b06027e27d3eac8.zip
Update PowerMeasure.py post-cargoify
Diffstat (limited to 'tests/power/PowerMeasure.py')
-rwxr-xr-x[-rw-r--r--]tests/power/PowerMeasure.py85
1 files changed, 47 insertions, 38 deletions
diff --git a/tests/power/PowerMeasure.py b/tests/power/PowerMeasure.py
index 362e4e06143..e80447fd1e6 100644..100755
--- a/tests/power/PowerMeasure.py
+++ b/tests/power/PowerMeasure.py
@@ -1,17 +1,21 @@
+#!/usr/bin/env python
+
# 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
+# Do not forget to run the script in servo/tests/power folder
# --------------------------------------------------------#
+from __future__ import print_function, unicode_literals
+
import os
+from os import path
import time
import argparse
@@ -19,31 +23,34 @@ import argparse
# Collecting all the power data and put them into files
+TOP_DIR = path.join("..", "..")
+
+
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)
+ print("Running the power collector")
+ power_dir = path.join(OutputDir, "power")
+ time_dir = path.join(OutputDir, "time")
+ etc_dir = path.join(OutputDir, "etc")
+ for d in [power_dir, time_dir, etc_dir]:
+ os.mkdir(d)
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
+ print(" layoutT=%d ExpNum=%d" % (layoutT, ExpNum))
+ PowerFiles = path.join(
+ power_dir, "power-Layout%d-set%d.csv" % (layoutT, ExpNum))
+ TimeFiles = path.join(
+ time_dir, "time-Layout%d-set%d.csv" % (layoutT, ExpNum))
+ ServoCmd = "(time ../../components/servo/target/release/servo -x -y %d %s %s) 2> %s" % \
+ (layoutT, Renderer, Benchmarks, TimeFiles)
+ Metrics = path.join(
+ etc_dir, "metrics-Layout%d-set%d-css.csv" % (layoutT, ExpNum))
+ cmd = "(sudo powermetrics -i %d | " \
+ "grep \"energy\\|elapsed\\|servo\" > %s &_) 2> %s" % \
+ (powerTiming, PowerFiles, Metrics)
time.sleep(SleepTime)
os.system(cmd)
time.sleep(GuardTime)
@@ -57,7 +64,7 @@ def PowerCollector(OutputDir, Benchmarks, LayoutThreads, Renderer):
def PowerParser(OutputDir, LayoutThreads):
- print "Running the PowerParser"
+ print("Running the PowerParser")
ExperimentNum = 21
ResultTable = OutputDir + "ResultTable.csv"
ResultFile = open(ResultTable, "w")
@@ -74,14 +81,16 @@ def PowerParser(OutputDir, LayoutThreads):
TimeGen = 0
PowerGen = 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"
+ print(" layoutT=%d ExpNum=%d" % (layoutT, ExpNum))
+ Files = path.join(
+ OutputDir, "power", "power-Layout%d-set%d.csv" %
+ (layoutT, ExpNum))
+ NewFile = path.join(OutputDir, "power", "Servo-Layout%d-set%d.csv" %
+ (layoutT, ExpNum))
File = open(Files, 'r')
PowerFile = open(NewFile, 'w')
- TimeFiles = OutputDir + 'time/' + "time-Layout" + \
- str(layoutT) + "-set" + str(ExpNum) + ".csv"
+ TimeFiles = path.join(OutputDir, "time", "time-Layout%d-set%d.csv" %
+ (layoutT, ExpNum))
# ----Putting the power the power and its time into a table---- #
for line in File:
@@ -132,30 +141,30 @@ def PowerParser(OutputDir, LayoutThreads):
ResultFile.close()
Opener = ResultFile = open(ResultTable, "r")
for line in Opener:
- print line
+ print(line)
- print "Also you can find all the numbers for Power " \
- "and Performance in : ", ResultTable
+ 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 = "../../tests/html/perf-rainbow.html"
- OutputDir = "Experiments/"
- os.mkdir(os.path.join(OutputDir), 0777)
- Renderer = " "
+ Benchmarks = path.join(TOP_DIR, "tests", "html", "perf-rainbow.html")
+ OutputDir = "Experiments"
+ os.mkdir(OutputDir)
+ Renderer = ""
# Parsing the input of the script
- parser = argparse.ArgumentParser(description="Mesuring \
- power and performance of your servo runs")
+ parser = argparse.ArgumentParser(description="Measuring \
+ 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 \
+ parser.add_argument("-l", "--LayoutThreads", help="Specify \
the maximum number of threads for layout, for example \" -L 5\"")
- parser.add_argument("-o", "--Output", help=" Specifyes \
+ parser.add_argument("-o", "--Output", help="Specify \
the output directory")
args = parser.parse_args()